diff --git a/pom.xml b/pom.xml index e66db1b..14d5d76 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.padrewin colddev - 1.4.6 + 1.4.7 jar ColdDev diff --git a/src/main/java/dev/padrewin/colddev/config/ColdSettingSerializers.java b/src/main/java/dev/padrewin/colddev/config/ColdSettingSerializers.java index c40a156..5b7c1b3 100644 --- a/src/main/java/dev/padrewin/colddev/config/ColdSettingSerializers.java +++ b/src/main/java/dev/padrewin/colddev/config/ColdSettingSerializers.java @@ -1,9 +1,11 @@ package dev.padrewin.colddev.config; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.IntStream; import org.bukkit.Material; public final class ColdSettingSerializers { @@ -78,6 +80,34 @@ public void write(CommentedConfigurationSection config, String key, T value, Str } }; } - //endregion -} \ No newline at end of file + public static ColdSettingSerializer> list(ColdSettingSerializer elementSerializer) { + return new ColdSettingSerializer>() { + @Override + public List read(CommentedConfigurationSection config, String setting) { + List rawList = config.getList(setting); + if (rawList == null) { + return Collections.emptyList(); + } + return rawList.stream() + .map(element -> elementSerializer.read(config, setting + "." + rawList.indexOf(element))) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + } + + @Override + public void write(CommentedConfigurationSection config, String key, List value, String... comments) { + config.addPathedComments(key, comments); // Adaugă comentarii pentru secțiune + + // Dacă lista este null sau goală, scrie-o explicit ca o listă YAML + if (value == null || value.isEmpty()) { + config.set(key, Collections.emptyList()); + } else { + config.set(key, value); + } + } + }; + } + + //endregion +}