From 9cc310551858a3afe1fa300a7528bc4920b08eac Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 22 Oct 2025 06:42:01 -0400 Subject: [PATCH] Content patch import dialog & server support --- core/assets/bundles/bundle.properties | 7 + core/assets/fonts/monospace.woff | Bin 0 -> 130732 bytes core/src/mindustry/core/GameState.java | 4 +- core/src/mindustry/core/Logic.java | 5 +- core/src/mindustry/editor/MapInfoDialog.java | 13 +- .../mindustry/editor/MapPatchesDialog.java | 156 ++++++++++++++++++ core/src/mindustry/game/EventType.java | 10 ++ core/src/mindustry/io/SaveIO.java | 2 +- core/src/mindustry/io/SaveVersion.java | 58 ++++++- core/src/mindustry/io/versions/Save11.java | 11 ++ core/src/mindustry/mod/ContentPatcher.java | 81 +++++++-- core/src/mindustry/net/NetworkIO.java | 2 + core/src/mindustry/ui/Fonts.java | 9 +- core/src/mindustry/ui/Styles.java | 6 +- gradle.properties | 2 +- .../src/mindustry/server/ServerControl.java | 35 +++- 16 files changed, 373 insertions(+), 28 deletions(-) create mode 100644 core/assets/fonts/monospace.woff create mode 100644 core/src/mindustry/editor/MapPatchesDialog.java create mode 100644 core/src/mindustry/io/versions/Save11.java diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 4c34d9d6bb..6db70b759e 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -470,6 +470,13 @@ editor.rules = Rules editor.generation = Generation editor.objectives = Objectives editor.locales = Locale Bundles +editor.patches = Content Patches +editor.patch: Patchset: {0} +editor.patches.none = [lightgray]No patchsets loaded. +editor.patches.errors = Patchset Errors +editor.patches.importerror = Failed to import patchset +editor.patches.delete.confirm = Are you sure you want to delete this patchset? +editor.patch.fields = {0} fields editor.worldprocessors = World Processors editor.worldprocessors.editname = Edit Name editor.worldprocessors.none = [lightgray]No world processor blocks found!\nAdd one in the map editor, or use the \ue813 Add button below. diff --git a/core/assets/fonts/monospace.woff b/core/assets/fonts/monospace.woff new file mode 100644 index 0000000000000000000000000000000000000000..19251b0f367dae63f8e6613623bc57a1960c12f9 GIT binary patch literal 130732 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 BT8;n! literal 0 HcmV?d00001 diff --git a/core/src/mindustry/core/GameState.java b/core/src/mindustry/core/GameState.java index 90bff9fcb2..7b7f00612d 100644 --- a/core/src/mindustry/core/GameState.java +++ b/core/src/mindustry/core/GameState.java @@ -43,12 +43,12 @@ public class GameState{ public Attributes envAttrs = new Attributes(); /** Team data. Gets reset every new game. */ public Teams teams = new Teams(); + /** Handles JSON edits of game content. */ + public ContentPatcher patcher = new ContentPatcher(); /** Number of enemies in the game; only used clientside in servers. */ public int enemies; /** Map being playtested (not edited!) */ public @Nullable Map playtestingMap; - /** Null if not content patches have been applied. */ - public @Nullable ContentPatcher patcher; /** Current game state. */ private State state = State.menu; diff --git a/core/src/mindustry/core/Logic.java b/core/src/mindustry/core/Logic.java index fa5953d45c..ed955e4857 100644 --- a/core/src/mindustry/core/Logic.java +++ b/core/src/mindustry/core/Logic.java @@ -260,10 +260,7 @@ public class Logic implements ApplicationListener{ public void reset(){ State prev = state.getState(); - if(state.patcher != null){ - state.patcher.unapply(); - state.patcher = null; - } + state.patcher.unapply(); //recreate gamestate - sets state to menu state = new GameState(); //fire change event, since it was technically changed diff --git a/core/src/mindustry/editor/MapInfoDialog.java b/core/src/mindustry/editor/MapInfoDialog.java index ebc1f0b300..b4f56d136b 100644 --- a/core/src/mindustry/editor/MapInfoDialog.java +++ b/core/src/mindustry/editor/MapInfoDialog.java @@ -20,6 +20,7 @@ public class MapInfoDialog extends BaseDialog{ private MapObjectivesDialog objectives = new MapObjectivesDialog(); private MapLocalesDialog locales = new MapLocalesDialog(); private MapProcessorsDialog processors = new MapProcessorsDialog(); + private MapPatchesDialog patches = new MapPatchesDialog(); public MapInfoDialog(){ super("@editor.mapinfo"); @@ -33,7 +34,7 @@ public class MapInfoDialog extends BaseDialog{ cont.clear(); ObjectMap tags = editor.tags; - + cont.pane(t -> { t.add("@editor.mapname").padRight(8).left(); t.defaults().padTop(15); @@ -113,6 +114,16 @@ public class MapInfoDialog extends BaseDialog{ hide(); processors.show(); }).marginLeft(10f); + + r.row(); + + r.button("@editor.patches", Icon.file, style, () -> { + hide(); + patches.show(); + }).marginLeft(10f); + + //empty space + r.add().marginLeft(10f); }).colspan(2).center(); name.change(); diff --git a/core/src/mindustry/editor/MapPatchesDialog.java b/core/src/mindustry/editor/MapPatchesDialog.java new file mode 100644 index 0000000000..5e0122986d --- /dev/null +++ b/core/src/mindustry/editor/MapPatchesDialog.java @@ -0,0 +1,156 @@ +package mindustry.editor; + +import arc.*; +import arc.func.*; +import arc.scene.ui.TextButton.*; +import arc.scene.ui.layout.*; +import arc.struct.*; +import arc.util.*; +import arc.util.serialization.*; +import mindustry.*; +import mindustry.gen.*; +import mindustry.ui.*; +import mindustry.ui.dialogs.*; + +import static mindustry.Vars.*; + +public class MapPatchesDialog extends BaseDialog{ + private Table list; + + public MapPatchesDialog(){ + super("@editor.patches"); + + shown(this::setup); + + addCloseButton(); + buttons.button("@add", Icon.add, () -> showImport(this::addPatch)).size(210f, 64f); + + cont.top(); + getCell(cont).grow(); + + cont.pane(t -> list = t); + } + + private void setup(){ + list.clearChildren(); + var patches = state.patcher.patches; + + if(patches.isEmpty()){ + list.add("@editor.patches.none"); + }else{ + Table t = list; + + t.defaults().pad(4f); + float h = 50f; + for(var patch : patches){ + int fields = countFields(patch.json); + + if(patch.warnings.size > 0){ + t.button(Icon.warning, Styles.graySquarei, iconMed, () -> { + BaseDialog dialog = new BaseDialog("@editor.patches.errors"); + dialog.cont.top().pane(p -> { + p.top(); + + for(var warning : patch.warnings){ + p.table(Styles.grayPanel, in -> { + in.add(warning, Styles.monoLabel).grow().wrap(); + }).margin(6f).growX().pad(3f).row(); + } + }).grow(); + dialog.addCloseButton(); + dialog.show(); + }).size(h); + }else{ + t.add().size(h); + } + + t.button((patch.name.isEmpty() ? "\n" : "[accent]" + patch.name + "\n") + "[lightgray][[" + Core.bundle.format("editor.patch.fields", fields) + "]", Styles.grayt, () -> { + BaseDialog dialog = new BaseDialog(Core.bundle.format("editor.patch", patch.name.isEmpty() ? "" : patch.name)); + dialog.cont.top().pane(p -> { + p.top(); + p.table(Styles.grayPanel, in -> { + in.add(patch.patch.replaceAll("\t", " "), Styles.monoLabel).grow().wrap().left().labelAlign(Align.left); + }).margin(6f).growX().pad(5f).row(); + }).grow(); + dialog.addCloseButton(); + dialog.show(); + }).size(mobile ? 390f : 450f, h).margin(10f).with(b -> { + b.getLabel().setAlignment(Align.left, Align.left); + }); + + t.button(Icon.refresh, Styles.graySquarei, Vars.iconMed, () -> { + showImport(str -> addPatch(str, patches.indexOf(patch))); + }).size(h); + + t.button(Icon.trash, Styles.graySquarei, iconMed, () -> { + ui.showConfirm("@editor.patches.delete.confirm", () -> { + patches.remove(patch); + setup(); + }); + }).size(h); + + t.row(); + } + } + } + + void showImport(Cons handler){ + BaseDialog dialog = new BaseDialog("@editor.import"); + dialog.cont.pane(p -> { + p.margin(10f); + p.table(Tex.button, t -> { + TextButtonStyle style = Styles.flatt; + t.defaults().size(280f, 60f).left(); + t.row(); + t.button("@schematic.copy.import", Icon.copy, style, () -> { + dialog.hide(); + handler.get(Core.app.getClipboardText()); + }).marginLeft(12f).disabled(b -> Core.app.getClipboardText() == null); + t.row(); + t.button("@schematic.importfile", Icon.download, style, () -> platform.showMultiFileChooser(file -> { + dialog.hide(); + handler.get(file.readString()); + }, "json", "hjson", "json5")).marginLeft(12f); + t.row(); + }); + }); + + dialog.addCloseButton(); + dialog.show(); + } + + void addPatch(String patch){ + addPatch(patch, -1); + } + + void addPatch(String patch, int replaceIndex){ + var oldPatches = state.patcher.patches.copy(); + try{ + Jval.read(patch); //validation + Seq patches = state.patcher.patches.map(p -> p.patch); + if(replaceIndex == -1){ + patches.add(patch); + }else{ + patches.set(replaceIndex, patch); + } + state.patcher.apply(patches); + + setup(); + }catch(Exception e){ + state.patcher.patches.set(oldPatches); + ui.showException("@editor.patches.importerror", e); + } + } + + int countFields(JsonValue value){ + if(value.isObject() || value.isArray()){ + int sum = 0; + for(var child : value){ + sum += countFields(child); + } + return Math.max(sum, 1); + }else{ + return 1; + } + } +} diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index a5e48b8dc7..30f529a346 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -1,6 +1,7 @@ package mindustry.game; import arc.math.geom.*; +import arc.struct.*; import arc.util.*; import mindustry.core.GameState.*; import mindustry.ctype.*; @@ -102,6 +103,15 @@ public class EventType{ /** Called when a game begins and the world tiles are initiated. About to updates tile proximity and sets up physics for the world(Before WorldLoadEvent) */ public static class WorldLoadEndEvent{} + /** Called when a save loads custom patches. {@link #patches} can be modified in the event handler. */ + public static class ContentPatchLoadEvent{ + public final Seq patches; + + public ContentPatchLoadEvent(Seq patches){ + this.patches = patches; + } + } + public static class SaveLoadEvent{ public final boolean isMap; diff --git a/core/src/mindustry/io/SaveIO.java b/core/src/mindustry/io/SaveIO.java index f383f4daf1..3bb3a43207 100644 --- a/core/src/mindustry/io/SaveIO.java +++ b/core/src/mindustry/io/SaveIO.java @@ -20,7 +20,7 @@ public class SaveIO{ /** Save format header. */ public static final byte[] header = {'M', 'S', 'A', 'V'}; public static final IntMap versions = new IntMap<>(); - public static final Seq versionArray = Seq.with(new Save1(), new Save2(), new Save3(), new Save4(), new Save5(), new Save6(), new Save7(), new Save8(), new Save9(), new Save10()); + public static final Seq versionArray = Seq.with(new Save1(), new Save2(), new Save3(), new Save4(), new Save5(), new Save6(), new Save7(), new Save8(), new Save9(), new Save10(), new Save11()); static{ for(SaveVersion version : versionArray){ diff --git a/core/src/mindustry/io/SaveVersion.java b/core/src/mindustry/io/SaveVersion.java index 6e980a0aa7..d5f7a08a77 100644 --- a/core/src/mindustry/io/SaveVersion.java +++ b/core/src/mindustry/io/SaveVersion.java @@ -12,6 +12,7 @@ import mindustry.core.*; import mindustry.ctype.*; import mindustry.entities.*; import mindustry.game.*; +import mindustry.game.EventType.*; import mindustry.game.Teams.*; import mindustry.gen.*; import mindustry.maps.Map; @@ -67,6 +68,7 @@ public abstract class SaveVersion extends SaveFileReader{ readRegion("content", stream, counter, this::readContentHeader); try{ + if(version >= 11) readRegion("patches", stream, counter, this::readContentPatches); readRegion("map", stream, counter, in -> readMap(in, context)); readRegion("entities", stream, counter, this::readEntities); if(version >= 8) readRegion("markers", stream, counter, this::readMarkers); @@ -79,6 +81,7 @@ public abstract class SaveVersion extends SaveFileReader{ public void write(DataOutputStream stream, StringMap extraTags) throws IOException{ writeRegion("meta", stream, out -> writeMeta(out, extraTags)); writeRegion("content", stream, this::writeContentHeader); + writeRegion("patches", stream, this::writeContentPatches); writeRegion("map", stream, this::writeMap); writeRegion("entities", stream, this::writeEntities); writeRegion("markers", stream, this::writeMarkers); @@ -502,8 +505,46 @@ public abstract class SaveVersion extends SaveFileReader{ readWorldEntities(stream, mapping); } + public void readContentPatches(DataInput stream) throws IOException{ + Seq patches = new Seq<>(); + + int amount = stream.readUnsignedByte(); + if(amount > 0){ + for(int i = 0; i < amount; i++){ + int len = stream.readInt(); + byte[] bytes = new byte[len]; + stream.readFully(bytes); + patches.add(new String(bytes, Strings.utf8)); + } + } + + Events.fire(new ContentPatchLoadEvent(patches)); + + if(patches.size > 0){ + try{ + state.patcher.apply(patches); + }catch(Throwable e){ + Log.err("Failed to apply patches: " + patches, e); + } + } + } + + public void writeContentPatches(DataOutput stream) throws IOException{ + if(state.patcher.patches.size > 0){ + var patches = state.patcher.patches; + stream.writeByte(patches.size); + for(var patchset : patches){ + byte[] bytes = patchset.patch.getBytes(Strings.utf8); + stream.writeInt(bytes.length); + stream.write(bytes); + } + }else{ + stream.writeByte(0); + } + } + public void readContentHeader(DataInput stream) throws IOException{ - byte mapped = stream.readByte(); + int mapped = stream.readUnsignedByte(); MappableContent[][] map = new MappableContent[ContentType.all.length][0]; @@ -520,6 +561,21 @@ public abstract class SaveVersion extends SaveFileReader{ } content.setTemporaryMapper(map); + + //HACK: versions below 11 don't read the patch chunk, which means the event for reading patches is never triggered. + //manually fire the event here for older versions. + if(version < 11){ + Seq patches = new Seq<>(); + Events.fire(new ContentPatchLoadEvent(patches)); + + if(patches.size > 0){ + try{ + state.patcher.apply(patches); + }catch(Throwable e){ + Log.err("Failed to apply patches: " + patches, e); + } + } + } } public void writeContentHeader(DataOutput stream) throws IOException{ diff --git a/core/src/mindustry/io/versions/Save11.java b/core/src/mindustry/io/versions/Save11.java new file mode 100644 index 0000000000..253c6f8138 --- /dev/null +++ b/core/src/mindustry/io/versions/Save11.java @@ -0,0 +1,11 @@ +package mindustry.io.versions; + +import mindustry.io.*; + +/** Adds patches in content header. */ +public class Save11 extends SaveVersion{ + + public Save11(){ + super(11); + } +} diff --git a/core/src/mindustry/mod/ContentPatcher.java b/core/src/mindustry/mod/ContentPatcher.java index 3f030493a4..d1fdd6aac6 100644 --- a/core/src/mindustry/mod/ContentPatcher.java +++ b/core/src/mindustry/mod/ContentPatcher.java @@ -14,6 +14,7 @@ import java.lang.reflect.*; import java.util.*; /** The current implementation is awful. Consider it a proof of concept. */ +//TODO block consumer support @SuppressWarnings("unchecked") public class ContentPatcher{ private static final Object root = new Object(); @@ -25,6 +26,10 @@ public class ContentPatcher{ private ObjectSet usedpatches = new ObjectSet<>(); private Seq resetters = new Seq<>(); private Seq afterCallbacks = new Seq<>(); + private @Nullable PatchSet currentlyApplying; + + /** Currently active patches. Note that apply() should be called after modification. */ + public Seq patches = new Seq<>(); static{ for(var type : ContentType.all){ @@ -32,22 +37,37 @@ public class ContentPatcher{ } } - public void apply(String patch) throws Exception{ + /** Applies the specified patches. If patches were already applied, the previous ones are un-applied - they do not stack! */ + public void apply(Seq patchArray) throws Exception{ + if(applied){ + unapply(); + applied = false; + } json = Vars.mods.getContentParser().getJson(); applied = true; contentLoader = Vars.content.copy(); + patches.clear(); - try{ - JsonValue value = json.fromJson(null, Jval.read(patch).toString(Jformat.plain)); - for(var child : value){ - assign(root, child.name, child, null, null, null); + for(String patch : patchArray){ + try{ + JsonValue value = json.fromJson(null, Jval.read(patch).toString(Jformat.plain)); + PatchSet set = new PatchSet(patch, value); + patches.add(set); + currentlyApplying = set; + + value.remove("name"); //patchsets can have a name, ignore it if present + for(var child : value){ + assign(root, child.name, child, null, null, null); + } + currentlyApplying = null; + + }catch(Exception e){ + Log.err("Failed to apply patch: " + patch, e); } - - afterCallbacks.each(Runnable::run); - }catch(Exception e){ - Log.err("Failed to apply patch: " + patch, e); } + + afterCallbacks.each(Runnable::run); } public void unapply(){ @@ -69,6 +89,7 @@ public class ContentPatcher{ //this should never throw an exception afterCallbacks.each(Runnable::run); afterCallbacks.clear(); + usedpatches.clear(); } void assign(Object object, String field, Object value, @Nullable FieldData metadata, @Nullable Object parentObject, @Nullable String parentField) throws Exception{ @@ -168,6 +189,10 @@ public class ContentPatcher{ assignValue(object, field, metadata, () -> Array.get(fobj, i), val -> Array.set(fobj, i, val), value, false); } } + }else if(object instanceof ObjectSet set && prefix == '+'){ + modifiedField(parentObject, parentField, set.copy()); + + assignValue(object, field, metadata, () -> null, val -> set.add(val), value, false); }else if(object instanceof ObjectMap map){ if(metadata == null){ warn("ObjectMap cannot be parsed without metadata: @.@", parentObject, parentField); @@ -182,7 +207,13 @@ public class ContentPatcher{ var copy = map.copy(); reset(() -> map.set(copy)); - assignValue(object, field, new FieldData(metadata.elementType, null, null), () -> map.get(key), val -> map.put(key, val), value, false); + if(value instanceof JsonValue jval && jval.isString() && (jval.asString().equals("-"))){ + //removal syntax: + //"value": "-" + map.remove(key); + }else{ + assignValue(object, field, new FieldData(metadata.elementType, null, null), () -> map.get(key), val -> map.put(key, val), value, false); + } }else{ Class actualType = object.getClass(); if(actualType.isAnonymousClass()) actualType = actualType.getSuperclass(); @@ -193,9 +224,15 @@ public class ContentPatcher{ if(checkField(fdata.field)) return; var fobj = object; - assignValue(object, field, new FieldData(fdata), () -> Reflect.get(fobj, fdata.field), fv -> Reflect.set(fobj, fdata.field, fv), value, true); + assignValue(object, field, new FieldData(fdata), () -> Reflect.get(fobj, fdata.field), fv -> { + if(fv == null && !fdata.field.isAnnotationPresent(Nullable.class)){ + warn("Field '@' cannot be null.", fdata.field); + return; + } + Reflect.set(fobj, fdata.field, fv); + }, value, true); }else{ - warn("Unknown field: '@' for '@'", field, actualType.getName()); + warn("Unknown field: '@' for class '@'", field, actualType.getSimpleName()); } } } @@ -322,9 +359,12 @@ public class ContentPatcher{ return json.fromJson(type, string); } - //TODO crash? void warn(String error, Object... fmt){ - Log.warn(error, fmt); + String formatted = Strings.format(error, fmt); + if(currentlyApplying != null){ + currentlyApplying.warnings.add(formatted); + } + Log.warn("[ContentPatcher] " + formatted); } void after(Runnable run){ @@ -343,6 +383,19 @@ public class ContentPatcher{ return ((Object[])object).clone(); } + public static class PatchSet{ + public String patch; + public JsonValue json; + public String name; + public Seq warnings = new Seq<>(); + + public PatchSet(String patch, JsonValue json){ + this.patch = patch; + this.json = json; + name = json.getString("name", ""); + } + } + private static class FieldData{ Class type, elementType, keyType; diff --git a/core/src/mindustry/net/NetworkIO.java b/core/src/mindustry/net/NetworkIO.java index 5b49342d67..68df216c74 100644 --- a/core/src/mindustry/net/NetworkIO.java +++ b/core/src/mindustry/net/NetworkIO.java @@ -51,6 +51,7 @@ public class NetworkIO{ player.write(new Writes(stream)); SaveIO.getSaveWriter().writeContentHeader(stream); + SaveIO.getSaveWriter().writeContentPatches(stream); SaveIO.getSaveWriter().writeMap(stream); SaveIO.getSaveWriter().writeTeamBlocks(stream); SaveIO.getSaveWriter().writeMarkers(stream); @@ -84,6 +85,7 @@ public class NetworkIO{ player.add(); SaveIO.getSaveWriter().readContentHeader(stream); + SaveIO.getSaveWriter().readContentPatches(stream); SaveIO.getSaveWriter().readMap(stream, world.context); SaveIO.getSaveWriter().readTeamBlocks(stream); SaveIO.getSaveWriter().readMarkers(stream); diff --git a/core/src/mindustry/ui/Fonts.java b/core/src/mindustry/ui/Fonts.java index f302c762a5..4e99cc38c1 100644 --- a/core/src/mindustry/ui/Fonts.java +++ b/core/src/mindustry/ui/Fonts.java @@ -33,7 +33,7 @@ public class Fonts{ private static ObjectMap stringIcons = new ObjectMap<>(); private static ObjectMap largeIcons = new ObjectMap<>(); - public static Font def, outline, icon, iconLarge, tech, logic; + public static Font def, outline, icon, iconLarge, tech, logic, monospace; public static int getUnicode(String content){ return unicodeIcons.get(content, 0); @@ -66,6 +66,13 @@ public class Fonts{ Core.assets.load("default", Font.class, new FreeTypeFontLoaderParameter(mainFont, param)).loaded = f -> Fonts.def = f; + Core.assets.load("monospace", Font.class, new FreeTypeFontLoaderParameter("fonts/monospace.woff", new FreeTypeFontParameter(){{ + size = 16; + incremental = true; + //most people will never see the monospace font, so don't pre-bake anything + characters = "\u0000 "; + }})).loaded = f -> Fonts.monospace = f; + Core.assets.load("icon", Font.class, new FreeTypeFontLoaderParameter("fonts/icon.ttf", new FreeTypeFontParameter(){{ size = 30; incremental = true; diff --git a/core/src/mindustry/ui/Styles.java b/core/src/mindustry/ui/Styles.java index f3e82d670a..896fdca8e3 100644 --- a/core/src/mindustry/ui/Styles.java +++ b/core/src/mindustry/ui/Styles.java @@ -92,7 +92,7 @@ public class Styles{ public static ScrollPaneStyle defaultPane, horizontalPane, smallPane, noBarPane; public static SliderStyle defaultSlider; - public static LabelStyle defaultLabel, outlineLabel, techLabel; + public static LabelStyle defaultLabel, outlineLabel, techLabel, monoLabel; public static TextFieldStyle defaultField, nodeField, areaField, nodeArea; public static CheckBoxStyle defaultCheck; public static DialogStyle defaultDialog, fullDialog; @@ -380,6 +380,10 @@ public class Styles{ font = Fonts.tech; fontColor = Color.white; }}; + monoLabel = new LabelStyle(){{ + font = Fonts.monospace; + fontColor = Color.white; + }}; defaultField = new TextFieldStyle(){{ font = Fonts.def; diff --git a/gradle.properties b/gradle.properties index b53e20d2cc..124d10b5a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,4 +26,4 @@ org.gradle.caching=true org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 android.enableR8.fullMode=false -archash=7a3d906e1b +archash=c8f3bd901b diff --git a/server/src/mindustry/server/ServerControl.java b/server/src/mindustry/server/ServerControl.java index 6b0a840ec9..431edcdd4f 100644 --- a/server/src/mindustry/server/ServerControl.java +++ b/server/src/mindustry/server/ServerControl.java @@ -10,6 +10,7 @@ import arc.util.CommandHandler.*; import arc.util.Timer.*; import arc.util.serialization.*; import arc.util.serialization.JsonValue.*; +import arc.util.serialization.Jval.*; import mindustry.*; import mindustry.core.GameState.*; import mindustry.core.*; @@ -72,6 +73,8 @@ public class ServerControl implements ApplicationListener{ private PrintWriter socketOutput; private String suggested; private boolean autoPaused = false; + private Fi patchDirectory; + private Seq contentPatches = new Seq<>(); public Cons gameOverListener = event -> { if(state.rules.waves){ @@ -191,13 +194,17 @@ public class ServerControl implements ApplicationListener{ } }); - customMapDirectory.mkdirs(); - if(Version.build == -1){ warn("&lyYour server is running a custom build, which means that client checking is disabled."); warn("&lyIt is highly advised to specify which version you're using by building with gradle args &lb&fb-Pbuildversion=&lr"); } + customMapDirectory.mkdirs(); + + patchDirectory = dataDirectory.child("patches"); + patchDirectory.mkdirs(); + loadPatchFiles(); + //set up default shuffle mode try{ maps.setShuffleMode(ShuffleMode.valueOf(Core.settings.getString("shufflemode"))); @@ -314,6 +321,30 @@ public class ServerControl implements ApplicationListener{ info("Server loaded. Type @ for help.", "'help'"); }); + + Events.on(ContentPatchLoadEvent.class, event -> { + //NOTE: if patches change, and an older save is loaded, the patches will be applied twice; the old ones won't be removed. + for(String patch : contentPatches){ + event.patches.addUnique(patch); + } + }); + } + + void loadPatchFiles(){ + contentPatches.clear(); + Seq patches = patchDirectory.findAll(f -> f.extEquals("json") || f.extEquals("hjson") || f.extEquals("json5")).sort(); + + for(Fi patch : patches){ + try{ + contentPatches.add(Jval.read(patch.readString()).toString(Jformat.plain)); + }catch(Throwable e){ + Log.err("Invalid patch file: " + patch.name(), e); + } + } + + if(contentPatches.size > 0){ + Log.info("Loaded @ content patch files.", contentPatches.size); + } } protected void registerCommands(){