diff --git a/core/assets/maps/serpulo/hidden/0.msav b/core/assets/maps/serpulo/hidden/0.msav index 4437244046..3c2dd1c644 100644 Binary files a/core/assets/maps/serpulo/hidden/0.msav and b/core/assets/maps/serpulo/hidden/0.msav differ diff --git a/core/src/mindustry/maps/SectorSubmissions.java b/core/src/mindustry/maps/SectorSubmissions.java index 12191a81e1..ce39d64ab5 100644 --- a/core/src/mindustry/maps/SectorSubmissions.java +++ b/core/src/mindustry/maps/SectorSubmissions.java @@ -59,7 +59,7 @@ public class SectorSubmissions{ registerSerpuloSector(133, "wpx", "https://discord.com/channels/391020510269669376/1379926871227240770/1417920499761156126"); registerSerpuloSector(185, "quad", "https://discord.com/channels/391020510269669376/1379926892181983283/1419231958336016458"); registerSerpuloSector(254, "wpx", "https://discord.com/channels/391020510269669376/1379928045577703424/1420456601667502193"); - registerSerpuloSector(0, "iqtik123", "https://discord.com/channels/391020510269669376/1379926780860698784/1431356682834940115"); + registerSerpuloSector(0, "iqtik123", "https://discord.com/channels/391020510269669376/1379926780860698784/1482671494268977341"); registerSerpuloSector(103, "enwyz", "https://discord.com/channels/391020510269669376/1379926839559979030/1429203869514207255"); registerSerpuloSector(30, "cyan", "https://discord.com/channels/391020510269669376/1379926800854945823/1423932799647481910"); registerSerpuloSector(20, "Namero", "https://discord.com/channels/391020510269669376/1379926794114961634/1406768731471872162"); diff --git a/core/src/mindustry/mod/DataPatcher.java b/core/src/mindustry/mod/DataPatcher.java index 1b8c70e7b3..e2f06abc44 100644 --- a/core/src/mindustry/mod/DataPatcher.java +++ b/core/src/mindustry/mod/DataPatcher.java @@ -286,8 +286,7 @@ public class DataPatcher{ } if(object instanceof Seq s){ - var copy = s.copy(); - reset(() -> s.set(copy)); + modifiedField(parentObject, parentField, s.copy()); assignValue(object, field, metadata, () -> s.get(i), val -> s.set(i, val), value, true); }else{ @@ -561,7 +560,7 @@ public class DataPatcher{ if(usedpatches.add(record)){ resetters.add(() -> { try{ - record.field.set(record.target, record.value); + record.field.set(record.target, value); }catch(Exception e){ throw new RuntimeException(e); } @@ -570,6 +569,7 @@ public class DataPatcher{ }else if(target instanceof Seq || target.getClass().isArray()){ int i = Integer.parseInt(field); resetters.add(() -> { + if(target instanceof Seq seq){ seq.set(i, value); }else{ diff --git a/desktop/src/mindustry/desktop/DesktopLauncher.java b/desktop/src/mindustry/desktop/DesktopLauncher.java index 49b4012ea1..9982b9be91 100644 --- a/desktop/src/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/mindustry/desktop/DesktopLauncher.java @@ -149,11 +149,11 @@ public class DesktopLauncher extends ClientLauncher{ this.args = args; if(useDiscord){ + Runtime.getRuntime().addShutdownHook(new Thread(DiscordRPC::close)); Threads.daemon(() -> { try{ DiscordRPC.connect(discordID); Log.info("Initialized Discord rich presence."); - Runtime.getRuntime().addShutdownHook(new Thread(DiscordRPC::close)); }catch(NoDiscordClientException none){ //don't log if no client is found useDiscord = false; diff --git a/tests/src/test/java/PatcherTests.java b/tests/src/test/java/PatcherTests.java index 8e4c9a0a8b..4795d5b53a 100644 --- a/tests/src/test/java/PatcherTests.java +++ b/tests/src/test/java/PatcherTests.java @@ -578,6 +578,21 @@ public class PatcherTests{ assertEquals(UnitTypes.avert, ((Reconstructor)Blocks.shipRefabricator).upgrades.get(0)[1]); } + @Test + void arrayMulti() throws Exception{ + int size = UnitTypes.emanate.weapons.size; + + Vars.state.patcher.apply(Seq.with(""" + {"name":"Patch0","unit":{"emanate":{"weapons":{"0":{"type":"Weapon","name":"toxopid-cannon"}},"weapons.+":[{"name":"sei-launcher"}]}}} + """)); + + assertEquals(UnitTypes.emanate.weapons.size, size + 1); + + resetAfter(); + + assertEquals(UnitTypes.emanate.weapons.size, size); + } + @Test void customAttribute() throws Exception{ int amount = Attribute.all.length;