From 398bc773d6cb6d76fb9de88184db5521be3a5daf Mon Sep 17 00:00:00 2001 From: Carm Date: Thu, 21 Sep 2023 22:23:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(item):=20=E9=87=8D=E6=9E=84=E7=89=A9?= =?UTF-8?q?=E5=93=81=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=9B=B4=E5=A4=9A=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pom.xml | 2 +- platform/bukkit/pom.xml | 2 +- .../bukkit/value/item/ConfiguredItem.java | 15 +----- .../bukkit/value/item/PreparedItem.java | 49 ++++++++++++------- platform/bungee/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 37 insertions(+), 35 deletions(-) diff --git a/common/pom.xml b/common/pom.xml index fcf1567..53f113f 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 2.8.5 + 2.8.6 4.0.0 diff --git a/platform/bukkit/pom.xml b/platform/bukkit/pom.xml index 453bc6c..9562267 100644 --- a/platform/bukkit/pom.xml +++ b/platform/bukkit/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 2.8.5 + 2.8.6 ../../pom.xml 4.0.0 diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java index 5b3ebb8..132f23f 100644 --- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java +++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/ConfiguredItem.java @@ -1,31 +1,18 @@ package cc.carm.lib.mineconfiguration.bukkit.value.item; import cc.carm.lib.configuration.core.value.ValueManifest; -import cc.carm.lib.configuration.core.value.type.ConfiguredList; import cc.carm.lib.configuration.core.value.type.ConfiguredSection; import cc.carm.lib.mineconfiguration.bukkit.builder.item.ItemConfigBuilder; -import cc.carm.lib.mineconfiguration.bukkit.utils.TextParser; -import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessage; -import cc.carm.lib.mineconfiguration.bukkit.value.ConfiguredMessageList; -import cc.carm.lib.mineconfiguration.common.utils.ParamsUtils; import com.cryptomorin.xseries.XItemStack; -import org.bukkit.Bukkit; -import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.SkullMeta; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; -import java.util.function.BiConsumer; import java.util.function.Consumer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class ConfiguredItem extends ConfiguredSection { @@ -67,7 +54,7 @@ public class ConfiguredItem extends ConfiguredSection { } public @NotNull PreparedItem prepare(@NotNull Object... values) { - return new PreparedItem(this, values); + return PreparedItem.of(player -> get()).params(params).values(values); } public @Nullable ItemStack get(@Nullable Player player) { diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/PreparedItem.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/PreparedItem.java index 4d57a12..de73626 100644 --- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/PreparedItem.java +++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/value/item/PreparedItem.java @@ -19,6 +19,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -26,7 +27,15 @@ public class PreparedItem { public static final @NotNull Pattern LORE_INSERT_PATTERN = Pattern.compile("^(?:\\{(.*)})?#(.*)#(?:\\{(-?\\d+)(?:,(-?\\d+))?})?$"); - protected final @NotNull ConfiguredItem itemConfig; + public static PreparedItem of(@NotNull Function<@NotNull Player, @Nullable ItemStack> itemProvider) { + return new PreparedItem(itemProvider); + } + + public static PreparedItem of(@Nullable ItemStack item) { + return of(player -> item); + } + + protected final @NotNull Function<@NotNull Player, @Nullable ItemStack> itemProvider; protected @NotNull Map placeholders = new HashMap<>(); protected @NotNull String[] params; @@ -37,10 +46,10 @@ public class PreparedItem { protected @NotNull BiConsumer itemModifier; protected @NotNull BiConsumer metaModifier; - protected PreparedItem(@NotNull ConfiguredItem itemConfig, @NotNull Object[] values) { - this.itemConfig = itemConfig; - this.params = itemConfig.params; - this.values = values; + protected PreparedItem(@NotNull Function<@NotNull Player, @Nullable ItemStack> itemProvider) { + this.itemProvider = itemProvider; + this.params = new String[0]; + this.values = new Object[0]; itemModifier = (item, player) -> { }; metaModifier = (meta, player) -> { @@ -48,7 +57,7 @@ public class PreparedItem { } public @Nullable ItemStack get(Player player) { - ItemStack item = itemConfig.get(); + @Nullable ItemStack item = itemProvider.apply(player); if (item == null) return null; ItemMeta meta = item.getItemMeta(); @@ -93,44 +102,50 @@ public class PreparedItem { return this; } - public PreparedItem placeholders(Map placeholders) { + public PreparedItem placeholders(@NotNull Map placeholders) { this.placeholders = placeholders; return this; } - public PreparedItem placeholders(Consumer> consumer) { + public PreparedItem placeholders(@NotNull Consumer> consumer) { Map placeholders = new HashMap<>(); consumer.accept(placeholders); return placeholders(placeholders); } - public PreparedItem insertLore(String path, LoreContent content) { + public PreparedItem insertLore(@NotNull String path, @NotNull LoreContent content) { insertLore.put(path, content); return this; } - public PreparedItem insertLore(String path, List content) { + public PreparedItem insertLore(@NotNull String path, @NotNull List content) { return insertLore(path, content, false); } - public PreparedItem insertLore(String path, List content, boolean original) { + public PreparedItem insertLore(@NotNull String path, @NotNull List content, boolean original) { return insertLore(path, LoreContent.of(content, original)); } - public PreparedItem insertLore(String path, String... content) { + public PreparedItem insertLore(@NotNull String path, @NotNull String... content) { return insertLore(path, Arrays.asList(content)); } - public PreparedItem insertLore(String path, ConfiguredList content) { + public PreparedItem insertLore(@NotNull String path, @NotNull ConfiguredList content) { return insertLore(path, content.copy()); } - public PreparedItem insertLore(String path, ConfiguredMessage content, Object... params) { - return insertLore(path, content.parse(null, params)); + public PreparedItem insertLore(@NotNull String path, + @NotNull ConfiguredMessage content, @NotNull Object... params) { + String c = content.parse(null, params); + if (c == null) return this; + return insertLore(path, c); } - public PreparedItem insertLore(String path, ConfiguredMessageList content, Object... params) { - return insertLore(path, content.parse(null, params)); + public PreparedItem insertLore(@NotNull String path, + @NotNull ConfiguredMessageList content, @NotNull Object... params) { + List c = content.parse(null, params); + if (c == null || c.isEmpty()) return this; + return insertLore(path, c); } public PreparedItem amount(int amount) { diff --git a/platform/bungee/pom.xml b/platform/bungee/pom.xml index 62d9526..e0f96c8 100644 --- a/platform/bungee/pom.xml +++ b/platform/bungee/pom.xml @@ -5,7 +5,7 @@ mineconfiguration-parent cc.carm.lib - 2.8.5 + 2.8.6 ../../pom.xml 4.0.0 diff --git a/pom.xml b/pom.xml index fba7e52..efc3bcf 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ cc.carm.lib mineconfiguration-parent - 2.8.5 + 2.8.6 pom common