提问者:小点点

Minecraft Spigot,PlayerInteractEvent无法传递


我对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);
            
        }
        
    }
}

}


共1个答案

匿名用户

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

@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");