diff --git a/common/pom.xml b/common/pom.xml index 3636bc3..770e74b 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 3.0.2 + 3.0.3 4.0.0 diff --git a/platform/bukkit/pom.xml b/platform/bukkit/pom.xml index d7d87a9..e80ae5c 100644 --- a/platform/bukkit/pom.xml +++ b/platform/bukkit/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 3.0.2 + 3.0.3 ../../pom.xml 4.0.0 diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java index b38c182..635383f 100644 --- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java +++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/source/BukkitSection.java @@ -6,9 +6,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.UnmodifiableView; -import java.util.Collections; -import java.util.Map; -import java.util.Set; +import java.util.*; public class BukkitSection implements ConfigureSection { @@ -62,6 +60,38 @@ public BukkitSection(@NotNull BukkitSource source, @Nullable BukkitSection paren return Collections.unmodifiableMap(original); } + public Map toMap(ConfigurationSection section) { + Map map = new LinkedHashMap<>(); + for (String key : section.getKeys(false)) { + Object value = section.get(key); + if (value instanceof ConfigurationSection) { + map.put(key, toMap((ConfigurationSection) value)); + } else if (value instanceof BukkitSection) { + map.put(key, toMap(((BukkitSection) value).data())); + } else if (value instanceof List) { + List list = new ArrayList<>(); + for (Object o : (List) value) { + if (o instanceof ConfigurationSection) { + list.add(toMap((ConfigurationSection) o)); + } else if (o instanceof BukkitSection) { + list.add(toMap(((BukkitSection) o).data())); + } else { + list.add(o); + } + } + map.put(key, list); + } else { + map.put(key, value); + } + } + return map; + } + + @Override + public @NotNull @UnmodifiableView Map asMap() { + return toMap(data()); + } + @Override public void set(@NotNull String path, @Nullable Object value) { if (value instanceof BukkitSection) { // unwrap diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java index 3d33905..a991081 100644 --- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java +++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java @@ -4,12 +4,12 @@ import cc.carm.lib.configuration.adapter.ValueType; import cc.carm.lib.configuration.builder.AbstractConfigBuilder; import cc.carm.lib.configuration.source.ConfigurationHolder; +import cc.carm.lib.configuration.source.section.ConfigureSection; import cc.carm.lib.configuration.value.ValueManifest; import cc.carm.lib.configuration.value.standard.ConfiguredValue; import cc.carm.lib.configuration.value.text.function.ContentHandler; import com.cryptomorin.xseries.XItemStack; import org.bukkit.Material; -import org.bukkit.configuration.ConfigurationSection; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemFlag; @@ -32,8 +32,8 @@ public static Builder create() { public static final ValueAdapter ITEM_ADAPTER = new ValueAdapter<>(ITEM_TYPE, (holder, type, value) -> XItemStack.serialize(value), (holder, type, value) -> { - ConfigurationSection section = (ConfigurationSection) value; - return XItemStack.deserialize(section); + ConfigureSection section = (ConfigureSection) value; + return XItemStack.deserialize(section.asMap()); } ); diff --git a/platform/bungee/pom.xml b/platform/bungee/pom.xml index fbd1148..15462dc 100644 --- a/platform/bungee/pom.xml +++ b/platform/bungee/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 3.0.2 + 3.0.3 ../../pom.xml 4.0.0 diff --git a/platform/velocity/pom.xml b/platform/velocity/pom.xml index fc030ec..7b37244 100644 --- a/platform/velocity/pom.xml +++ b/platform/velocity/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 3.0.2 + 3.0.3 ../../pom.xml 4.0.0 diff --git a/pom.xml b/pom.xml index 731898b..0597a1b 100644 --- a/pom.xml +++ b/pom.xml @@ -10,14 +10,14 @@ UTF-8 UTF-8 - 4.0.7 - 1.2.0 + 4.0.9 + 1.2.1 1.5.12 cc.carm.lib mineconfiguration-parent - 3.0.2 + 3.0.3 pom common