From f36cd61905f5ec1383abc86ea38c96124393d344 Mon Sep 17 00:00:00 2001 From: BehrRiley Date: Fri, 4 Sep 2026 21:22:15 -0400 Subject: [PATCH] fix cleanup NPE for malformed persisted map flags - avoid dereferencing quickMap when a persisted `map`@ value fails MapTag parsing - treat value as a literal instead, rewrite it in the unambiguous el@ form on save to preserve the raw value and allows unrelated player flags to load normally --- .../denizencore/flags/SavableMapFlagTracker.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/denizenscript/denizencore/flags/SavableMapFlagTracker.java b/src/main/java/com/denizenscript/denizencore/flags/SavableMapFlagTracker.java index 4f3a4ad2..e3619185 100644 --- a/src/main/java/com/denizenscript/denizencore/flags/SavableMapFlagTracker.java +++ b/src/main/java/com/denizenscript/denizencore/flags/SavableMapFlagTracker.java @@ -31,7 +31,7 @@ public MapTag getMap() { if (string.startsWith("map@")) { map = MapTag.valueOf(string, CoreUtilities.noDebugContext); } - else { + if (map == null) { map = new MapTag(); map.putObject(valueString, ObjectFetcher.pickObjectFor(string, CoreUtilities.noDebugContext)); } @@ -107,6 +107,12 @@ public void doTotalClean() { } else if (val.string.startsWith("map@")) { MapTag quickMap = MapTag.valueOf(val.string, CoreUtilities.noDebugContext, false); + if (quickMap == null) { + val.getMap(); + val.string = null; + modified = true; + continue; + } if (CoreConfiguration.debugVerbose) { Debug.log("Verbose: MapFlagTracker, quickMap = " + quickMap.debuggable()); }