diff --git a/src/main/java/net/minestom/server/item/ItemMeta.java b/src/main/java/net/minestom/server/item/ItemMeta.java index 686eccfe6..ae316568e 100644 --- a/src/main/java/net/minestom/server/item/ItemMeta.java +++ b/src/main/java/net/minestom/server/item/ItemMeta.java @@ -152,7 +152,7 @@ public class ItemMeta implements TagReadable, Writeable { @Contract(value = "-> new", pure = true) protected @NotNull ItemMetaBuilder builder() { - ItemMetaBuilder result = metaBuilder.getSupplier().get(); + ItemMetaBuilder result = metaBuilder.createEmpty(); ItemMetaBuilder.resetMeta(result, nbt); return result; } diff --git a/src/main/java/net/minestom/server/item/ItemMetaBuilder.java b/src/main/java/net/minestom/server/item/ItemMetaBuilder.java index 78dcebb61..a3be20219 100644 --- a/src/main/java/net/minestom/server/item/ItemMetaBuilder.java +++ b/src/main/java/net/minestom/server/item/ItemMetaBuilder.java @@ -198,7 +198,15 @@ public abstract class ItemMetaBuilder implements TagWritable { public abstract void read(@NotNull NBTCompound nbtCompound); - protected abstract @NotNull Supplier<@NotNull ItemMetaBuilder> getSupplier(); + protected @NotNull ItemMetaBuilder createEmpty() { + try { + var constructor = getClass().getDeclaredConstructor(); + constructor.setAccessible(true); + return constructor.newInstance(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } protected void mutateNbt(Consumer consumer) { consumer.accept(nbt); diff --git a/src/main/java/net/minestom/server/item/ItemStackBuilder.java b/src/main/java/net/minestom/server/item/ItemStackBuilder.java index d45e6fff9..f57780c09 100644 --- a/src/main/java/net/minestom/server/item/ItemStackBuilder.java +++ b/src/main/java/net/minestom/server/item/ItemStackBuilder.java @@ -129,10 +129,5 @@ public final class ItemStackBuilder { public void read(@NotNull NBTCompound nbtCompound) { // Empty } - - @Override - protected @NotNull Supplier<@NotNull ItemMetaBuilder> getSupplier() { - return DefaultMeta::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/BundleMeta.java b/src/main/java/net/minestom/server/item/metadata/BundleMeta.java index 541e778bd..72e15e1d1 100644 --- a/src/main/java/net/minestom/server/item/metadata/BundleMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/BundleMeta.java @@ -12,7 +12,6 @@ import org.jglrxavpok.hephaistos.nbt.NBTType; import java.util.ArrayList; import java.util.List; -import java.util.function.Supplier; @ApiStatus.Experimental public class BundleMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -71,10 +70,5 @@ public class BundleMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/CompassMeta.java b/src/main/java/net/minestom/server/item/metadata/CompassMeta.java index 5cd98cd71..13b036951 100644 --- a/src/main/java/net/minestom/server/item/metadata/CompassMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/CompassMeta.java @@ -12,7 +12,6 @@ import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTString; import java.util.Map; -import java.util.function.Supplier; public class CompassMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -105,10 +104,5 @@ public class CompassMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java b/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java index 50a64e63d..d65ce22fb 100644 --- a/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/CrossbowMeta.java @@ -10,7 +10,6 @@ import org.jglrxavpok.hephaistos.nbt.*; import java.util.ArrayList; import java.util.List; -import java.util.function.Supplier; public class CrossbowMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -170,11 +169,6 @@ public class CrossbowMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } - private @NotNull NBTCompound getItemCompound(@NotNull ItemStack itemStack) { NBTCompound compound = itemStack.getMeta().toNBT(); return compound.modify(n -> { diff --git a/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java b/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java index 5c53e20eb..6f8e87919 100644 --- a/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/EnchantedBookMeta.java @@ -11,7 +11,6 @@ import org.jglrxavpok.hephaistos.nbt.NBTType; import java.util.HashMap; import java.util.Map; -import java.util.function.Supplier; public class EnchantedBookMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -60,10 +59,5 @@ public class EnchantedBookMeta extends ItemMeta implements ItemMetaBuilder.Provi NBTUtils.loadEnchantments(list.asListOf(), this::enchantment); } } - - @Override - protected @NotNull Supplier getSupplier() { - return Builder::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/FireworkEffectMeta.java b/src/main/java/net/minestom/server/item/metadata/FireworkEffectMeta.java index a204c6aba..e90084543 100644 --- a/src/main/java/net/minestom/server/item/metadata/FireworkEffectMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/FireworkEffectMeta.java @@ -7,8 +7,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBTCompound; -import java.util.function.Supplier; - public class FireworkEffectMeta extends ItemMeta implements ItemMetaBuilder.Provider { private final FireworkEffect fireworkEffect; @@ -43,10 +41,5 @@ public class FireworkEffectMeta extends ItemMeta implements ItemMetaBuilder.Prov this.fireworkEffect = FireworkEffect.fromCompound(explosionCompound); } } - - @Override - protected @NotNull Supplier getSupplier() { - return Builder::new; - } } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java b/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java index 567ad556f..2322ba8f0 100644 --- a/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/FireworkMeta.java @@ -8,7 +8,6 @@ import org.jglrxavpok.hephaistos.nbt.*; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.function.Supplier; public class FireworkMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -75,10 +74,5 @@ public class FireworkMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java b/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java index 9ec289a71..2221336cf 100644 --- a/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/LeatherArmorMeta.java @@ -8,8 +8,6 @@ import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.jglrxavpok.hephaistos.nbt.NBTInt; -import java.util.function.Supplier; - public class LeatherArmorMeta extends ItemMeta implements ItemMetaBuilder.Provider { private final Color color; @@ -52,10 +50,5 @@ public class LeatherArmorMeta extends ItemMeta implements ItemMetaBuilder.Provid } } } - - @Override - protected @NotNull Supplier getSupplier() { - return Builder::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/MapMeta.java b/src/main/java/net/minestom/server/item/metadata/MapMeta.java index 3eafd415d..abfa337dc 100644 --- a/src/main/java/net/minestom/server/item/metadata/MapMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/MapMeta.java @@ -10,7 +10,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.function.Supplier; public class MapMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -156,11 +155,6 @@ public class MapMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } } public record Decoration(String id, byte type, byte x, byte z, double rotation) { diff --git a/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java b/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java index 943abadd0..2155e160d 100644 --- a/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/PlayerHeadMeta.java @@ -12,7 +12,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.UUID; -import java.util.function.Supplier; public class PlayerHeadMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -86,10 +85,5 @@ public class PlayerHeadMeta extends ItemMeta implements ItemMetaBuilder.Provider } } } - - @Override - protected @NotNull Supplier getSupplier() { - return Builder::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/PotionMeta.java b/src/main/java/net/minestom/server/item/metadata/PotionMeta.java index ca9e7c342..1740936ea 100644 --- a/src/main/java/net/minestom/server/item/metadata/PotionMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/PotionMeta.java @@ -13,7 +13,6 @@ import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.function.Supplier; public class PotionMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -109,10 +108,5 @@ public class PotionMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java b/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java index 2c56be1a8..470f788bd 100644 --- a/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/SpawnEggMeta.java @@ -7,8 +7,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBTCompound; -import java.util.function.Supplier; - public class SpawnEggMeta extends ItemMeta implements ItemMetaBuilder.Provider { private final EntityType entityType; @@ -41,10 +39,5 @@ public class SpawnEggMeta extends ItemMeta implements ItemMetaBuilder.Provider getSupplier() { - return Builder::new; - } } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java b/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java index 418001ee1..9a32962cc 100644 --- a/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/WritableBookMeta.java @@ -11,7 +11,6 @@ import org.jglrxavpok.hephaistos.nbt.*; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.function.Supplier; public class WritableBookMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -92,10 +91,5 @@ public class WritableBookMeta extends ItemMeta implements ItemMetaBuilder.Provid } } } - - @Override - protected @NotNull Supplier getSupplier() { - return WritableBookMeta.Builder::new; - } } } diff --git a/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java b/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java index 73ee062e2..f6a6c3215 100644 --- a/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java +++ b/src/main/java/net/minestom/server/item/metadata/WrittenBookMeta.java @@ -16,7 +16,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; -import java.util.function.Supplier; public class WrittenBookMeta extends ItemMeta implements ItemMetaBuilder.Provider { @@ -158,10 +157,5 @@ public class WrittenBookMeta extends ItemMeta implements ItemMetaBuilder.Provide } } } - - @Override - protected @NotNull Supplier getSupplier() { - return Builder::new; - } } } diff --git a/src/test/java/regressions/ItemMetaBuilderRegressions.java b/src/test/java/regressions/ItemMetaBuilderRegressions.java index 33932dd20..60e9efb60 100644 --- a/src/test/java/regressions/ItemMetaBuilderRegressions.java +++ b/src/test/java/regressions/ItemMetaBuilderRegressions.java @@ -9,7 +9,6 @@ import org.jglrxavpok.hephaistos.nbt.mutable.MutableNBTCompound; import org.junit.jupiter.api.Test; import java.util.function.Consumer; -import java.util.function.Supplier; import static org.junit.jupiter.api.Assertions.*; @@ -26,12 +25,6 @@ public class ItemMetaBuilderRegressions { // don't care } - @Override - protected @NotNull Supplier<@NotNull ItemMetaBuilder> getSupplier() { - // don't care - return () -> this; - } - @Override public void handleCompound(@NotNull String key, @NotNull Consumer<@NotNull MutableNBTCompound> consumer) { super.handleCompound(key, consumer);