From 9e0e3392779dd5535941ecae156655825cd755c8 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sat, 2 Aug 2025 08:43:48 +0200 Subject: [PATCH] Finish FixedFlagStorage --- .../region/fixed/FixedFlagStorage.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedFlagStorage.java b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedFlagStorage.java index 71aee78e..c382f547 100644 --- a/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedFlagStorage.java +++ b/BauSystem/BauSystem_RegionFixed/src/de/steamwar/bausystem/region/fixed/FixedFlagStorage.java @@ -24,8 +24,10 @@ import de.steamwar.bausystem.region.FlagStorage; import de.steamwar.bausystem.region.RegionFlagPolicy; import de.steamwar.bausystem.region.flags.Flag; import de.steamwar.bausystem.region.flags.TestblockMode; +import de.steamwar.bausystem.worlddata.WorldData; import de.steamwar.core.Core; import lombok.NonNull; +import yapion.hierarchy.types.YAPIONObject; import java.util.HashMap; import java.util.Map; @@ -34,9 +36,20 @@ public class FixedFlagStorage implements FlagStorage { private TestblockMode testBlockMode; private Map, Flag.Value> flagMap = new HashMap<>(); + private YAPIONObject data; - public FixedFlagStorage(TestblockMode testblockMode) { + public FixedFlagStorage(TestblockMode testblockMode, YAPIONObject data) { this.testBlockMode = testblockMode; + this.data = data; + for (final Flag flag : Flag.getFlags()) { + if (!has(flag).isWritable()) continue; + try { + String s = data.getPlainValue(flag.name()); + flagMap.put(flag, flag.valueOfValue(s)); + } catch (Exception e) { + flagMap.put(flag, (Flag.Value) flag.getDefaultValue()); + } + } } @Override @@ -56,6 +69,8 @@ public class FixedFlagStorage implements FlagStorage { @Override public & Flag.Value> boolean set(@NonNull Flag flag, @NonNull T value) { if (has(flag).isWritable()) { + data.put(flag.name(), value.name()); + WorldData.write(); return flagMap.put(flag, value) != value; } else { return false;