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");
我的 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");