Minecraft Spigot,无法传递 PlayerInteractEvent

Minecraft Spigot, PlayerInteractEvent cannot be passed

我的 1.17.1 版 Spigot 插件有问题。我试图在点击不死图腾时实现一个事件,它会打开一个库存。几个小时后阅读了一些帖子,但没有任何帮助,我被困住了。有人可以帮助我吗?

这是我的代码:

public class HerrDesWindesTalisman implements Listener{

@EventHandler
public void onPlayerInteract (PlayerInteractEvent e) {
    Player p = e.getPlayer();
    Action a = e.getAction();
    if(a.equals(Action.RIGHT_CLICK_AIR)  || a.equals(Action.RIGHT_CLICK_BLOCK)) {
        p.sendMessage("Warpmenü");
        if(e.getItem() != null && e.getItem().getType().equals(Material.TOTEM_OF_UNDYING)) {
            Inventory inv = Bukkit.createInventory(p, 27*9, "Ziele");
            ItemStack item1 = new ItemStack(Material.ACACIA_DOOR);
            ItemMeta imeta1 = item1.getItemMeta();
            imeta1.setDisplayName("Reise nach Irgendwo");
            item1.setItemMeta(imeta1);
            inv.setItem(5, item1);
            p.openInventory(inv);
            
        }
        
    }
}

}

首先,您应该检查该侦听器是否已注册。所以在你的主 class 中,不要忘记添加 :

@Override
public void onEnable() {
    getServer().getPluginManager().registerEvents(new HerrDesWindesTalisman(), this);
}

另外,库存的大小应该在9到54之间,并且是9的倍数。

实际上,您使用的是“27 * 9”。我想你在考虑 27 的大小(所以 9 * 3)。做吧,使用这一行:

Inventory inv = Bukkit.createInventory(p, 27, "Ziele");