From 3bfdfd71520d1e8cf35304cfef7dd85f6f66bef6 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Tue, 5 Aug 2025 23:30:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(network):=20=E4=BF=AE=E5=A4=8D=20Serverboun?= =?UTF-8?q?dContainerClickPacket=20=E5=8C=85=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 感谢 TheFloodDragon 的协助 --- .../plugin/network/PacketConsumers.java | 20 +++++-------------- gradle.properties | 2 +- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 34d910efb..1b69dbc5d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -7,6 +7,7 @@ import com.mojang.datafixers.util.Either; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectMaps; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.IntList; import net.kyori.adventure.text.Component; @@ -2248,23 +2249,12 @@ public class PacketConsumers { Object clickType = FastNMS.INSTANCE.field$ServerboundContainerClickPacket$clickType(packet); @SuppressWarnings("unchecked") Int2ObjectMap changedSlots = FastNMS.INSTANCE.field$ServerboundContainerClickPacket$changedSlots(packet); - Int2ObjectMap newChangedSlots = new Int2ObjectOpenHashMap<>(); + Int2ObjectMap newChangedSlots = new Int2ObjectOpenHashMap<>(changedSlots.size()); for (Int2ObjectMap.Entry entry : changedSlots.int2ObjectEntrySet()) { - Object hashedStack = entry.getValue(); - if (!NetworkReflections.clazz$HashedStack$ActualItem.isInstance(hashedStack)) continue; - Object item = FastNMS.INSTANCE.method$ActualItem$item(hashedStack); - int count = FastNMS.INSTANCE.method$ActualItem$count(hashedStack); - Object components = FastNMS.INSTANCE.method$ActualItem$components(hashedStack); - newChangedSlots.put(entry.getIntKey(), FastNMS.INSTANCE.constructor$InjectedHashedStack(item, count, components, player)); + newChangedSlots.put(entry.getIntKey(), FastNMS.INSTANCE.constructor$InjectedHashedStack(entry.getValue(), player)); } - Object carriedItem = FastNMS.INSTANCE.field$ServerboundContainerClickPacket$carriedItem(packet); - if (NetworkReflections.clazz$HashedStack$ActualItem.isInstance(carriedItem)) { - Object item = FastNMS.INSTANCE.method$ActualItem$item(carriedItem); - int count = FastNMS.INSTANCE.method$ActualItem$count(carriedItem); - Object components = FastNMS.INSTANCE.method$ActualItem$components(carriedItem); - carriedItem = FastNMS.INSTANCE.constructor$InjectedHashedStack(item, count, components, player); - } - event.replacePacket(FastNMS.INSTANCE.constructor$ServerboundContainerClickPacket(containerId, stateId, slotNum, buttonNum, clickType, newChangedSlots, carriedItem)); + Object carriedItem = FastNMS.INSTANCE.constructor$InjectedHashedStack(FastNMS.INSTANCE.field$ServerboundContainerClickPacket$carriedItem(packet), player); + event.replacePacket(FastNMS.INSTANCE.constructor$ServerboundContainerClickPacket(containerId, stateId, slotNum, buttonNum, clickType, Int2ObjectMaps.unmodifiable(newChangedSlots), carriedItem)); } catch (Exception e) { CraftEngine.instance().logger().warn("Failed to handle ServerboundContainerClickPacket", e); } diff --git a/gradle.properties b/gradle.properties index fef1459a3..000724fdd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -50,7 +50,7 @@ byte_buddy_version=1.17.5 ahocorasick_version=0.6.3 snake_yaml_version=2.4 anti_grief_version=0.18 -nms_helper_version=1.0.53 +nms_helper_version=1.0.54 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.31.23