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