From bf4186ed2010bac6886f7f908c0d4fbf04f0408d Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 11 Dec 2022 21:27:42 +0800 Subject: [PATCH] getValuesDeep now removes all configurationsections from output --- .../net/citizensnpcs/api/util/DataKey.java | 21 +++++++++++++++++++ .../citizensnpcs/api/util/MemoryDataKey.java | 10 ++------- .../net/citizensnpcs/api/util/Messaging.java | 4 +++- .../net/citizensnpcs/api/util/NBTStorage.java | 7 +------ .../citizensnpcs/api/util/YamlStorage.java | 4 +--- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/citizensnpcs/api/util/DataKey.java b/src/main/java/net/citizensnpcs/api/util/DataKey.java index 77394c83..8b736961 100644 --- a/src/main/java/net/citizensnpcs/api/util/DataKey.java +++ b/src/main/java/net/citizensnpcs/api/util/DataKey.java @@ -1,5 +1,8 @@ package net.citizensnpcs.api.util; +import java.util.ArrayDeque; +import java.util.Collections; +import java.util.Deque; import java.util.Map; import org.bukkit.configuration.ConfigurationSection; @@ -132,6 +135,24 @@ public boolean keyExists() { public abstract void removeKey(String key); + protected Map sectionToValues(ConfigurationSection section) { + if (section == null) + return Collections.emptyMap(); + Map object = section.getValues(false); + Deque> queue = new ArrayDeque<>(); + queue.add(object); + while (!queue.isEmpty()) { + for (Map.Entry entry : queue.pollLast().entrySet()) { + if (entry.getValue() instanceof ConfigurationSection) { + Map values = ((ConfigurationSection) entry.getValue()).getValues(false); + entry.setValue(values); + queue.add(values); + } + } + } + return object; + } + public abstract void setBoolean(String key, boolean value); public abstract void setDouble(String key, double value); diff --git a/src/main/java/net/citizensnpcs/api/util/MemoryDataKey.java b/src/main/java/net/citizensnpcs/api/util/MemoryDataKey.java index ea48d335..3c858092 100644 --- a/src/main/java/net/citizensnpcs/api/util/MemoryDataKey.java +++ b/src/main/java/net/citizensnpcs/api/util/MemoryDataKey.java @@ -111,18 +111,12 @@ public DataKey apply(String input) { @Override public Map getValuesDeep() { - ConfigurationSection section = root.getConfigurationSection(path); - if (section == null) - return Collections.emptyMap(); - return section.getValues(true); + return sectionToValues(root); } @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((path == null) ? 0 : path.hashCode()); - return result; + return 31 + ((path == null) ? 0 : path.hashCode()); } @Override diff --git a/src/main/java/net/citizensnpcs/api/util/Messaging.java b/src/main/java/net/citizensnpcs/api/util/Messaging.java index af0526e2..5d9b0acd 100644 --- a/src/main/java/net/citizensnpcs/api/util/Messaging.java +++ b/src/main/java/net/citizensnpcs/api/util/Messaging.java @@ -186,7 +186,9 @@ private static void sendMessageTo(CommandSender sender, String rawMessage, boole rawMessage = Placeholders.replace(rawMessage, (Player) sender); } for (String message : CHAT_NEWLINE_SPLITTER.split(rawMessage)) { - message = prettify(message); + if (messageColor) { + message = prettify(message); + } if (AUDIENCES != null) { AUDIENCES.sender(sender).sendMessage(MINIMESSAGE.deserialize(convertLegacyCodes(message))); } else { diff --git a/src/main/java/net/citizensnpcs/api/util/NBTStorage.java b/src/main/java/net/citizensnpcs/api/util/NBTStorage.java index 55af03e3..d9f47415 100644 --- a/src/main/java/net/citizensnpcs/api/util/NBTStorage.java +++ b/src/main/java/net/citizensnpcs/api/util/NBTStorage.java @@ -292,7 +292,6 @@ public Iterable getSubKeys() { return subKeys; } - @Override public Map getValuesDeep() { Tag tag = findLastTag(path, false); if (!(tag instanceof CompoundTag)) @@ -315,11 +314,7 @@ public Map getValuesDeep() { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + getOuterType().hashCode(); - result = prime * result + ((path == null) ? 0 : path.hashCode()); - return result; + return 31 * (31 + getOuterType().hashCode()) + ((path == null) ? 0 : path.hashCode()); } @Override diff --git a/src/main/java/net/citizensnpcs/api/util/YamlStorage.java b/src/main/java/net/citizensnpcs/api/util/YamlStorage.java index 6f8f8bf4..f868f978 100644 --- a/src/main/java/net/citizensnpcs/api/util/YamlStorage.java +++ b/src/main/java/net/citizensnpcs/api/util/YamlStorage.java @@ -266,11 +266,9 @@ public Iterable getSubKeys() { return res; } - @SuppressWarnings("unchecked") @Override public Map getValuesDeep() { - ConfigurationSection subSection = config.getConfigurationSection(path); - return (Map) (subSection == null ? Collections.emptyMap() : subSection.getValues(true)); + return sectionToValues(config.getConfigurationSection(path)); } @Override