aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2022-07-14 11:42:26 -0700
committerTrumeet <yuuta@yuuta.moe>2022-07-14 11:42:26 -0700
commitaaff4fc71027968f22100d216ff22edc42a96629 (patch)
treebf014d729fd90a17ffa605987afa2885ce834b96
parent0b84e739a027ea7e5cc5bd728625839928f95283 (diff)
downloadacron-aaff4fc71027968f22100d216ff22edc42a96629.tar
acron-aaff4fc71027968f22100d216ff22edc42a96629.tar.gz
acron-aaff4fc71027968f22100d216ff22edc42a96629.tar.bz2
acron-aaff4fc71027968f22100d216ff22edc42a96629.zip
Refactor: Use GSON to deserialize enum WorldKey
Signed-off-by: Trumeet <yuuta@yuuta.moe>
-rw-r--r--src/main/java/moe/ymc/acron/c2s/ReqSetConfig.java13
-rw-r--r--src/main/java/moe/ymc/acron/common/WorldKey.java5
2 files changed, 15 insertions, 3 deletions
diff --git a/src/main/java/moe/ymc/acron/c2s/ReqSetConfig.java b/src/main/java/moe/ymc/acron/c2s/ReqSetConfig.java
index 8959403..fcddf35 100644
--- a/src/main/java/moe/ymc/acron/c2s/ReqSetConfig.java
+++ b/src/main/java/moe/ymc/acron/c2s/ReqSetConfig.java
@@ -33,9 +33,16 @@ public record ReqSetConfig(@SerializedName("id") int id,
final int id = object.has("id") ?
object.get("id").getAsInt() :
-1;
- final WorldKey world = object.has("world") ?
- WorldKey.valueOf(object.get("world").getAsString().toUpperCase()) :
- null;
+ final WorldKey world;
+ if (object.has("world")) {
+ world = context.deserialize(object.get("world"), WorldKey.class);
+ // https://stackoverflow.com/a/49574019
+ if (world == null) {
+ throw new JsonParseException("Invalid world");
+ }
+ } else {
+ world = null;
+ }
final Vec3d pos = object.has("pos") ?
context.deserialize(object.get("pos"), Vec3d.class) :
null;
diff --git a/src/main/java/moe/ymc/acron/common/WorldKey.java b/src/main/java/moe/ymc/acron/common/WorldKey.java
index 8d47737..9e4212d 100644
--- a/src/main/java/moe/ymc/acron/common/WorldKey.java
+++ b/src/main/java/moe/ymc/acron/common/WorldKey.java
@@ -1,7 +1,12 @@
package moe.ymc.acron.common;
+import com.google.gson.annotations.SerializedName;
+
public enum WorldKey {
+ @SerializedName("overworld")
OVERWORLD,
+ @SerializedName("nether")
NETHER,
+ @SerializedName("end")
END
} \ No newline at end of file