Luohuayu / CatServer

高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
https://catmc.org
GNU Lesser General Public License v3.0
1.94k stars 204 forks source link

[1.18.2]修复在背包中合成物品时处理Bukkit事件出现NPE的问题 #849

Closed CalenXwX closed 6 months ago

CalenXwX commented 6 months ago

这个问题大概就是 生存模式下 用背包里的合成栏合成物品 取出的时候服务器会出现一堆报错……

创建InventoryMenu对象时,里面的CraftingContainer f39701/craftSlots没有设置owner,这似乎对玩家没有什么明显的影响,但监听CraftItemEvent的插件(比如CoreProtect)可能会炸NPE……

参考另一处创建CraftingContainer的代码在net.minecraft.world.inventory.CraftingMenu里。打开工作台GUI时会调用CraftingMenu的构造方法,其中执行了setOwner(patches/minecraft/net/minecraft/world/inventory/CraftingMenu.java.patch::37)。当玩家取出合成的物品,CoreProtect处理CraftItemEvent时不会引发报错。

发布和处理Bukkit事件那里套了好多层 直接放StackTrace了XwX image

Kotori0629 commented 6 months ago

夸夸