diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index 2bcb9d9fba..32c0191b48 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -145,9 +145,7 @@ public class Logic implements ApplicationListener{ Events.on(BlockDestroyEvent.class, e -> { if(e.tile.build instanceof CoreBuild core && core.team.isAI() && state.rules.coreDestroyClear){ - Core.app.post(() -> { - core.team.data().timeDestroy(core.x, core.y, state.rules.enemyCoreBuildRadius); - }); + Core.app.post(() -> core.team.data().timeDestroy(core.x, core.y, state.rules.enemyCoreBuildRadius)); } }); diff --git a/core/src/mindustry/entities/Damage.java b/core/src/mindustry/entities/Damage.java index d75098db20..62b110dce8 100644 --- a/core/src/mindustry/entities/Damage.java +++ b/core/src/mindustry/entities/Damage.java @@ -178,6 +178,8 @@ public class Damage{ } public static float findPierceLength(Bullet b, int pierceCap, boolean laser, float length){ + if(pierceCap <= 0) return length; + vec.trnsExact(b.rotation(), length); rect.setPosition(b.x, b.y).setSize(vec.x, vec.y).normalize().grow(3f); @@ -215,7 +217,7 @@ public class Damage{ //return either the length when not enough things were pierced, //or the last pierced object if there were enough blockages - return Math.min(distances.size < pierceCap || pierceCap < 0 ? length : Math.max(6f, distances.get(pierceCap - 1)), maxDst); + return Math.min(distances.size < pierceCap ? length : Math.max(6f, distances.get(pierceCap - 1)), maxDst); } /** Collides a bullet with blocks in a laser, taking into account absorption blocks. Resulting length is stored in the bullet's fdata. */ diff --git a/core/src/mindustry/mod/DataPatcher.java b/core/src/mindustry/mod/DataPatcher.java index cd3e767e39..302eaa320b 100644 --- a/core/src/mindustry/mod/DataPatcher.java +++ b/core/src/mindustry/mod/DataPatcher.java @@ -5,6 +5,7 @@ import arc.struct.*; import arc.util.*; import arc.util.serialization.Json.*; import arc.util.serialization.*; +import arc.util.serialization.JsonWriter.*; import arc.util.serialization.Jval.*; import mindustry.*; import mindustry.core.*; @@ -553,14 +554,14 @@ public class DataPatcher{ static Object copyArray(Object object){ if(object instanceof int[] i) return i.clone(); - if(object instanceof long[] i) return i.clone(); - if(object instanceof short[] i) return i.clone(); - if(object instanceof byte[] i) return i.clone(); - if(object instanceof boolean[] i) return i.clone(); - if(object instanceof char[] i) return i.clone(); - if(object instanceof float[] i) return i.clone(); - if(object instanceof double[] i) return i.clone(); - return ((Object[])object).clone(); + else if(object instanceof long[] i) return i.clone(); + else if(object instanceof short[] i) return i.clone(); + else if(object instanceof byte[] i) return i.clone(); + else if(object instanceof boolean[] i) return i.clone(); + else if(object instanceof char[] i) return i.clone(); + else if(object instanceof float[] i) return i.clone(); + else if(object instanceof double[] i) return i.clone(); + else return ((Object[])object).clone(); } public static class PatchSet{ @@ -574,6 +575,12 @@ public class DataPatcher{ this.patch = patch; this.json = json; } + + @Override + public String toString(){ + //the json can be a single 'error' value if it failed to parse + return !json.isObject() ? patch : json.prettyPrint(OutputType.minimal, 2); + } } private static class FieldData{