From bd02b9d46e235fe04dee95616c495dde52dde498 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 6 Dec 2025 01:08:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=8D=A2=E5=A4=84=E7=90=86=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/CommonItemPacketHandler.java | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java index 0afd02080..3df058747 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/handler/CommonItemPacketHandler.java @@ -60,8 +60,19 @@ public class CommonItemPacketHandler implements EntityPacketHandler { continue; } - // 处理 drop-display 物品设置 ItemStack itemStack = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(nmsItemStack); + + // 转换为客户端侧物品 + Optional optional = BukkitItemManager.instance().s2c(itemStack, user); + if (optional.isPresent()) { + changed = true; + itemStack = optional.get(); + Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem); + packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack))); + } + + // 处理 drop-display 物品设置 + // 一定要处理经历过客户端侧组件修改的物品 Item wrappedItem = BukkitItemManager.instance().wrap(itemStack); Optional> optionalCustomItem = wrappedItem.getCustomItem(); String showName = null; @@ -78,12 +89,7 @@ public class CommonItemPacketHandler implements EntityPacketHandler { Optional optionalHoverComponent = wrappedItem.hoverNameComponent(); Component hoverComponent; if (optionalHoverComponent.isPresent()) { - Map tokens = CraftEngine.instance().fontManager().matchTags(AdventureHelper.componentToNbt(optionalHoverComponent.get())); - if (tokens.isEmpty()) { - hoverComponent = optionalHoverComponent.get(); - } else { - hoverComponent = AdventureHelper.replaceText(optionalHoverComponent.get(), tokens, context); - } + hoverComponent = optionalHoverComponent.get(); } else { hoverComponent = Component.translatable(itemStack.translationKey()); } @@ -100,15 +106,6 @@ public class CommonItemPacketHandler implements EntityPacketHandler { } } - // 转换为客户端侧物品 - Optional optional = BukkitItemManager.instance().s2c(itemStack, user); - if (optional.isEmpty()) { - break; - } - changed = true; - itemStack = optional.get(); - Object serializer = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$serializer(packedItem); - packedItems.set(i, FastNMS.INSTANCE.constructor$SynchedEntityData$DataValue(entityDataId, serializer, FastNMS.INSTANCE.method$CraftItemStack$asNMSCopy(itemStack))); break; } // 添加自定义显示名