diff --git a/item/bukkit/src/main/java/it/angrybear/yagl/items/BukkitItemImpl.java b/item/bukkit/src/main/java/it/angrybear/yagl/items/BukkitItemImpl.java index b9d47e71..c5f28ba0 100644 --- a/item/bukkit/src/main/java/it/angrybear/yagl/items/BukkitItemImpl.java +++ b/item/bukkit/src/main/java/it/angrybear/yagl/items/BukkitItemImpl.java @@ -69,6 +69,6 @@ public BukkitItem setUnbreakable(final boolean unbreakable) { @Override public BukkitItem copy() { - return super.copy(BukkitItemImpl.class); + return (BukkitItem) super.copy(); } } diff --git a/item/src/main/java/it/angrybear/yagl/items/Item.java b/item/src/main/java/it/angrybear/yagl/items/Item.java index c4caf11b..4086b01f 100644 --- a/item/src/main/java/it/angrybear/yagl/items/Item.java +++ b/item/src/main/java/it/angrybear/yagl/items/Item.java @@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.Arrays; import java.util.Collection; @@ -397,7 +398,13 @@ default Item removeItemFlags(final @NotNull Collection itemFlags) { * @return the item */ default Item copy() { - return copy(ItemImpl.class); + Class clazz = this.getClass(); + try { + Constructor constructor = ReflectionUtils.getConstructor(clazz); + } catch (Exception e) { + clazz = ItemImpl.class; + } + return copy(clazz); } /**