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 rootClazz) { - initialize(source, rootClazz, true); - } + public static void initialize(FileConfig source, Class rootClazz) { + initialize(source, rootClazz, true); + } - public static void initialize(FileConfig source, Class rootClazz, boolean saveDefault) { - MessagesSection sectionAnnotation = rootClazz.getAnnotation(MessagesSection.class); + public static void initialize(FileConfig source, Class 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> { @@ -16,12 +17,18 @@ public class ConfigValueMap extends FileConfigCachedValue> { public ConfigValueMap(@NotNull String sectionName, @NotNull Function keyCast, @NotNull Class valueClazz) { - this(null, sectionName, keyCast, valueClazz); + this((Supplier) null, sectionName, keyCast, valueClazz); } + public ConfigValueMap(@Nullable FileConfig source, @NotNull String sectionName, @NotNull Function keyCast, @NotNull Class valueClazz) { - super(source, sectionName); + this(source == null ? null : () -> source, sectionName, keyCast, valueClazz); + } + + public ConfigValueMap(@Nullable Supplier provider, @NotNull String sectionName, + @NotNull Function keyCast, @NotNull Class valueClazz) { + super(provider, sectionName); this.keyCast = keyCast; this.valueClazz = valueClazz; } diff --git a/easyplugin-database/pom.xml b/easyplugin-database/pom.xml index be595bd..79493de 100644 --- a/easyplugin-database/pom.xml +++ b/easyplugin-database/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.3.3 + 1.3.4 4.0.0 diff --git a/easyplugin-gui/pom.xml b/easyplugin-gui/pom.xml index 39bae8f..f31358f 100644 --- a/easyplugin-gui/pom.xml +++ b/easyplugin-gui/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.3.3 + 1.3.4 4.0.0 diff --git a/easyplugin-lp/pom.xml b/easyplugin-lp/pom.xml index 0b6903c..1d693f2 100644 --- a/easyplugin-lp/pom.xml +++ b/easyplugin-lp/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.3.3 + 1.3.4 4.0.0 diff --git a/easyplugin-main/pom.xml b/easyplugin-main/pom.xml index d84fd85..67ff860 100644 --- a/easyplugin-main/pom.xml +++ b/easyplugin-main/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.3.3 + 1.3.4 4.0.0 diff --git a/easyplugin-placeholderapi/pom.xml b/easyplugin-placeholderapi/pom.xml index 2e175ca..e98b604 100644 --- a/easyplugin-placeholderapi/pom.xml +++ b/easyplugin-placeholderapi/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.3.3 + 1.3.4 4.0.0 diff --git a/easyplugin-vault/pom.xml b/easyplugin-vault/pom.xml index d165e69..8309ae5 100644 --- a/easyplugin-vault/pom.xml +++ b/easyplugin-vault/pom.xml @@ -5,7 +5,7 @@ easyplugin-parent cc.carm.lib - 1.3.3 + 1.3.4 4.0.0 diff --git a/pom.xml b/pom.xml index 78ddb49..b19211c 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ cc.carm.lib easyplugin-parent pom - 1.3.3 + 1.3.4 easyplugin-main