From 0451aa76151d7409e83a5f1cbb2c1a8600c26457 Mon Sep 17 00:00:00 2001 From: SamB440 Date: Sat, 9 Oct 2021 18:15:36 +0100 Subject: [PATCH] Only apply pitch and yaw to locations if needed --- .../rpgregions/gson/LocationAdapter.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/gson/LocationAdapter.java b/rpgregions/src/main/java/net/islandearth/rpgregions/gson/LocationAdapter.java index f4c69f5..762d86e 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/gson/LocationAdapter.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/gson/LocationAdapter.java @@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.google.gson.reflect.TypeToken; @@ -22,12 +23,18 @@ public class LocationAdapter implements JsonSerializer, JsonDeserializ } @Override - public Location deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) { - return Location.deserialize(gson.fromJson(jsonElement, new TypeToken>(){}.getType())); + public Location deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context) throws JsonParseException { + Map deserialised = gson.fromJson(jsonElement, new TypeToken>(){}.getType()); + if (!deserialised.containsKey("pitch")) deserialised.put("pitch", 0.0f); + if (!deserialised.containsKey("yaw")) deserialised.put("yaw", 0.0f); + return Location.deserialize(deserialised); } @Override public JsonElement serialize(Location location, Type type, JsonSerializationContext context) { - return gson.toJsonTree(location.serialize()); + Map serialised = location.serialize(); + if (Float.compare(location.getPitch(), 0.0f) == 0) serialised.remove("pitch"); + if (Float.compare(location.getYaw(), 0.0f) == 0) serialised.remove("yaw"); + return gson.toJsonTree(serialised); } }