From 6d0db71c3add4f18cd247ce61fc67064fc0d0dad Mon Sep 17 00:00:00 2001 From: Alex 'mcmonkey' Goodwin Date: Sun, 13 Dec 2020 07:59:54 -0800 Subject: [PATCH] fix removing flags in datapersist impl --- .../denizen/utilities/DataPersistenceHelper.java | 4 ++++ .../denizen/utilities/flags/DataPersistenceFlagTracker.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/DataPersistenceHelper.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/DataPersistenceHelper.java index fcca18bc8b..effdd9ba4d 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/DataPersistenceHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/DataPersistenceHelper.java @@ -39,6 +39,10 @@ public ObjectTag fromPrimitive(String primitive, PersistentDataAdapterContext co public static final DenizenObjectType PERSISTER_TYPE = new DenizenObjectType(); + public static void removeDenizenKey(PersistentDataHolder holder, String keyName) { + holder.getPersistentDataContainer().remove(new NamespacedKey(Denizen.getInstance(), keyName)); + } + public static void setDenizenKey(PersistentDataHolder holder, String keyName, ObjectTag keyValue) { holder.getPersistentDataContainer().set(new NamespacedKey(Denizen.getInstance(), keyName), PERSISTER_TYPE, keyValue); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/DataPersistenceFlagTracker.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/DataPersistenceFlagTracker.java index dfb32df7d2..5e5625fa1c 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/DataPersistenceFlagTracker.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/flags/DataPersistenceFlagTracker.java @@ -31,6 +31,10 @@ public MapTag getRootMap(String key) { @Override public void setRootMap(String key, MapTag map) { + if (map == null) { + DataPersistenceHelper.removeDenizenKey(holder, keyPrefix + CoreUtilities.toLowerCase(key)); + return; + } DataPersistenceHelper.setDenizenKey(holder, keyPrefix + CoreUtilities.toLowerCase(key), map); }