diff --git a/easyplugin-all/pom.xml b/easyplugin-all/pom.xml
index 8d1c7ce..1edb215 100644
--- a/easyplugin-all/pom.xml
+++ b/easyplugin-all/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.1.1
+ 1.1.2
4.0.0
diff --git a/easyplugin-command/pom.xml b/easyplugin-command/pom.xml
index 58e1dee..48aa4cb 100644
--- a/easyplugin-command/pom.xml
+++ b/easyplugin-command/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.1.1
+ 1.1.2
4.0.0
diff --git a/easyplugin-common/pom.xml b/easyplugin-common/pom.xml
index ba578ca..ee8c071 100644
--- a/easyplugin-common/pom.xml
+++ b/easyplugin-common/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.1.1
+ 1.1.2
4.0.0
diff --git a/easyplugin-configuration/pom.xml b/easyplugin-configuration/pom.xml
index 57917b4..cfd4a78 100644
--- a/easyplugin-configuration/pom.xml
+++ b/easyplugin-configuration/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.1.1
+ 1.1.2
4.0.0
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigSectionCast.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigSectionCast.java
new file mode 100644
index 0000000..079549f
--- /dev/null
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigSectionCast.java
@@ -0,0 +1,58 @@
+package cc.carm.lib.easyplugin.configuration.cast;
+
+import cc.carm.lib.easyplugin.configuration.file.FileConfig;
+import cc.carm.lib.easyplugin.configuration.file.FileConfigCachedValue;
+import org.bukkit.configuration.ConfigurationSection;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Optional;
+import java.util.function.Function;
+
+public class ConfigSectionCast extends FileConfigCachedValue {
+
+ @NotNull Function valueCast;
+ @Nullable V defaultValue;
+
+ public ConfigSectionCast(@NotNull String configSection,
+ @NotNull Function valueCast) {
+ this(configSection, valueCast, null);
+ }
+
+ public ConfigSectionCast(@NotNull String sectionName,
+ @NotNull Function valueCast,
+ @Nullable V defaultValue) {
+ this(null, sectionName, valueCast, defaultValue);
+ }
+
+ public ConfigSectionCast(@Nullable FileConfig source, @NotNull String sectionName,
+ @NotNull Function valueCast,
+ @Nullable V defaultValue) {
+ super(source, sectionName);
+ this.valueCast = valueCast;
+ this.defaultValue = defaultValue;
+ }
+
+
+ public @Nullable V get() {
+ V cached = getCachedValue();
+ if (cached != null && !isExpired()) {
+ return cached;
+ } else {
+ return getConfigOptional()
+ .map(config -> config.getConfigurationSection(getSectionName()))
+ .map(section -> updateCache(valueCast.apply(section)))
+ .orElse(defaultValue);
+ }
+ }
+
+ public @NotNull Optional getOptional() {
+ return Optional.ofNullable(get());
+ }
+
+
+
+ public void set(ConfigurationSection section) {
+ }
+
+}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java
new file mode 100644
index 0000000..8a8a065
--- /dev/null
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/cast/ConfigStringCast.java
@@ -0,0 +1,58 @@
+package cc.carm.lib.easyplugin.configuration.cast;
+
+import cc.carm.lib.easyplugin.configuration.file.FileConfig;
+import cc.carm.lib.easyplugin.configuration.file.FileConfigCachedValue;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Optional;
+import java.util.function.Function;
+
+public class ConfigStringCast extends FileConfigCachedValue {
+
+ @NotNull Function valueCast;
+ @Nullable V defaultValue;
+
+ public ConfigStringCast(@NotNull String configSection,
+ @NotNull Function valueCast) {
+ this(configSection, valueCast, null);
+ }
+
+ public ConfigStringCast(@NotNull String configSection,
+ @NotNull Function valueCast,
+ @Nullable V defaultValue) {
+ this(null, configSection, valueCast, defaultValue);
+ }
+
+ public ConfigStringCast(@Nullable FileConfig source, @NotNull String sectionName,
+ @NotNull Function valueCast,
+ @Nullable V defaultValue) {
+ super(source, sectionName);
+ this.valueCast = valueCast;
+ this.defaultValue = defaultValue;
+ }
+
+ public @Nullable V get() {
+ V cached = getCachedValue();
+ if (cached != null && !isExpired()) {
+ return cached;
+ } else {
+ return getConfigOptional()
+ .map(config -> config.getString(getSectionName()))
+ .map(s -> updateCache(valueCast.apply(s)))
+ .orElse(defaultValue);
+ }
+ }
+
+ public @NotNull Optional getOptional() {
+ return Optional.ofNullable(get());
+ }
+
+ public void set(@Nullable String value) {
+ getSourceOptional().ifPresent(source -> {
+ source.getConfig().set(getSectionName(), value);
+ source.save();
+ });
+ }
+
+}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigCachedValue.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigCachedValue.java
new file mode 100644
index 0000000..9a9ad3f
--- /dev/null
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigCachedValue.java
@@ -0,0 +1,42 @@
+package cc.carm.lib.easyplugin.configuration.file;
+
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public abstract class FileConfigCachedValue extends FileConfigValue {
+
+ protected V cachedValue;
+ protected long updateTime;
+
+ public FileConfigCachedValue(@NotNull String sectionName) {
+ super(sectionName);
+ }
+
+ public FileConfigCachedValue(@Nullable FileConfig source, @NotNull String sectionName) {
+ super(source, sectionName);
+ }
+
+ public V updateCache(V value) {
+ this.updateTime = System.currentTimeMillis();
+ this.cachedValue = value;
+ return getCachedValue();
+ }
+
+ public boolean isExpired() {
+ return getSource() == null || getSource().isExpired(this.updateTime);
+ }
+
+ public long getUpdateTime() {
+ return updateTime;
+ }
+
+ @Nullable
+ public V getCachedValue() {
+ return cachedValue;
+ }
+
+ public void clearCache() {
+ this.cachedValue = null;
+ }
+
+}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java
new file mode 100644
index 0000000..d8aac74
--- /dev/null
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/file/FileConfigValue.java
@@ -0,0 +1,51 @@
+package cc.carm.lib.easyplugin.configuration.file;
+
+import org.bukkit.configuration.file.FileConfiguration;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Optional;
+
+public abstract class FileConfigValue {
+
+ protected @Nullable FileConfig source;
+ private final @NotNull String sectionName;
+
+ public FileConfigValue(@NotNull String sectionName) {
+ this(null, sectionName);
+ }
+
+ public FileConfigValue(@Nullable FileConfig source, @NotNull String sectionName) {
+ this.source = source;
+ this.sectionName = sectionName;
+ }
+
+ public @NotNull String getSectionName() {
+ return sectionName;
+ }
+
+ public void save() {
+ getSourceOptional().ifPresent(FileConfig::save);
+ }
+
+ public @Nullable FileConfig getSource() {
+ return source == null ? FileConfig.getPluginConfiguration() : source;
+ }
+
+ public Optional getSourceOptional() {
+ return Optional.ofNullable(getSource());
+ }
+
+ public Optional getConfigOptional() {
+ return getSourceOptional().map(FileConfig::getConfig);
+ }
+
+ public static @Nullable V castValue(@Nullable Object val, @NotNull Class clazz) {
+ return castValue(val, clazz, null);
+ }
+
+ public static @Nullable V castValue(@Nullable Object val, @NotNull Class clazz, @Nullable V defaultValue) {
+ return clazz.isInstance(val) ? clazz.cast(val) : defaultValue;
+ }
+
+}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSectionCast.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSectionCast.java
deleted file mode 100644
index b1f9609..0000000
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSectionCast.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cc.carm.lib.easyplugin.configuration.impl;
-
-import cc.carm.lib.easyplugin.configuration.file.FileConfig;
-import org.bukkit.configuration.ConfigurationSection;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.function.Function;
-
-public class ConfigSectionCast {
-
- @Nullable FileConfig source;
-
- @NotNull String configSection;
- @NotNull Function valueCast;
- @Nullable V defaultValue;
-
- V valueCache;
- long updateTime;
-
- public ConfigSectionCast(@NotNull String configSection, @NotNull Function valueCast) {
- this(configSection, valueCast, null);
- }
-
- public ConfigSectionCast(@NotNull String configSection,
- @NotNull Function valueCast,
- @Nullable V defaultValue) {
- this(null, configSection, valueCast, defaultValue);
- }
-
- public ConfigSectionCast(@Nullable FileConfig source, @NotNull String configSection,
- @NotNull Function valueCast,
- @Nullable V defaultValue) {
- this.source = source;
- this.configSection = configSection;
- this.valueCast = valueCast;
- this.defaultValue = defaultValue;
- }
-
-
- public @Nullable V get() {
- FileConfig source = getSource();
- if (source == null) return defaultValue;
-
- if (valueCache != null && !source.isExpired(this.updateTime)) return valueCache;
- if (!source.getConfig().contains(this.configSection)) return defaultValue;
- try {
- V finalValue = this.valueCast.apply(source.getConfig().getConfigurationSection(this.configSection));
- if (finalValue != null) {
- this.valueCache = finalValue;
- this.updateTime = System.currentTimeMillis();
- return finalValue;
- } else {
- return defaultValue;
- }
- } catch (Exception ignore) {
- return defaultValue;
- }
- }
-
- public void set(ConfigurationSection section) {
-
- }
-
- public void save() {
- if (getSource() != null) getSource().save();
- }
-
- public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getPluginConfiguration() : source;
- }
-
-}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSound.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSound.java
index 78c2aff..8ad6841 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSound.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigSound.java
@@ -1,5 +1,6 @@
package cc.carm.lib.easyplugin.configuration.impl;
+import cc.carm.lib.easyplugin.configuration.cast.ConfigStringCast;
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
import org.bukkit.Bukkit;
import org.bukkit.Sound;
@@ -7,6 +8,8 @@ import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.function.Function;
+
public class ConfigSound extends ConfigStringCast {
public ConfigSound(@NotNull String configSection) {
@@ -18,30 +21,9 @@ public class ConfigSound extends ConfigStringCast {
this(null, configSection, defaultValue);
}
- public ConfigSound(@Nullable FileConfig source, @NotNull String configSection, @Nullable Sound defaultValue) {
- super(source, configSection, string -> {
- Sound finalSound = defaultValue;
- float volume = 1;
- float pitch = 1;
-
- if (string != null) {
- String[] args = string.contains(":") ? string.split(":") : new String[]{string};
- try {
- if (args.length >= 1) finalSound = Sound.valueOf(args[0]);
- if (args.length >= 2) volume = Float.parseFloat(args[1]);
- if (args.length >= 3) pitch = Float.parseFloat(args[2]);
- } catch (Exception exception) {
- Bukkit.getLogger().severe("声音 " + configSection + " 配置错误,不存在 " + string + " ,请检查。");
- Bukkit.getLogger().severe("In " + configSection + " (" + string + ") doesn't match any sound name.");
- }
- }
-
- if (finalSound != null) {
- return new SoundData(finalSound, volume, pitch);
- } else {
- return null;
- }
- }, defaultValue == null ? null : new SoundData(defaultValue));
+ public ConfigSound(@Nullable FileConfig source, @NotNull String configSection,
+ @Nullable Sound defaultValue) {
+ super(source, configSection, getSoundParser(), defaultValue == null ? null : new SoundData(defaultValue));
}
public void set(@Nullable SoundData value) {
@@ -73,12 +55,38 @@ public class ConfigSound extends ConfigStringCast {
if (data != null) data.play(player);
}
- public void save() {
- if (getSource() != null) getSource().save();
+ public void playToAll() {
+ SoundData data = get();
+ if (data != null) {
+ Bukkit.getOnlinePlayers().forEach(data::play);
+ }
}
- public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getPluginConfiguration() : source;
+ public static @NotNull Function<@Nullable String, @Nullable SoundData> getSoundParser() {
+ return string -> {
+ if (string == null) return null;
+
+ Sound finalSound = null;
+ float volume = 1;
+ float pitch = 1;
+
+ String[] args = string.contains(":") ? string.split(":") : new String[]{string};
+ try {
+ if (args.length >= 1) finalSound = Sound.valueOf(args[0]);
+ if (args.length >= 2) volume = Float.parseFloat(args[1]);
+ if (args.length >= 3) pitch = Float.parseFloat(args[2]);
+ } catch (Exception exception) {
+ Bukkit.getLogger().severe("声音 " + string + " 配置错误,不存在同名声音,请检查。");
+ Bukkit.getLogger().severe("Sound " + string + " doesn't match any sound name.");
+ }
+
+
+ if (finalSound != null) {
+ return new SoundData(finalSound, volume, pitch);
+ } else {
+ return null;
+ }
+ };
}
public static class SoundData {
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigStringCast.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigStringCast.java
deleted file mode 100644
index 4bdd215..0000000
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigStringCast.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package cc.carm.lib.easyplugin.configuration.impl;
-
-import cc.carm.lib.easyplugin.configuration.file.FileConfig;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.function.Function;
-
-public class ConfigStringCast {
-
- @Nullable FileConfig source;
-
- @NotNull String configSection;
- @NotNull Function valueCast;
-
- @Nullable V defaultValue;
-
- V valueCache;
- long updateTime;
-
- public ConfigStringCast(@NotNull String configSection, @NotNull Function valueCast) {
- this(configSection, valueCast, null);
- }
-
- public ConfigStringCast(@NotNull String configSection, @NotNull Function valueCast, @Nullable V defaultValue) {
- this(null, configSection, valueCast, defaultValue);
- }
-
- public ConfigStringCast(@Nullable FileConfig source, @NotNull String configSection,
- @NotNull Function valueCast, @Nullable V defaultValue) {
- this.source = source;
- this.configSection = configSection;
- this.valueCast = valueCast;
- this.defaultValue = defaultValue;
- }
-
- public @Nullable V get() {
- FileConfig source = getSource();
- if (source == null) return defaultValue;
-
- if (valueCache != null && !source.isExpired(this.updateTime)) return valueCache;
- if (!source.getConfig().contains(this.configSection)) return defaultValue;
- try {
- V finalValue = this.valueCast.apply(source.getConfig().getString(this.configSection));
- if (finalValue != null) {
- this.valueCache = finalValue;
- this.updateTime = System.currentTimeMillis();
- return finalValue;
- } else {
- return defaultValue;
- }
- } catch (Exception ignore) {
- return defaultValue;
- }
- }
-
- public void set(@Nullable String value) {
- FileConfig source = getSource();
- if (source != null) {
- source.getConfig().set(this.configSection, value);
- source.save();
- }
- }
-
- public void save() {
- if (getSource() != null) {
- getSource().save();
- }
- }
-
- public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getPluginConfiguration() : source;
- }
-
-
-}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessage.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessage.java
index 8ae88ec..95e0aac 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessage.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessage.java
@@ -4,47 +4,50 @@ package cc.carm.lib.easyplugin.configuration.message;
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
import cc.carm.lib.easyplugin.configuration.values.ConfigValue;
import cc.carm.lib.easyplugin.utils.MessageUtils;
+import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
-import java.util.List;
public class ConfigMessage extends ConfigValue {
String[] messageParams;
- public ConfigMessage(@NotNull String configSection) {
- this(configSection, null);
+ public ConfigMessage(@NotNull String sectionName) {
+ this(sectionName, null);
}
- public ConfigMessage(@NotNull String configSection, @Nullable String defaultValue) {
- this(configSection, defaultValue, null);
+ public ConfigMessage(@NotNull String sectionName, @Nullable String defaultValue) {
+ this(sectionName, defaultValue, null);
}
- public ConfigMessage(@NotNull String configSection, @Nullable String defaultValue, String[] messageParams) {
- super(null, configSection, String.class, defaultValue);
+ public ConfigMessage(@NotNull String sectionName, @Nullable String defaultValue, String[] messageParams) {
+ super(null, sectionName, String.class, defaultValue);
this.messageParams = messageParams;
}
- public ConfigMessage(@Nullable FileConfig config, @NotNull String configSection,
+ public ConfigMessage(@Nullable FileConfig source, @NotNull String sectionName,
@Nullable String defaultValue, String[] messageParams) {
- super(config, configSection, String.class, defaultValue);
+ super(source, sectionName, String.class, defaultValue);
this.messageParams = messageParams;
}
+ public @NotNull String get(CommandSender sender) {
+ return MessageUtils.setPlaceholders(sender, get());
+ }
+
public @NotNull String get(CommandSender sender, Object[] values) {
if (messageParams != null) {
return get(sender, messageParams, values);
} else {
- return get(sender, new String[0], new Object[0]);
+ return get(sender);
}
}
public @NotNull String get(CommandSender sender, String[] params, Object[] values) {
- List messages = MessageUtils.setPlaceholders(sender, Collections.singletonList(get()), params, values);
- return messages != null && !messages.isEmpty() ? messages.get(0) : "";
+ return MessageUtils.setPlaceholders(sender, get(), params, values);
}
public void send(CommandSender sender) {
@@ -64,6 +67,23 @@ public class ConfigMessage extends ConfigValue {
MessageUtils.sendWithPlaceholders(sender, Collections.singletonList(get()), params, values);
}
+ public void sendToAll() {
+ Bukkit.getOnlinePlayers().forEach(player -> MessageUtils.sendWithPlaceholders(player, Collections.singletonList(get())));
+ }
+
+ public void sendToAll(Object[] values) {
+ if (messageParams != null) {
+ sendToAll(messageParams, values);
+ } else {
+ sendToAll();
+ }
+ }
+
+ public void sendToAll(String[] params, Object[] values) {
+ Bukkit.getOnlinePlayers().forEach(pl -> MessageUtils.sendWithPlaceholders(pl, Collections.singletonList(get()), params, values));
+ }
+
+ @Override
public @Nullable FileConfig getSource() {
return source == null ? FileConfig.getMessageConfiguration() : source;
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessageList.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessageList.java
index 6f6b545..2b3ced5 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessageList.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/message/ConfigMessageList.java
@@ -4,6 +4,7 @@ package cc.carm.lib.easyplugin.configuration.message;
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
import cc.carm.lib.easyplugin.configuration.values.ConfigValueList;
import cc.carm.lib.easyplugin.utils.MessageUtils;
+import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -14,22 +15,22 @@ public class ConfigMessageList extends ConfigValueList {
@Nullable String[] messageParams;
- public ConfigMessageList(String configSection) {
- this(configSection, new String[0]);
+ public ConfigMessageList(String sectionName) {
+ this(sectionName, new String[0]);
}
- public ConfigMessageList(@NotNull String configSection, @Nullable String[] defaultValue) {
- this(configSection, defaultValue, null);
+ public ConfigMessageList(@NotNull String sectionName, @Nullable String[] defaultValue) {
+ this(sectionName, defaultValue, null);
}
- public ConfigMessageList(@NotNull String configSection, @Nullable String[] defaultValue, String[] messageParams) {
- super(null, configSection, String.class, defaultValue);
+ public ConfigMessageList(@NotNull String sectionName, @Nullable String[] defaultValue, String[] messageParams) {
+ super(null, sectionName, String.class, defaultValue);
this.messageParams = messageParams;
}
- public ConfigMessageList(@Nullable FileConfig config, @NotNull String configSection,
+ public ConfigMessageList(@Nullable FileConfig source, @NotNull String sectionName,
@Nullable String[] defaultValue, String[] messageParams) {
- super(config, configSection, String.class, defaultValue);
+ super(source, sectionName, String.class, defaultValue);
this.messageParams = messageParams;
}
@@ -45,7 +46,6 @@ public class ConfigMessageList extends ConfigValueList {
}
}
-
public @NotNull List get(@Nullable CommandSender sender, String[] params, Object[] values) {
return MessageUtils.setPlaceholders(sender, get(), params, values);
}
@@ -62,6 +62,22 @@ public class ConfigMessageList extends ConfigValueList {
}
}
+ public void sendToAll(String[] params, Object[] values) {
+ Bukkit.getOnlinePlayers().forEach(pl -> MessageUtils.sendWithPlaceholders(pl, get(), params, values));
+ }
+
+ public void sendToAll() {
+ Bukkit.getOnlinePlayers().forEach(player -> MessageUtils.sendWithPlaceholders(player, get()));
+ }
+
+ public void sendToAll(Object[] values) {
+ if (messageParams != null) {
+ sendToAll(messageParams, values);
+ } else {
+ sendToAll();
+ }
+ }
+
public void send(@Nullable CommandSender sender, String[] params, Object[] values) {
MessageUtils.sendWithPlaceholders(sender, get(), params, values);
}
@@ -70,4 +86,5 @@ public class ConfigMessageList extends ConfigValueList {
public @Nullable FileConfig getSource() {
return source == null ? FileConfig.getMessageConfiguration() : source;
}
+
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java
index 9a467e0..948e704 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValue.java
@@ -1,64 +1,54 @@
package cc.carm.lib.easyplugin.configuration.values;
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
+import cc.carm.lib.easyplugin.configuration.file.FileConfigValue;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-public class ConfigValue {
+import java.util.Optional;
- protected @Nullable FileConfig source;
-
- private final @NotNull String configSection;
+public class ConfigValue extends FileConfigValue {
private final @NotNull Class clazz;
@Nullable V defaultValue;
- public ConfigValue(@NotNull String configSection, @NotNull Class clazz) {
- this(configSection, clazz, null);
+ public ConfigValue(@NotNull String sectionName,
+ @NotNull Class clazz) {
+ this(sectionName, clazz, null);
}
- public ConfigValue(@NotNull String configSection, @NotNull Class clazz, @Nullable V defaultValue) {
- this(null, configSection, clazz, defaultValue);
+ public ConfigValue(@NotNull String sectionName,
+ @NotNull Class clazz,
+ @Nullable V defaultValue) {
+ this(null, sectionName, clazz, defaultValue);
}
- public ConfigValue(@Nullable FileConfig source, @NotNull String configSection,
- @NotNull Class clazz, @Nullable V defaultValue) {
- this.source = source;
- this.configSection = configSection;
+ public ConfigValue(@Nullable FileConfig source, @NotNull String sectionName,
+ @NotNull Class clazz,
+ @Nullable V defaultValue) {
+ super(source, sectionName);
this.clazz = clazz;
this.defaultValue = defaultValue;
}
public V get() {
- FileConfig source = getSource();
- if (source == null) return this.defaultValue;
+ return getConfigOptional()
+ .map(config -> castValue(config.get(getSectionName()), clazz, this.defaultValue))
+ .orElse(setDefault()); // 如果没有默认值,就把配置写进去,便于配置
+ }
- if (source.getConfig().contains(this.configSection)) {
- Object val = source.getConfig().get(this.configSection, this.defaultValue);
- return this.clazz.isInstance(val) ? this.clazz.cast(val) : this.defaultValue;
- } else {
- // 如果没有默认值,就把配置写进去,便于配置
- return setDefault();
- }
+ public @NotNull Optional getOptional() {
+ return Optional.ofNullable(get());
}
public void set(@Nullable V value) {
- FileConfig source = getSource();
- if (source == null) return;
-
- source.getConfig().set(this.configSection, value);
- source.save();
- }
-
- public void save() {
- if (getSource() != null) getSource().save();
+ getSourceOptional().ifPresent(source -> {
+ source.getConfig().set(getSectionName(), value);
+ source.save();
+ });
}
public V setDefault() {
- set(this.defaultValue);
+ if (this.defaultValue != null) set(this.defaultValue);
return this.defaultValue;
}
-
- public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getPluginConfiguration() : source;
- }
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java
index ce24309..32ffcfa 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueList.java
@@ -2,78 +2,66 @@ package cc.carm.lib.easyplugin.configuration.values;
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
+import cc.carm.lib.easyplugin.configuration.file.FileConfigValue;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
-public class ConfigValueList {
+public class ConfigValueList extends FileConfigValue {
- protected @Nullable FileConfig source;
-
- private final @NotNull String configSection;
private final @NotNull Class clazz;
@Nullable V[] defaultValue;
- public ConfigValueList(@NotNull String configSection, @NotNull Class clazz) {
- this(configSection, clazz, null);
+ public ConfigValueList(@NotNull String sectionName,
+ @NotNull Class clazz) {
+ this(sectionName, clazz, null);
}
- public ConfigValueList(@NotNull String configSection, @NotNull Class clazz, @Nullable V[] defaultValue) {
- this(null, configSection, clazz, defaultValue);
+ public ConfigValueList(@NotNull String sectionName,
+ @NotNull Class clazz,
+ @Nullable V[] defaultValue) {
+ this(null, sectionName, clazz, defaultValue);
}
- public ConfigValueList(@Nullable FileConfig configuration, @NotNull String configSection, Class clazz) {
- this(configuration, configSection, clazz, null);
+ public ConfigValueList(@Nullable FileConfig configuration, @NotNull String sectionName,
+ Class clazz) {
+ this(configuration, sectionName, clazz, null);
}
- public ConfigValueList(@Nullable FileConfig configuration, @NotNull String configSection,
- @NotNull Class clazz, @Nullable V[] defaultValue) {
- this.source = configuration;
- this.configSection = configSection;
+ public ConfigValueList(@Nullable FileConfig configuration, @NotNull String sectionName,
+ @NotNull Class clazz,
+ @Nullable V[] defaultValue) {
+ super(configuration, sectionName);
this.clazz = clazz;
this.defaultValue = defaultValue;
}
public @NotNull ArrayList get() {
- FileConfig source = getSource();
- if (source == null) return new ArrayList<>();
+ return getConfigOptional()
+ .map(configuration -> configuration.getList(getSectionName()))
+ .map(list -> list.stream()
+ .map(o -> castValue(o, this.clazz))
+ .filter(Objects::nonNull)
+ .collect(Collectors.toCollection(ArrayList::new)))
+ .orElse(getDefaultList());
+ }
- List> list = source.getConfig().getList(this.configSection);
- if (list == null) {
- if (defaultValue != null) {
- return new ArrayList<>(Arrays.asList(defaultValue));
- } else {
- return new ArrayList<>();
- }
- } else {
- ArrayList result = new ArrayList<>();
+ public @NotNull ArrayList getDefaultList() {
+ return defaultValue == null ? new ArrayList<>() : new ArrayList<>(Arrays.asList(defaultValue));
- for (Object object : list) {
- if (this.clazz.isInstance(object)) {
- result.add(this.clazz.cast(object));
- }
- }
- return result;
- }
}
public void set(@Nullable ArrayList value) {
- FileConfig source = getSource();
- if (source == null) return;
- source.getConfig().set(this.configSection, value);
- this.save();
+ getSourceOptional().ifPresent(source -> {
+ source.getConfig().set(getSectionName(), value);
+ source.save();
+ });
}
- public void save() {
- if (getSource() != null) getSource().save();
- }
-
- public @Nullable FileConfig getSource() {
- return this.source == null ? FileConfig.getPluginConfiguration() : this.source;
- }
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java
index cbebc24..9087c6d 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/values/ConfigValueMap.java
@@ -1,88 +1,59 @@
package cc.carm.lib.easyplugin.configuration.values;
import cc.carm.lib.easyplugin.configuration.file.FileConfig;
-import org.bukkit.configuration.ConfigurationSection;
+import cc.carm.lib.easyplugin.configuration.file.FileConfigCachedValue;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
-import java.util.Set;
import java.util.function.Function;
-public class ConfigValueMap {
-
- @Nullable FileConfig source;
-
- @NotNull String configSection;
+public class ConfigValueMap extends FileConfigCachedValue