Files
Rankup3/src/main/java/sh/okx/rankup/serialization/YamlDeserializer.java
T
okx-code 2c5a631b2e 3.13
Fix ranks not replacing for console
Some messaging refactoring
Add "shortmoney" filter
Add TOML support for rankups.yml/rankups.toml
2021-10-24 22:54:04 +01:00

58 lines
2.1 KiB
Java

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<RankSerialized> deserialize(ConfigurationSection ranks) {
Set<String> rankKeys = ranks.getKeys(false);
List<RankSerialized> 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<String> commands = section.getStringList("commands");
List<String> requirements;
Map<String, List<String>> prestigeRequirements;
if (section.isConfigurationSection("requirements")) {
requirements = null;
Set<String> 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<String, String> messages;
if (rankupSection != null) {
Set<String> rankup = rankupSection.getKeys(true);
messages = new HashMap<>(rankup.size());
for (String key : rankup) {
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;
}
}