我监听了玩家点击背包事件,InventoryClickEvent。层层if/else + switch 过滤,最终确定Inventory的类型是铁砧。
那么,我放一张纸,重命名,最右侧的格子已经出现了新物品了,这个时候,我这样操作:
复制代码结果给我输出 null。
我点击左侧物品,输出正常。点击中间的空格,输出是null(这我能理解,因为确实是空的),但点击右侧那个,输出就是null,不能理解为什么会这样。
我就是要获取到右侧那个物品,应该怎么办?
谢谢!
那么,我放一张纸,重命名,最右侧的格子已经出现了新物品了,这个时候,我这样操作:
- System.out.println(event.getCurrentItem());
我点击左侧物品,输出正常。点击中间的空格,输出是null(这我能理解,因为确实是空的),但点击右侧那个,输出就是null,不能理解为什么会这样。
我就是要获取到右侧那个物品,应该怎么办?
谢谢!
我想你应该尝试监听PrepareAnvilEvent
处理铁砧事件时,应该监听 PrepareAnvilEvent 事件
然后
event.getResult();
就能获取右侧物品
详细参考:
https://hub.spigotmc.org/javadoc ... pareAnvilEvent.html
然后
event.getResult();
就能获取右侧物品
详细参考:
https://hub.spigotmc.org/javadoc ... pareAnvilEvent.html
麻花awa 发表于 2022-2-10 19:22
处理铁砧事件时,应该监听 PrepareAnvilEvent 事件
然后
event.getResult();
好的,谢谢,一会我试一下
麻花awa 发表于 2022-2-10 19:22
处理铁砧事件时,应该监听 PrepareAnvilEvent 事件
然后
event.getResult();
那这个事件只能是玩家手动把物品放在铁砧上的时候才会触发吗?
用Bukkit.createInventory做出来的铁砧界面无法触发?
丛林水塘 发表于 2022-2-10 21:51
那这个事件只能是玩家手动把物品放在铁砧上的时候才会触发吗?
用Bukkit.createInventory做出来的铁砧界 ...
字面上看起來是指要在最旁邊 都會觸發
超級寶寶 发表于 2022-2-10 22:25
字面上看起來是指要在最旁邊 都會觸發
麻烦用简体中文,开发者看不懂繁体字
试试获取铁砧的Inventory 然后调用 getItem
麻花awa 发表于 2022-2-11 00:06
试试获取铁砧的Inventory 然后调用 getItem
“准备铁砧”事件在Bukkit.createInventory的情况下根本就不触发,怎么getInventory?
丛林水塘 发表于 2022-2-11 08:49
“准备铁砧”事件在Bukkit.createInventory的情况下根本就不触发,怎么getInventory? ...
点击事件里用
麻花awa 发表于 2022-2-11 15:40
点击事件里用
没用,仍然为null
麻花awa 发表于 2022-2-11 21:39
尝试使用 getCursor() 方法InventoryClickEvent (Spigot-API 1.18.1-R0.1-SNAPSHOT API) (spigotmc.org)
...
已经使用getCursor函数,ItemStack有了,但无论输出的是什么物品,返回值都是AIR(我println了一下返回的ItemStack),且尝试获取ItemMeta的getDisplayName再次抛出空指针异常,说原因是ItemMeta 物品元数据是null。
我插件这个event.setCancelled(true),玩家点击Inventory的时候,取消该事件,但似乎并不影响刚刚说的那些问题,即便设置成false,它也还是认为物品是空气。