diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java index a50cd799e..6616232f0 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -108,6 +108,23 @@ public abstract class GunItem extends Item implements CustomRendererItem, GeoIte return false; } + private void checkCopyGuns(ItemStack stack, Player player) { + var data = GunData.from(stack); + if (!data.initialized()) return; + var uuid = data.data.getUUID("UUID"); + + for (var item : player.getInventory().items) { + if (item.equals(stack)) continue; + if (item.getItem() instanceof GunItem) { + var itemData = GunData.from(item); + if (itemData.data.getUUID("UUID").equals(uuid)) { + data.data.putUUID("UUID", UUID.randomUUID()); + return; + } + } + } + } + @Override @ParametersAreNonnullByDefault public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) { @@ -119,6 +136,10 @@ public abstract class GunItem extends Item implements CustomRendererItem, GeoIte var data = GunData.from(stack); + if (living instanceof Player player && selected) { + checkCopyGuns(stack, player); + } + if (!data.initialized()) { data.initialize(); if (level.getServer() != null && entity instanceof Player player && player.isCreative()) {