diff --git a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java index 372860396..7ef10d772 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/LivingEventHandler.java @@ -319,8 +319,8 @@ public class LivingEventHandler { if (player instanceof ServerPlayer serverPlayer) { if (newStack.getItem() != oldStack.getItem() || newStack.getTag() == null || oldStack.getTag() == null - || !newStack.getTag().hasUUID("gun_uuid") || !oldStack.getTag().hasUUID("gun_uuid") - || !newStack.getTag().getUUID("gun_uuid").equals(oldStack.getTag().getUUID("gun_uuid")) + || !GunsTool.getGunData(newStack).hasUUID("UUID") || !GunsTool.getGunData(oldStack).hasUUID("UUID") + || !GunsTool.getGunData(newStack).getUUID("UUID").equals(GunsTool.getGunData(oldStack).getUUID("UUID")) ) { if (oldStack.getItem() instanceof GunItem oldGun) { stopGunReloadSound(serverPlayer, oldGun); 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 4e3ea141b..d2a355a01 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/GunItem.java @@ -57,7 +57,7 @@ public abstract class GunItem extends Item { if (!ItemNBTTool.getBoolean(itemstack, "init", false)) { GunsTool.initGun(level, itemstack, this.getDescriptionId().substring(this.getDescriptionId().lastIndexOf('.') + 1)); - GunsTool.genUUID(itemstack); + GunsTool.generateAndSetUUID(itemstack); ItemNBTTool.setBoolean(itemstack, "init", true); } diff --git a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java index f5c3a8763..3bb08582b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java +++ b/src/main/java/com/atsuishio/superbwarfare/tools/GunsTool.java @@ -87,9 +87,12 @@ public class GunsTool { } } - public static void genUUID(ItemStack stack) { + public static void generateAndSetUUID(ItemStack stack) { UUID uuid = UUID.randomUUID(); - stack.getOrCreateTag().putUUID("gun_uuid", uuid); + CompoundTag tag = stack.getOrCreateTag(); + var data = tag.getCompound("GunData"); + data.putUUID("UUID", uuid); + stack.addTagElement("GunData", data); } @SubscribeEvent @@ -205,6 +208,11 @@ public class GunsTool { } /* GunData */ + public static CompoundTag getGunData(ItemStack stack) { + CompoundTag tag = stack.getOrCreateTag(); + return tag.getCompound("GunData"); + } + public static void setGunIntTag(ItemStack stack, String name, int num) { CompoundTag tag = stack.getOrCreateTag(); var data = tag.getCompound("GunData");