丛林水塘
注意,这个是造出来的铁砧界面(createInventory),不是玩家自己打开铁砧的铁砧。因此无法触发PrepareAnvilEvent,故无法getResult(),所以通过监听PrepareAnvilEvent事件来获取。
想要在玩家点击Inventory的时候获取到最右侧的物品。
监听InventoryClickEvent,调用了getCursor(),无论产出什么物品,都会输出为空气(print出来的)。又试了一下getWhoClicked().getOpenInventory().getItem(event.getRawSlot()),返回null。明明最右侧有东西,但返回null,并会触发NullPointerException。
所以问一下,应该怎么获取到造出来的铁砧界面的最右侧的物品?谢谢!

丛林水塘
求助,感谢!

BlessAzek
本机经测试使用 Bukkit.createInventory() 创造出来的铁砧界面是可以触发 PrepareAnvilEvent 的

直接使用 event.setResult(ItemStack stack) 设置铁砧的输出物品即可,
以下是测试代码
(代码中存在的缺陷:使用与原物品不同的物品时,会先输出原物品的图样,点击后就可以获取设置好了的物品。



附测试视频
[color=rgba(0, 0, 0, 0.85)]「1645683411750.mp4」https://www.aliyundrive.com/s/JKb8yhM5Qju


723065653
这这这这这这

杨啊杨
感谢大佬

丛林水塘
本帖最后由 丛林水塘 于 2022-2-26 12:41 编辑
BlessAzek 发表于 2022-2-24 14:28
本机经测试使用 Bukkit.createInventory() 创造出来的铁砧界面是可以触发 PrepareAnvilEvent 的

直接使用  ...

可能是版本问题,我这里测试似乎无法触发,谢谢了

tycmc.top
BlessAzek 发表于 2022-2-24 14:28
本机经测试使用 Bukkit.createInventory() 创造出来的铁砧界面是可以触发 PrepareAnvilEvent 的

直接使用  ...

用了你的代码,结果是https://www.mcbbs.net/thread-1334087-1-1.html