【问题标题】:Minecraft Spigot, PlayerInteractEvent cannot be passedMinecraft Spigot,PlayerInteractEvent 无法传递
【发布时间】:2021-11-17 11:42:19
【问题描述】:

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

}

【问题讨论】:

    标签: java minecraft


    【解决方案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");
    

    【讨论】:

    • 哎呀,我真的忘记注册这个活动了,谢谢。但现在我遇到了另一个问题;我的控制台告诉我错误:'尝试转换 StartUp v1.0:de/Daniel260/startup/items/HerrDesWindesTalisman.class org.bukkit.plugin.AuthorNagException 的致命错误:TOTEM_OF_UNDYING 没有遗留枚举常量。您是否忘记在您的 plugin.yml 中定义一个现代(1.13+)api 版本?我能做些什么呢?如果您需要我的项目的任何内容,请给我发短信。谢谢
    • 不,我不需要其他任何东西。这是另一个问题,错误中对此进行了充分解释。你可以找到文档here。您应该在plugin.yml 文件中添加api-version: 1.13
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多