diff --git a/src/main/java/eu/crushedpixel/replaymod/holders/SpectatorData.java b/src/main/java/eu/crushedpixel/replaymod/holders/SpectatorData.java index e2ab02d1..ec61b381 100755 --- a/src/main/java/eu/crushedpixel/replaymod/holders/SpectatorData.java +++ b/src/main/java/eu/crushedpixel/replaymod/holders/SpectatorData.java @@ -14,7 +14,7 @@ import net.minecraft.entity.Entity; @EqualsAndHashCode(callSuper=true) public class SpectatorData extends AdvancedPosition { - private int spectatedEntityID; + private Integer spectatedEntityID; public SpectatorData(double x, double y, double z, double pitch, double yaw, double roll, int entityID) { super(x, y, z, pitch, yaw, roll); @@ -30,6 +30,15 @@ public class SpectatorData extends AdvancedPosition { this.spectatedEntityID = e.getEntityId(); } + /** + * @return itself if it's a valid SpectatorData object, + * otherwise a new AdvancedPosition object containing the same position data + */ + public AdvancedPosition normalize() { + if(spectatedEntityID != null) return this; + return new AdvancedPosition(x, y, z, pitch, yaw, roll); + } + @Override public SpectatorData newInstance() { return new SpectatorData(); diff --git a/src/main/java/eu/crushedpixel/replaymod/utils/LegacyKeyframeSetAdapter.java b/src/main/java/eu/crushedpixel/replaymod/utils/LegacyKeyframeSetAdapter.java index 216f9d42..0b2956ca 100644 --- a/src/main/java/eu/crushedpixel/replaymod/utils/LegacyKeyframeSetAdapter.java +++ b/src/main/java/eu/crushedpixel/replaymod/utils/LegacyKeyframeSetAdapter.java @@ -5,10 +5,7 @@ import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import eu.crushedpixel.replaymod.assets.CustomImageObject; -import eu.crushedpixel.replaymod.holders.AdvancedPosition; -import eu.crushedpixel.replaymod.holders.Keyframe; -import eu.crushedpixel.replaymod.holders.KeyframeSet; -import eu.crushedpixel.replaymod.holders.TimestampValue; +import eu.crushedpixel.replaymod.holders.*; import java.io.IOException; import java.util.ArrayList; @@ -47,8 +44,8 @@ public class LegacyKeyframeSetAdapter extends TypeAdapter { while(in.hasNext()) { String jsonKeyframeTag = in.nextName(); if("value".equals(jsonKeyframeTag) || "position".equals(jsonKeyframeTag)) { - AdvancedPosition position = new Gson().fromJson(in, AdvancedPosition.class); - newKeyframe.setValue(position); + SpectatorData spectatorData = new Gson().fromJson(in, SpectatorData.class); + newKeyframe.setValue(spectatorData.normalize()); } else if("realTimestamp".equals(jsonKeyframeTag)) { newKeyframe.setRealTimestamp(in.nextInt()); } else if("spectatedEntityID".equals(jsonKeyframeTag)) {