优化NBT#UUID

This commit is contained in:
17146 2024-12-24 14:45:10 +08:00
parent 4eb52372b1
commit fdaa4c48d6
3 changed files with 13 additions and 5 deletions

View file

@ -319,8 +319,8 @@ public class LivingEventHandler {
if (player instanceof ServerPlayer serverPlayer) { if (player instanceof ServerPlayer serverPlayer) {
if (newStack.getItem() != oldStack.getItem() if (newStack.getItem() != oldStack.getItem()
|| newStack.getTag() == null || oldStack.getTag() == null || newStack.getTag() == null || oldStack.getTag() == null
|| !newStack.getTag().hasUUID("gun_uuid") || !oldStack.getTag().hasUUID("gun_uuid") || !GunsTool.getGunData(newStack).hasUUID("UUID") || !GunsTool.getGunData(oldStack).hasUUID("UUID")
|| !newStack.getTag().getUUID("gun_uuid").equals(oldStack.getTag().getUUID("gun_uuid")) || !GunsTool.getGunData(newStack).getUUID("UUID").equals(GunsTool.getGunData(oldStack).getUUID("UUID"))
) { ) {
if (oldStack.getItem() instanceof GunItem oldGun) { if (oldStack.getItem() instanceof GunItem oldGun) {
stopGunReloadSound(serverPlayer, oldGun); stopGunReloadSound(serverPlayer, oldGun);

View file

@ -57,7 +57,7 @@ public abstract class GunItem extends Item {
if (!ItemNBTTool.getBoolean(itemstack, "init", false)) { if (!ItemNBTTool.getBoolean(itemstack, "init", false)) {
GunsTool.initGun(level, itemstack, this.getDescriptionId().substring(this.getDescriptionId().lastIndexOf('.') + 1)); GunsTool.initGun(level, itemstack, this.getDescriptionId().substring(this.getDescriptionId().lastIndexOf('.') + 1));
GunsTool.genUUID(itemstack); GunsTool.generateAndSetUUID(itemstack);
ItemNBTTool.setBoolean(itemstack, "init", true); ItemNBTTool.setBoolean(itemstack, "init", true);
} }

View file

@ -87,9 +87,12 @@ public class GunsTool {
} }
} }
public static void genUUID(ItemStack stack) { public static void generateAndSetUUID(ItemStack stack) {
UUID uuid = UUID.randomUUID(); 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 @SubscribeEvent
@ -205,6 +208,11 @@ public class GunsTool {
} }
/* GunData */ /* 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) { public static void setGunIntTag(ItemStack stack, String name, int num) {
CompoundTag tag = stack.getOrCreateTag(); CompoundTag tag = stack.getOrCreateTag();
var data = tag.getCompound("GunData"); var data = tag.getCompound("GunData");