diff --git a/src/main/java/de/bluecolored/bluemap/api/gson/MarkerGson.java b/src/main/java/de/bluecolored/bluemap/api/gson/MarkerGson.java index 8a138eb..de973a9 100644 --- a/src/main/java/de/bluecolored/bluemap/api/gson/MarkerGson.java +++ b/src/main/java/de/bluecolored/bluemap/api/gson/MarkerGson.java @@ -235,8 +235,8 @@ public void write(JsonWriter out, Vector2d value) throws IOException { } out.beginObject(); - out.name("x"); out.value(value.getX()); - out.name(useZ ? "z" : "y"); out.value(value.getY()); + out.name("x"); writeRounded(out, value.getX()); + out.name(useZ ? "z" : "y"); writeRounded(out, value.getY()); out.endObject(); } @@ -262,6 +262,13 @@ public Vector2d read(JsonReader in) throws IOException { return new Vector2d(x, y); } + private void writeRounded(JsonWriter json, double value) throws IOException { + // rounding and remove ".0" to save string space + double d = Math.round(value * 10000d) / 10000d; + if (d == (long) d) json.value((long) d); + else json.value(d); + } + } static class Vector3dAdapter extends TypeAdapter { @@ -274,9 +281,9 @@ public void write(JsonWriter out, Vector3d value) throws IOException { } out.beginObject(); - out.name("x"); out.value(value.getX()); - out.name("y"); out.value(value.getY()); - out.name("z"); out.value(value.getZ()); + out.name("x"); writeRounded(out, value.getX()); + out.name("y"); writeRounded(out, value.getY()); + out.name("z"); writeRounded(out, value.getZ()); out.endObject(); } @@ -302,6 +309,13 @@ public Vector3d read(JsonReader in) throws IOException { return new Vector3d(x, y, z); } + private void writeRounded(JsonWriter json, double value) throws IOException { + // rounding and remove ".0" to save string space + double d = Math.round(value * 10000d) / 10000d; + if (d == (long) d) json.value((long) d); + else json.value(d); + } + } static class Vector2iAdapter extends TypeAdapter {