From b50b922d3a77d827dd650d441e0ce796da0401d9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 13 Jan 2026 22:32:22 -0500 Subject: [PATCH] Fixed replacement of preset sectors in JSON --- .../mindustry/content/SerpuloTechTree.java | 17 ----------- core/src/mindustry/mod/ContentParser.java | 30 +++++++++++++------ 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/core/src/mindustry/content/SerpuloTechTree.java b/core/src/mindustry/content/SerpuloTechTree.java index 2127281749..9933c12658 100644 --- a/core/src/mindustry/content/SerpuloTechTree.java +++ b/core/src/mindustry/content/SerpuloTechTree.java @@ -680,23 +680,6 @@ public class SerpuloTechTree{ ), () -> { }); - - //TODO: removed for now - /*node(polarAerodrome, Seq.with( - new SectorComplete(fungalPass), - new SectorComplete(desolateRift), - new SectorComplete(overgrowth), - new Research(multiplicativeReconstructor), - new Research(zenith), - new Research(swarmer), - new Research(cyclone), - new Research(blastDrill), - new Research(blastDrill), - new Research(massDriver) - ), () -> { - - }); - */ }); }); diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index 47e16db0af..605fe3a88b 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -695,17 +695,29 @@ public class ContentParser{ return locate(ContentType.sector, name); } - if(!value.has("sector") || !value.get("sector").isNumber()) throw new RuntimeException("SectorPresets must have a sector number."); + SectorPreset preset; + SectorPreset found = locate(ContentType.sector, name); - SectorPreset out = new SectorPreset(mod + "-" + name, currentMod); + if(found != null){ + preset = found; + }else{ + if(!value.has("sector") || !value.get("sector").isNumber()) throw new RuntimeException("SectorPresets must have a sector number."); - currentContent = out; + preset = new SectorPreset(mod + "-" + name, currentMod); + } + + currentContent = preset; read(() -> { - Planet planet = locate(ContentType.planet, value.getString("planet", "serpulo")); + Planet planet = preset.planet == null ? Planets.serpulo : preset.planet; + if(value.has("planet")){ + planet = locate(ContentType.planet, value.getString("planet", "serpulo")); - if(planet == null) throw new RuntimeException("Planet '" + value.getString("planet") + "' not found."); + if(planet == null) throw new RuntimeException("Planet '" + value.getString("planet") + "' not found."); + } - out.initialize(planet, value.getInt("sector", 0)); + if(value.has("sector")){ + preset.initialize(planet, value.getInt("sector", 0)); + } value.remove("sector"); value.remove("planet"); @@ -713,7 +725,7 @@ public class ContentParser{ if(value.has("rules")){ JsonValue r = value.remove("rules"); if(!r.isObject()) throw new RuntimeException("Rules must be an object!"); - out.rules = rules -> { + preset.rules = rules -> { try{ //Use standard JSON, this is not content-parser relevant JsonIO.json.readFields(rules, r); @@ -723,9 +735,9 @@ public class ContentParser{ }; } - readFields(out, value); + readFields(preset, value); }); - return out; + return preset; }, ContentType.planet, (TypeParser)(mod, name, value) -> { if(value.isString()) return locate(ContentType.planet, name);