package sh.okx.rankup.serialization; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.MemorySection; public class YamlDeserializer { public static List deserialize(ConfigurationSection ranks) { Set rankKeys = ranks.getKeys(false); List ranksList = new ArrayList<>(rankKeys.size()); for (String rankKey : rankKeys) { ConfigurationSection section = ranks.getConfigurationSection(rankKey); if (section == null) continue; String rank = section.getString("rank"); String next = section.getString("next"); String displayName = section.getString("display-name"); List commands = section.getStringList("commands"); List requirements; Map> prestigeRequirements; if (section.isConfigurationSection("requirements")) { requirements = null; Set keys = section.getKeys(false); prestigeRequirements = new HashMap<>(keys.size()); ConfigurationSection requirementsSection = section.getConfigurationSection("requirements"); for (String key : keys) { prestigeRequirements.put(key, requirementsSection.getStringList(key)); } } else { prestigeRequirements = null; requirements = section.getStringList("requirements"); } ConfigurationSection rankupSection = section.getConfigurationSection("rankup"); Map messages; if (rankupSection != null) { Set rankup = rankupSection.getKeys(true); messages = new HashMap<>(rankup.size()); for (String key : rankup) { if (!rankupSection.isConfigurationSection(key)) { messages.put(MemorySection.createPath(rankupSection, key, section), rankupSection.getString(key)); } } } else { messages = Collections.emptyMap(); } ranksList.add(new RankSerialized(rank, next, displayName, commands, requirements, prestigeRequirements, messages)); } return ranksList; } }