From 3626c4ec5190b2156775aa40043d228389bf6d12 Mon Sep 17 00:00:00 2001 From: Cosimo <24959231+CosimoTiger@users.noreply.github.com> Date: Thu, 2 Jan 2025 02:40:37 +0100 Subject: [PATCH] Extract ItemMeta for less repeated applying --- src/main/java/com/cosimo/utilities/item/ItemBuilder.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cosimo/utilities/item/ItemBuilder.java b/src/main/java/com/cosimo/utilities/item/ItemBuilder.java index 09664a8..2767bb8 100644 --- a/src/main/java/com/cosimo/utilities/item/ItemBuilder.java +++ b/src/main/java/com/cosimo/utilities/item/ItemBuilder.java @@ -23,12 +23,14 @@ * A proxy class (rather than a true builder) that wraps around an {@link ItemStack}, allowing easier, more fluent and * chained modifications of the item. */ +@SuppressWarnings("unused") public class ItemBuilder implements Cloneable { /** * Mutable {@link ItemStack}. */ private final ItemStack itemStack; + private ItemMeta itemMeta; /** * Creates a new {@link ItemBuilder} from an item stored in a given configuration file's path or a default provided @@ -131,6 +133,7 @@ public ItemBuilder(@NonNull Material material) { */ public ItemBuilder(@NonNull ItemStack itemStack) { this.itemStack = itemStack; + this.itemMeta = itemStack.getItemMeta(); } /** @@ -245,7 +248,9 @@ public ItemBuilder loreAt(@Nullable String line, final int @NonNull ... indices) */ @NonNull public ItemBuilder with(@NonNull Consumer itemConsumer) { + this.itemStack.setItemMeta(this.itemMeta); itemConsumer.accept(this.itemStack); + this.itemMeta = this.itemStack.getItemMeta(); return this; } @@ -473,7 +478,7 @@ public ItemBuilder clearLore() { */ @NonNull public Optional getItemMeta() { - return Optional.ofNullable(this.itemStack.getItemMeta()); + return Optional.ofNullable(this.itemMeta); } /** @@ -502,9 +507,11 @@ public boolean isBreakable() { */ @NonNull public ItemStack build() { + this.itemStack.setItemMeta(this.itemMeta); return this.itemStack; } + @SuppressWarnings("MethodDoesntCallSuperMethod") @Override public ItemBuilder clone() { return new ItemBuilder(this.itemStack.clone());