You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MC 1.19.2:如何监听玩家配方书操作以同步全局库存?

配方书Shift点击操作的监听方案(全局库存同步场景)

常规的InventoryClickEvent无法捕获配方书内的Shift点击操作,因为这类操作是客户端直接请求合成并将物品写入背包,绕过了常规的背包点击事件逻辑。以下是两种可行的监听方案:

1. 高版本直接监听PlayerRecipeClickEvent(Spigot/Paper 1.19+)

从Minecraft 1.19起,Spigot/Paper新增了PlayerRecipeClickEvent,专门用于捕获配方书内的所有交互操作,包括Shift点击。直接监听该事件即可处理同步需求:

@EventHandler
public void onRecipeShiftClick(PlayerRecipeClickEvent event) {
    if (event.isShiftClick()) {
        Player player = event.getPlayer();
        InvUpdate = true;
        invupdateplayer = player;
    }
}

注意:此方案仅适用于支持该事件的Spigot/Paper版本,需确保服务器版本符合要求。

2. 低版本兼容方案(1.18及以下)

若服务器版本低于1.19,无PlayerRecipeClickEvent,可通过监听InventoryUpdateEvent捕获背包内容变化——配方书Shift合成的物品会直接进入玩家背包,触发该事件:

@EventHandler
public void onInventoryUpdate(InventoryUpdateEvent event) {
    Inventory inv = event.getInventory();
    if (inv instanceof PlayerInventory) {
        Player player = ((PlayerInventory) inv).getHolder();
        // 若需精准过滤配方书操作,可结合NMS监听RecipeBook相关数据包(复杂度较高)
        InvUpdate = true;
        invupdateplayer = player;
    }
}

此方案会捕获所有背包内容变更场景,若需仅针对配方书操作,可额外添加逻辑判断,或使用NMS监听PacketPlayInRecipeBookClick数据包(需处理版本兼容问题)。

注意事项

  • 确保事件监听器已正确注册至插件主类。
  • 使用PlayerRecipeClickEvent时,建议在plugin.yml中声明对应版本依赖,避免兼容性问题。

内容的提问来源于stack exchange,提问作者Hexanilix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:52:21