diff --git a/easyplugin-all/pom.xml b/easyplugin-all/pom.xml
index cb08c59..bac7149 100644
--- a/easyplugin-all/pom.xml
+++ b/easyplugin-all/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.3.3
+ 1.3.4
4.0.0
diff --git a/easyplugin-bom/pom.xml b/easyplugin-bom/pom.xml
index a8d9a7a..2a7b15d 100644
--- a/easyplugin-bom/pom.xml
+++ b/easyplugin-bom/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.3.3
+ 1.3.4
4.0.0
diff --git a/easyplugin-command/pom.xml b/easyplugin-command/pom.xml
index 14f510a..01949d0 100644
--- a/easyplugin-command/pom.xml
+++ b/easyplugin-command/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.3.3
+ 1.3.4
4.0.0
diff --git a/easyplugin-common/pom.xml b/easyplugin-common/pom.xml
index 12aa889..ceee368 100644
--- a/easyplugin-common/pom.xml
+++ b/easyplugin-common/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.3.3
+ 1.3.4
4.0.0
diff --git a/easyplugin-configuration/pom.xml b/easyplugin-configuration/pom.xml
index 3cc46a7..43e302a 100644
--- a/easyplugin-configuration/pom.xml
+++ b/easyplugin-configuration/pom.xml
@@ -5,7 +5,7 @@
easyplugin-parent
cc.carm.lib
- 1.3.3
+ 1.3.4
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
index 079549f..a991bbf 100644
--- 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
@@ -8,6 +8,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Optional;
import java.util.function.Function;
+import java.util.function.Supplier;
public class ConfigSectionCast extends FileConfigCachedValue {
@@ -22,13 +23,19 @@ public class ConfigSectionCast extends FileConfigCachedValue {
public ConfigSectionCast(@NotNull String sectionName,
@NotNull Function valueCast,
@Nullable V defaultValue) {
- this(null, sectionName, valueCast, defaultValue);
+ this((Supplier) null, sectionName, valueCast, defaultValue);
}
public ConfigSectionCast(@Nullable FileConfig source, @NotNull String sectionName,
@NotNull Function valueCast,
@Nullable V defaultValue) {
- super(source, sectionName);
+ this(source == null ? null : () -> source, sectionName, valueCast, defaultValue);
+ }
+
+ public ConfigSectionCast(@Nullable Supplier provider, @NotNull String sectionName,
+ @NotNull Function valueCast,
+ @Nullable V defaultValue) {
+ super(provider, sectionName);
this.valueCast = valueCast;
this.defaultValue = defaultValue;
}
@@ -51,7 +58,6 @@ public class ConfigSectionCast extends FileConfigCachedValue {
}
-
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
index db34d90..4e7d194 100644
--- 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
@@ -7,6 +7,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.Optional;
import java.util.function.Function;
+import java.util.function.Supplier;
public class ConfigStringCast extends FileConfigCachedValue {
@@ -21,13 +22,19 @@ public class ConfigStringCast extends FileConfigCachedValue {
public ConfigStringCast(@NotNull String configSection,
@NotNull Function valueCast,
@Nullable V defaultValue) {
- this(null, configSection, valueCast, defaultValue);
+ this((Supplier) null, configSection, valueCast, defaultValue);
}
public ConfigStringCast(@Nullable FileConfig source, @NotNull String sectionName,
@NotNull Function valueCast,
@Nullable V defaultValue) {
- super(source, sectionName);
+ this(source == null ? null : () -> source, sectionName, valueCast, defaultValue);
+ }
+
+ public ConfigStringCast(@Nullable Supplier provider, @NotNull String sectionName,
+ @NotNull Function valueCast,
+ @Nullable V defaultValue) {
+ super(provider, sectionName);
this.valueCast = valueCast;
this.defaultValue = defaultValue;
}
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
index 9a9ad3f..926671f 100644
--- 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
@@ -3,6 +3,8 @@ package cc.carm.lib.easyplugin.configuration.file;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.function.Supplier;
+
public abstract class FileConfigCachedValue extends FileConfigValue {
protected V cachedValue;
@@ -12,10 +14,10 @@ public abstract class FileConfigCachedValue extends FileConfigValue {
super(sectionName);
}
- public FileConfigCachedValue(@Nullable FileConfig source, @NotNull String sectionName) {
- super(source, sectionName);
+ public FileConfigCachedValue(@Nullable Supplier provider, @NotNull String sectionName) {
+ super(provider, sectionName);
}
-
+
public V updateCache(V value) {
this.updateTime = System.currentTimeMillis();
this.cachedValue = value;
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
index 1d1205b..a15bc22 100644
--- 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
@@ -6,18 +6,19 @@ import org.jetbrains.annotations.Nullable;
import java.util.Map;
import java.util.Optional;
+import java.util.function.Supplier;
public abstract class FileConfigValue {
- protected @Nullable FileConfig source;
+ protected @Nullable Supplier provider;
private final @NotNull String sectionName;
public FileConfigValue(@NotNull String sectionName) {
this(null, sectionName);
}
- public FileConfigValue(@Nullable FileConfig source, @NotNull String sectionName) {
- this.source = source;
+ public FileConfigValue(@Nullable Supplier provider, @NotNull String sectionName) {
+ this.provider = provider;
this.sectionName = sectionName;
}
@@ -52,7 +53,7 @@ public abstract class FileConfigValue {
}
public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getPluginConfiguration() : source;
+ return provider == null || provider.get() == null ? defaultSource() : provider.get();
}
public Optional getSourceOptional() {
@@ -71,4 +72,8 @@ public abstract class FileConfigValue {
return clazz.isInstance(val) ? clazz.cast(val) : defaultValue;
}
+ public FileConfig defaultSource() {
+ return FileConfig.getPluginConfiguration();
+ }
+
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigItem.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigItem.java
new file mode 100644
index 0000000..dcf41e6
--- /dev/null
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/impl/ConfigItem.java
@@ -0,0 +1,152 @@
+package cc.carm.lib.easyplugin.configuration.impl;
+
+import cc.carm.lib.easyplugin.configuration.cast.ConfigSectionCast;
+import cc.carm.lib.easyplugin.configuration.file.FileConfig;
+import cc.carm.lib.easyplugin.utils.ItemStackFactory;
+import cc.carm.lib.easyplugin.utils.MessageUtils;
+import org.bukkit.Material;
+import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class ConfigItem extends ConfigSectionCast {
+
+ @Nullable
+ String[] itemParams;
+
+ public ConfigItem(@NotNull String configSection) {
+ this(configSection, null, null);
+ }
+
+ public ConfigItem(@NotNull String configSection,
+ @Nullable String[] itemParams) {
+ this(configSection, itemParams, null);
+ }
+
+ public ConfigItem(@NotNull String configSection,
+ @Nullable ItemConfiguration defaultValue) {
+ this(configSection, null, defaultValue);
+ }
+
+ public ConfigItem(@NotNull String sectionName,
+ @Nullable String[] itemParams,
+ @Nullable ItemConfiguration defaultValue) {
+ this(null, sectionName, itemParams, defaultValue);
+ }
+
+ public ConfigItem(@Nullable Supplier provider,
+ @NotNull String sectionName,
+ @Nullable String[] itemParams,
+ @Nullable ItemConfiguration defaultValue) {
+ this(provider, sectionName, ConfigItem::parseItemConfiguration, itemParams, defaultValue);
+ }
+
+ public ConfigItem(@Nullable Supplier provider,
+ @NotNull String sectionName,
+ @NotNull Function valueCast,
+ @Nullable String[] itemParams,
+ @Nullable ItemConfiguration defaultValue) {
+ super(provider, sectionName, valueCast, defaultValue);
+ this.itemParams = itemParams;
+ }
+
+ public ItemStack getItem(@NotNull Player player) {
+ return getItem(player, null);
+ }
+
+ public ItemStack getItem(@NotNull Player player,
+ @Nullable Object[] values) {
+ if (values != null && itemParams != null && itemParams.length > 0) {
+ return getItem(player, itemParams, values);
+ } else {
+ return getItem(player, null, null);
+ }
+ }
+
+ public ItemStack getItem(@NotNull Player player,
+ @Nullable String[] params,
+ @Nullable Object[] values) {
+ params = params == null ? new String[0] : params;
+ values = values == null ? new Object[0] : values;
+
+ ItemConfiguration configuration = get();
+ if (configuration == null) return null;
+
+ ItemStackFactory factory = new ItemStackFactory(configuration.getType());
+ if (configuration.getName() != null) {
+ factory.setDisplayName(MessageUtils.setCustomParams(configuration.getName(), params, values));
+ }
+
+ if (configuration.getLore() != null) {
+ factory.setLore(MessageUtils.setCustomParams(configuration.getLore(), params, values));
+ }
+
+ return factory.toItemStack();
+ }
+
+ public static class ItemConfiguration {
+
+ @NotNull Material type;
+ @Nullable String name;
+ @Nullable List lore;
+
+ public ItemConfiguration(@NotNull Material type, @Nullable String name, @Nullable List lore) {
+ this.type = type;
+ this.name = name;
+ this.lore = lore;
+ }
+
+
+ public @NotNull Material getType() {
+ return type;
+ }
+
+ public @Nullable String getName() {
+ return name;
+ }
+
+
+ public @Nullable List getLore() {
+ return lore;
+ }
+
+ public static ItemConfiguration readFrom(@NotNull ConfigurationSection section) {
+ String typeName = section.getString("type");
+ if (typeName == null) return null;
+ Material type = Material.matchMaterial(typeName);
+ if (type == null) return null;
+ String name = section.getString("name");
+ List lore = section.getStringList("lore");
+ return new ItemConfiguration(type, name, lore);
+ }
+ }
+
+ private static ItemConfiguration parseItemConfiguration(@NotNull ConfigurationSection section) {
+ return ItemConfiguration.readFrom(section);
+ }
+
+ @NotNull
+ public static ItemConfiguration create(@NotNull Material type) {
+ return create(type, null);
+ }
+
+ @NotNull
+ public static ItemConfiguration create(@NotNull Material type,
+ @Nullable String name) {
+ return create(type, name, null);
+ }
+
+ @NotNull
+ public static ItemConfiguration create(@NotNull Material type,
+ @Nullable String name,
+ @Nullable String[] lore) {
+ return new ItemConfiguration(type, name, lore == null ? null : Arrays.asList(lore));
+ }
+}
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 8ad6841..e82b43d 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
@@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.function.Function;
+import java.util.function.Supplier;
public class ConfigSound extends ConfigStringCast {
@@ -18,12 +19,20 @@ public class ConfigSound extends ConfigStringCast {
public ConfigSound(@NotNull String configSection,
@Nullable Sound defaultValue) {
- this(null, configSection, defaultValue);
+ this((Supplier) null, configSection, defaultValue);
}
public ConfigSound(@Nullable FileConfig source, @NotNull String configSection,
@Nullable Sound defaultValue) {
- super(source, configSection, getSoundParser(), defaultValue == null ? null : new SoundData(defaultValue));
+ this(source == null ? null : () -> source, configSection, defaultValue);
+ }
+
+ public ConfigSound(@Nullable Supplier provider, @NotNull String configSection,
+ @Nullable Sound defaultValue) {
+ super(provider, configSection,
+ getSoundParser(),
+ defaultValue == null ? null : new SoundData(defaultValue)
+ );
}
public void set(@Nullable SoundData value) {
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessage.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessage.java
index 3c30c08..e0cb4df 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessage.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessage.java
@@ -13,93 +13,93 @@ import java.util.Collections;
public class EasyMessage {
- @Nullable ConfigValue configValue;
+ @Nullable ConfigValue configValue;
- @Nullable String defaultValue;
- @Nullable String[] messageParams;
+ @Nullable String defaultValue;
+ @Nullable String[] messageParams;
- public EasyMessage() {
- this(null);
- }
+ public EasyMessage() {
+ this(null);
+ }
- public EasyMessage(@Nullable String defaultValue) {
- this(defaultValue, null);
- }
+ public EasyMessage(@Nullable String defaultValue) {
+ this(defaultValue, null);
+ }
- public EasyMessage(@Nullable String defaultValue, @Nullable String[] messageParams) {
- this.defaultValue = defaultValue;
- this.messageParams = messageParams;
- }
+ public EasyMessage(@Nullable String defaultValue, @Nullable String[] messageParams) {
+ this.defaultValue = defaultValue;
+ this.messageParams = messageParams;
+ }
- public void initialize(@NotNull FileConfig sourceConfig, @NotNull String sectionName) {
- this.configValue = new ConfigValue<>(sourceConfig, sectionName, String.class, getDefaultValue());
- }
+ public void initialize(@NotNull FileConfig source, @NotNull String sectionName) {
+ this.configValue = new ConfigValue<>(() -> source, sectionName, String.class, getDefaultValue());
+ }
- private @Nullable String getDefaultValue() {
- return defaultValue;
- }
+ private @Nullable String getDefaultValue() {
+ return defaultValue;
+ }
- private @Nullable String[] getMessageParams() {
- return messageParams;
- }
+ private @Nullable String[] getMessageParams() {
+ return messageParams;
+ }
- private @NotNull String getDefaultMessages() {
- if (getDefaultValue() == null) return "";
- else return getDefaultValue();
- }
+ private @NotNull String getDefaultMessages() {
+ if (getDefaultValue() == null) return "";
+ else return getDefaultValue();
+ }
- private @NotNull String getMessages() {
- if (configValue == null) {
- return getDefaultMessages();
- } else {
- return configValue.get();
- }
- }
+ private @NotNull String getMessages() {
+ if (configValue == null) {
+ return getDefaultMessages();
+ } else {
+ return configValue.get();
+ }
+ }
- public @NotNull String get(@Nullable CommandSender sender) {
- return get(sender, null);
- }
+ public @NotNull String get(@Nullable CommandSender sender) {
+ return get(sender, null);
+ }
- public @NotNull String get(@Nullable CommandSender sender, @Nullable Object[] values) {
- return get(sender, getMessageParams(), values);
- }
+ public @NotNull String get(@Nullable CommandSender sender, @Nullable Object[] values) {
+ return get(sender, getMessageParams(), values);
+ }
- public @NotNull String get(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
- if (sender == null) return getMessages();
- if (params == null || values == null) {
- return ColorParser.parse(MessageUtils.setPlaceholders(sender, getMessages()));
- } else {
- return ColorParser.parse(MessageUtils.setPlaceholders(sender, getMessages(), params, values));
- }
- }
+ public @NotNull String get(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
+ if (sender == null) return getMessages();
+ if (params == null || values == null) {
+ return ColorParser.parse(MessageUtils.setPlaceholders(sender, getMessages()));
+ } else {
+ return ColorParser.parse(MessageUtils.setPlaceholders(sender, getMessages(), params, values));
+ }
+ }
- public void send(@Nullable CommandSender sender) {
- send(sender, null);
- }
+ public void send(@Nullable CommandSender sender) {
+ send(sender, null);
+ }
- public void send(@Nullable CommandSender sender, @Nullable Object[] values) {
- send(sender, getMessageParams(), values);
- }
+ public void send(@Nullable CommandSender sender, @Nullable Object[] values) {
+ send(sender, getMessageParams(), values);
+ }
- public void send(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
- if (params == null || values == null) {
- MessageUtils.sendWithPlaceholders(sender, getMessages());
- } else {
- MessageUtils.sendWithPlaceholders(sender, Collections.singletonList(getMessages()), params, values);
- }
- }
+ public void send(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
+ if (params == null || values == null) {
+ MessageUtils.sendWithPlaceholders(sender, getMessages());
+ } else {
+ MessageUtils.sendWithPlaceholders(sender, Collections.singletonList(getMessages()), params, values);
+ }
+ }
- public void sendToAll() {
- sendToAll(null);
- }
+ public void sendToAll() {
+ sendToAll(null);
+ }
- public void sendToAll(@Nullable Object[] values) {
- sendToAll(messageParams, values);
- }
+ public void sendToAll(@Nullable Object[] values) {
+ sendToAll(messageParams, values);
+ }
- public void sendToAll(@Nullable String[] params, @Nullable Object[] values) {
- Bukkit.getOnlinePlayers().forEach(pl -> send(pl, params, values));
- }
+ public void sendToAll(@Nullable String[] params, @Nullable Object[] values) {
+ Bukkit.getOnlinePlayers().forEach(pl -> send(pl, params, values));
+ }
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessageList.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessageList.java
index 6dbb288..9fb202e 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessageList.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/EasyMessageList.java
@@ -15,96 +15,96 @@ import java.util.List;
public class EasyMessageList {
- @Nullable ConfigValueList configValue;
+ @Nullable ConfigValueList configValue;
- @Nullable String[] defaultValue;
- @Nullable String[] messageParams;
+ @Nullable String[] defaultValue;
+ @Nullable String[] messageParams;
- public EasyMessageList() {
- this((String[]) null);
- }
+ public EasyMessageList() {
+ this((String[]) null);
+ }
- public EasyMessageList(@Nullable String... defaultValue) {
- this(defaultValue, null);
- }
+ public EasyMessageList(@Nullable String... defaultValue) {
+ this(defaultValue, null);
+ }
- public EasyMessageList(@Nullable String[] defaultValue,
- @Nullable String[] messageParams) {
- this.defaultValue = defaultValue;
- this.messageParams = messageParams;
- }
+ public EasyMessageList(@Nullable String[] defaultValue,
+ @Nullable String[] messageParams) {
+ this.defaultValue = defaultValue;
+ this.messageParams = messageParams;
+ }
- public void initialize(FileConfig sourceConfig, String sectionName) {
- configValue = new ConfigValueList<>(sourceConfig, sectionName, String.class, getDefaultValue());
- }
+ public void initialize(FileConfig sourceConfig, String sectionName) {
+ configValue = new ConfigValueList<>(() -> sourceConfig, sectionName, String.class, getDefaultValue());
+ }
- private @Nullable String[] getDefaultValue() {
- return defaultValue;
- }
+ private @Nullable String[] getDefaultValue() {
+ return defaultValue;
+ }
- @Unmodifiable
- private @NotNull List getDefaultMessages() {
- if (getDefaultValue() == null) return new ArrayList<>();
- else return Arrays.asList(getDefaultValue());
- }
+ @Unmodifiable
+ private @NotNull List getDefaultMessages() {
+ if (getDefaultValue() == null) return new ArrayList<>();
+ else return Arrays.asList(getDefaultValue());
+ }
- private @Nullable String[] getMessageParams() {
- return messageParams;
- }
+ private @Nullable String[] getMessageParams() {
+ return messageParams;
+ }
- private @NotNull List getMessages() {
- if (configValue == null) {
- return getDefaultMessages();
- } else {
- return configValue.get();
- }
- }
+ private @NotNull List getMessages() {
+ if (configValue == null) {
+ return getDefaultMessages();
+ } else {
+ return configValue.get();
+ }
+ }
- public @NotNull List get(@Nullable CommandSender sender) {
- return get(sender, null);
- }
+ public @NotNull List get(@Nullable CommandSender sender) {
+ return get(sender, null);
+ }
- public @NotNull List get(@Nullable CommandSender sender, @Nullable Object[] values) {
- return get(sender, getMessageParams(), values);
- }
+ public @NotNull List get(@Nullable CommandSender sender, @Nullable Object[] values) {
+ return get(sender, getMessageParams(), values);
+ }
- public @NotNull List get(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
- if (sender == null) return getMessages();
- if (params == null || values == null) {
- return MessageUtils.setPlaceholders(sender, getMessages());
- } else {
- return MessageUtils.setPlaceholders(sender, getMessages(), params, values);
- }
- }
+ public @NotNull List get(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
+ if (sender == null) return getMessages();
+ if (params == null || values == null) {
+ return MessageUtils.setPlaceholders(sender, getMessages());
+ } else {
+ return MessageUtils.setPlaceholders(sender, getMessages(), params, values);
+ }
+ }
- public void send(@Nullable CommandSender sender) {
- send(sender, null);
- }
+ public void send(@Nullable CommandSender sender) {
+ send(sender, null);
+ }
- public void send(@Nullable CommandSender sender, @Nullable Object[] values) {
- send(sender, getMessageParams(), values);
- }
+ public void send(@Nullable CommandSender sender, @Nullable Object[] values) {
+ send(sender, getMessageParams(), values);
+ }
- public void send(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
- if (params == null || values == null) {
- MessageUtils.sendWithPlaceholders(sender, getMessages());
- } else {
- MessageUtils.sendWithPlaceholders(sender, getMessages(), params, values);
- }
- }
+ public void send(@Nullable CommandSender sender, @Nullable String[] params, @Nullable Object[] values) {
+ if (params == null || values == null) {
+ MessageUtils.sendWithPlaceholders(sender, getMessages());
+ } else {
+ MessageUtils.sendWithPlaceholders(sender, getMessages(), params, values);
+ }
+ }
- public void sendToAll() {
- sendToAll(null);
- }
+ public void sendToAll() {
+ sendToAll(null);
+ }
- public void sendToAll(@Nullable Object[] values) {
- sendToAll(messageParams, values);
- }
+ public void sendToAll(@Nullable Object[] values) {
+ sendToAll(messageParams, values);
+ }
- public void sendToAll(@Nullable String[] params, @Nullable Object[] values) {
- Bukkit.getOnlinePlayers().forEach(pl -> send(pl, params, values));
- }
+ public void sendToAll(@Nullable String[] params, @Nullable Object[] values) {
+ Bukkit.getOnlinePlayers().forEach(pl -> send(pl, params, values));
+ }
}
diff --git a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/MessagesInitializer.java b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/MessagesInitializer.java
index 839d6eb..08b2bf7 100644
--- a/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/MessagesInitializer.java
+++ b/easyplugin-configuration/src/main/java/cc/carm/lib/easyplugin/configuration/language/MessagesInitializer.java
@@ -11,90 +11,90 @@ import java.util.Arrays;
public class MessagesInitializer {
- private MessagesInitializer() {
- // 静态方法类,不应当实例化。
- }
+ private MessagesInitializer() {
+ // 静态方法类,不应当实例化。
+ }
- public static void initialize(FileConfig source, Class extends MessagesRoot> rootClazz) {
- initialize(source, rootClazz, true);
- }
+ public static void initialize(FileConfig source, Class extends MessagesRoot> rootClazz) {
+ initialize(source, rootClazz, true);
+ }
- public static void initialize(FileConfig source, Class extends MessagesRoot> rootClazz, boolean saveDefault) {
- MessagesSection sectionAnnotation = rootClazz.getAnnotation(MessagesSection.class);
+ public static void initialize(FileConfig source, Class extends MessagesRoot> rootClazz, boolean saveDefault) {
+ MessagesSection sectionAnnotation = rootClazz.getAnnotation(MessagesSection.class);
- String rootSection = null;
- if (sectionAnnotation != null && sectionAnnotation.value().length() > 1) {
- rootSection = sectionAnnotation.value();
- }
+ String rootSection = null;
+ if (sectionAnnotation != null && sectionAnnotation.value().length() > 1) {
+ rootSection = sectionAnnotation.value();
+ }
- for (Class> innerClass : rootClazz.getDeclaredClasses()) {
- initSection(source, rootSection, innerClass, saveDefault);
- }
+ for (Class> innerClass : rootClazz.getDeclaredClasses()) {
+ initSection(source, rootSection, innerClass, saveDefault);
+ }
- for (Field field : rootClazz.getFields()) {
- initMessage(source, rootSection, rootClazz, field, saveDefault);
- }
+ for (Field field : rootClazz.getFields()) {
+ initMessage(source, rootSection, rootClazz, field, saveDefault);
+ }
- if (saveDefault) {
- try {
- source.save();
- } catch (IOException ignore) {
- }
- }
+ if (saveDefault) {
+ try {
+ source.save();
+ } catch (IOException ignore) {
+ }
+ }
- }
+ }
- private static void initSection(FileConfig source, String parentSection, Class> clazz, boolean saveDefault) {
- if (!Modifier.isStatic(clazz.getModifiers()) || !Modifier.isPublic(clazz.getModifiers())) return;
+ private static void initSection(FileConfig source, String parentSection, Class> clazz, boolean saveDefault) {
+ if (!Modifier.isStatic(clazz.getModifiers()) || !Modifier.isPublic(clazz.getModifiers())) return;
- String section = getSection(clazz.getSimpleName(), parentSection, clazz.getAnnotation(MessagesSection.class));
+ String section = getSection(clazz.getSimpleName(), parentSection, clazz.getAnnotation(MessagesSection.class));
- for (Class> innerClass : clazz.getDeclaredClasses()) initSection(source, section, innerClass, saveDefault);
- for (Field field : clazz.getFields()) initMessage(source, section, clazz, field, saveDefault);
+ for (Class> innerClass : clazz.getDeclaredClasses()) initSection(source, section, innerClass, saveDefault);
+ for (Field field : clazz.getFields()) initMessage(source, section, clazz, field, saveDefault);
- }
+ }
- private static void initMessage(FileConfig source, String parentSection, Class> clazz, Field field, boolean saveDefault) {
- try {
- String section = getSection(field.getName(), parentSection, field.getAnnotation(MessagesSection.class));
+ private static void initMessage(FileConfig source, String parentSection, Class> clazz, Field field, boolean saveDefault) {
+ try {
+ String section = getSection(field.getName(), parentSection, field.getAnnotation(MessagesSection.class));
- Object object = field.get(clazz);
+ Object object = field.get(clazz);
- if (object instanceof EasyMessage) {
- EasyMessage message = ((EasyMessage) object);
- if (saveDefault && message.defaultValue != null && !source.getConfig().contains(section)) {
- source.getConfig().set(section, message.defaultValue);
- }
- message.initialize(source, section);
- } else if (object instanceof EasyMessageList) {
- EasyMessageList messageList = ((EasyMessageList) object);
+ if (object instanceof EasyMessage) {
+ EasyMessage message = ((EasyMessage) object);
+ if (saveDefault && message.defaultValue != null && !source.getConfig().contains(section)) {
+ source.getConfig().set(section, message.defaultValue);
+ }
+ message.initialize(source, section);
+ } else if (object instanceof EasyMessageList) {
+ EasyMessageList messageList = ((EasyMessageList) object);
- if (saveDefault && messageList.defaultValue != null && !source.getConfig().contains(section)) {
- source.getConfig().set(section, Arrays.asList(messageList.defaultValue));
- }
+ if (saveDefault && messageList.defaultValue != null && !source.getConfig().contains(section)) {
+ source.getConfig().set(section, Arrays.asList(messageList.defaultValue));
+ }
- messageList.initialize(source, section);
- }
+ messageList.initialize(source, section);
+ }
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ }
- private static String getSection(@NotNull String name,
- @Nullable String parentSection,
- @Nullable MessagesSection sectionAnnotation) {
- String parent = parentSection != null ? parentSection + "." : "";
- if (sectionAnnotation != null && sectionAnnotation.value().length() > 0) {
- return parent + sectionAnnotation.value();
- } else {
- return parent + getSectionName(name);
- }
- }
+ private static String getSection(@NotNull String name,
+ @Nullable String parentSection,
+ @Nullable MessagesSection sectionAnnotation) {
+ String parent = parentSection != null ? parentSection + "." : "";
+ if (sectionAnnotation != null && sectionAnnotation.value().length() > 0) {
+ return parent + sectionAnnotation.value();
+ } else {
+ return parent + getSectionName(name);
+ }
+ }
- private static String getSectionName(String codeName) {
- return codeName.toLowerCase().replace("_", "-");
- }
+ private static String getSectionName(String codeName) {
+ return codeName.toLowerCase().replace("_", "-");
+ }
}
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 95e0aac..e96726c 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
@@ -10,6 +10,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
+import java.util.function.Supplier;
public class ConfigMessage extends ConfigValue {
@@ -23,14 +24,20 @@ public class ConfigMessage extends ConfigValue {
this(sectionName, defaultValue, null);
}
- public ConfigMessage(@NotNull String sectionName, @Nullable String defaultValue, String[] messageParams) {
- super(null, sectionName, String.class, defaultValue);
- this.messageParams = messageParams;
+ public ConfigMessage(@NotNull String sectionName,
+ @Nullable String defaultValue,
+ String[] messageParams) {
+ this((Supplier) null, sectionName, defaultValue, messageParams);
}
public ConfigMessage(@Nullable FileConfig source, @NotNull String sectionName,
@Nullable String defaultValue, String[] messageParams) {
- super(source, sectionName, String.class, defaultValue);
+ this(source == null ? null : () -> source, sectionName, defaultValue, messageParams);
+ }
+
+ public ConfigMessage(@Nullable Supplier provider, @NotNull String sectionName,
+ @Nullable String defaultValue, String[] messageParams) {
+ super(provider, sectionName, String.class, defaultValue);
this.messageParams = messageParams;
}
@@ -84,9 +91,7 @@ public class ConfigMessage extends ConfigValue {
}
@Override
- public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getMessageConfiguration() : source;
+ public FileConfig defaultSource() {
+ return FileConfig.getMessageConfiguration();
}
-
-
}
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 99376cd..053d3d9 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
@@ -10,6 +10,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
+import java.util.function.Supplier;
public class ConfigMessageList extends ConfigValueList {
@@ -23,14 +24,20 @@ public class ConfigMessageList extends ConfigValueList {
this(sectionName, defaultValue, null);
}
- public ConfigMessageList(@NotNull String sectionName, @Nullable String[] defaultValue, String[] messageParams) {
- super(null, sectionName, String.class, defaultValue);
- this.messageParams = messageParams;
+ public ConfigMessageList(@NotNull String sectionName,
+ @Nullable String[] defaultValue,
+ String[] messageParams) {
+ this((Supplier) null, sectionName, defaultValue, null);
}
public ConfigMessageList(@Nullable FileConfig source, @NotNull String sectionName,
@Nullable String[] defaultValue, String[] messageParams) {
- super(source, sectionName, String.class, defaultValue);
+ this(source == null ? null : () -> source, sectionName, defaultValue, messageParams);
+ }
+
+ public ConfigMessageList(@Nullable Supplier provider, @NotNull String sectionName,
+ @Nullable String[] defaultValue, String[] messageParams) {
+ super(provider, sectionName, String.class, defaultValue);
this.messageParams = messageParams;
}
@@ -83,8 +90,7 @@ public class ConfigMessageList extends ConfigValueList {
}
@Override
- public @Nullable FileConfig getSource() {
- return source == null ? FileConfig.getMessageConfiguration() : source;
+ public FileConfig defaultSource() {
+ return FileConfig.getMessageConfiguration();
}
-
}
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 0bd66fb..8e26227 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
@@ -6,6 +6,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Optional;
+import java.util.function.Supplier;
public class ConfigValue extends FileConfigValue {
private final @NotNull Class clazz;
@@ -19,13 +20,19 @@ public class ConfigValue extends FileConfigValue {
public ConfigValue(@NotNull String sectionName,
@NotNull Class clazz,
@Nullable V defaultValue) {
- this(null, sectionName, clazz, defaultValue);
+ this((Supplier) null, sectionName, clazz, defaultValue);
}
public ConfigValue(@Nullable FileConfig source, @NotNull String sectionName,
@NotNull Class clazz,
@Nullable V defaultValue) {
- super(source, sectionName);
+ this(source == null ? null : () -> source, sectionName, clazz, defaultValue);
+ }
+
+ public ConfigValue(@Nullable Supplier provider, @NotNull String sectionName,
+ @NotNull Class clazz,
+ @Nullable V defaultValue) {
+ super(provider, sectionName);
this.clazz = clazz;
this.defaultValue = defaultValue;
}
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 80a823a..6e893c6 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
@@ -9,6 +9,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Objects;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
public class ConfigValueList extends FileConfigValue {
@@ -28,15 +29,17 @@ public class ConfigValueList extends FileConfigValue {
this(null, sectionName, clazz, defaultValue);
}
- public ConfigValueList(@Nullable FileConfig configuration, @NotNull String sectionName,
+ public ConfigValueList(@Nullable Supplier provider,
+ @NotNull String sectionName,
Class clazz) {
- this(configuration, sectionName, clazz, null);
+ this(provider, sectionName, clazz, null);
}
- public ConfigValueList(@Nullable FileConfig configuration, @NotNull String sectionName,
+ public ConfigValueList(@Nullable Supplier provider,
+ @NotNull String sectionName,
@NotNull Class clazz,
@Nullable V[] defaultValue) {
- super(configuration, sectionName);
+ super(provider, sectionName);
this.clazz = clazz;
this.defaultValue = defaultValue;
}
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 6a61485..136ecc3 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
@@ -8,6 +8,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.function.Function;
+import java.util.function.Supplier;
public class ConfigValueMap extends FileConfigCachedValue