diff options
Diffstat (limited to 'mod/src/main/java/moe/ymc/acron/common')
-rw-r--r-- | mod/src/main/java/moe/ymc/acron/common/Vec2f.java | 25 | ||||
-rw-r--r-- | mod/src/main/java/moe/ymc/acron/common/Vec3d.java | 34 | ||||
-rw-r--r-- | mod/src/main/java/moe/ymc/acron/common/WorldKey.java | 35 |
3 files changed, 94 insertions, 0 deletions
diff --git a/mod/src/main/java/moe/ymc/acron/common/Vec2f.java b/mod/src/main/java/moe/ymc/acron/common/Vec2f.java new file mode 100644 index 0000000..5ab3dfd --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/common/Vec2f.java @@ -0,0 +1,25 @@ +package moe.ymc.acron.common; + +import com.google.gson.*; +import com.google.gson.annotations.SerializedName; + +import java.lang.reflect.Type; + +public record Vec2f(@SerializedName("x") float x, + @SerializedName("y") float y) { + public static class Vec2fDeserializer implements JsonDeserializer<Vec2f> { + @Override + public Vec2f deserialize(JsonElement json, + Type typeOfT, + JsonDeserializationContext context) throws JsonParseException { + final JsonObject object = json.getAsJsonObject(); + final float x = object.has("x") ? + object.get("x").getAsFloat() : + 0.0f; + final float y = object.has("y") ? + object.get("y").getAsFloat() : + 0.0f; + return new Vec2f(x, y); + } + } +}
\ No newline at end of file diff --git a/mod/src/main/java/moe/ymc/acron/common/Vec3d.java b/mod/src/main/java/moe/ymc/acron/common/Vec3d.java new file mode 100644 index 0000000..593019f --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/common/Vec3d.java @@ -0,0 +1,34 @@ +package moe.ymc.acron.common; + +import com.google.gson.*; +import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.Type; + +public record Vec3d(@SerializedName("x") double x, + @SerializedName("y") double y, + @SerializedName("z") double z) { + public Vec3d(@NotNull net.minecraft.util.math.Vec3d vec3d) { + this(vec3d.x, vec3d.y, vec3d.z); + } + + public static class Vec3dDeserializer implements JsonDeserializer<Vec3d> { + @Override + public Vec3d deserialize(JsonElement json, + Type typeOfT, + JsonDeserializationContext context) throws JsonParseException { + final JsonObject object = json.getAsJsonObject(); + final double x = object.has("x") ? + object.get("x").getAsDouble() : + 0.0; + final double y = object.has("y") ? + object.get("y").getAsDouble() : + 0.0; + final double z = object.has("z") ? + object.get("z").getAsDouble() : + 0.0; + return new Vec3d(x, y, z); + } + } +}
\ No newline at end of file diff --git a/mod/src/main/java/moe/ymc/acron/common/WorldKey.java b/mod/src/main/java/moe/ymc/acron/common/WorldKey.java new file mode 100644 index 0000000..fa10d54 --- /dev/null +++ b/mod/src/main/java/moe/ymc/acron/common/WorldKey.java @@ -0,0 +1,35 @@ +package moe.ymc.acron.common; + +import com.google.gson.annotations.SerializedName; +import net.minecraft.util.Identifier; +import net.minecraft.world.dimension.DimensionType; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public enum WorldKey { + @SerializedName("overworld") + OVERWORLD, + @SerializedName("nether") + NETHER, + @SerializedName("end") + END; + + private static final Logger LOGGER = LogManager.getLogger(); + + public static @Nullable WorldKey create(@NotNull Identifier identifier) { + if (identifier.equals(DimensionType.OVERWORLD_ID)) { + return OVERWORLD; + } else if (identifier.equals(DimensionType.THE_NETHER_ID)) { + return NETHER; + } else if (identifier.equals(DimensionType.THE_END_ID)) { + return END; + } else { + LOGGER.warn("Unknown world {}:{}. Returning NULL to the client.", + identifier.getNamespace(), + identifier.getPath()); + return null; + } + } +}
\ No newline at end of file |