diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index 190922d143..ea4833a5d8 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -328,14 +328,14 @@ public class EntityProcess extends BaseProcessor{ //SPECIAL CASE: I/O code //note that serialization is generated even for non-serializing entities for manual usage if((first.name().equals("read") || first.name().equals("write")) && ann.genio()){ + Array fields = Array.with(builder.fieldSpecs).select(spec -> !spec.hasModifier(Modifier.TRANSIENT) && !spec.hasModifier(Modifier.STATIC) && !spec.hasModifier(Modifier.FINAL)); + fields.sortComparing(f -> f.name); //sort to keep order EntityIO writer = new EntityIO(mbuilder, first.name().equals("write")); //subclasses *have* to call this method mbuilder.addAnnotation(CallSuper.class); //write or read each non-transient field - for(FieldSpec spec : builder.fieldSpecs){ - if(!spec.hasModifier(Modifier.TRANSIENT) && !spec.hasModifier(Modifier.STATIC) && !spec.hasModifier(Modifier.FINAL)){ - writer.io(spec.type, "this." + spec.name); - } + for(FieldSpec spec : fields){ + writer.io(spec.type, "this." + spec.name); } } diff --git a/core/src/mindustry/entities/def/HitboxComp.java b/core/src/mindustry/entities/def/HitboxComp.java index ab0d105d70..cd0a6659b6 100644 --- a/core/src/mindustry/entities/def/HitboxComp.java +++ b/core/src/mindustry/entities/def/HitboxComp.java @@ -18,8 +18,12 @@ abstract class HitboxComp implements Posc, QuadTreeObject{ @Override public void add(){ - lastX = x; - lastY = y; + updateLastPosition(); + } + + @Override + public void afterRead(){ + updateLastPosition(); } void updateLastPosition(){ diff --git a/core/src/mindustry/entities/def/PlayerComp.java b/core/src/mindustry/entities/def/PlayerComp.java index b9d69c99ca..3fc7f9e384 100644 --- a/core/src/mindustry/entities/def/PlayerComp.java +++ b/core/src/mindustry/entities/def/PlayerComp.java @@ -20,7 +20,7 @@ import mindustry.ui.*; import static mindustry.Vars.*; -@EntityDef({Playerc.class}) +@EntityDef(value = {Playerc.class}, serialize = false) @Component abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc{ @NonNull @ReadOnly Unitc unit = Nulls.unit; diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index eed215ec1a..e6e1e3afab 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -247,7 +247,6 @@ public abstract class SaveVersion extends SaveFileReader{ } } - int amount = stream.readInt(); for(int j = 0; j < amount; j++){ readChunk(stream, true, in -> { diff --git a/gradle.properties b/gradle.properties index 3c2c6f7a16..7f41c54766 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=9a946c98476bfbae80840608862e934f4c66b6cd +archash=899ab293f6f7bab4deadec06fac7a666028edf15