首页 > 解决方案 > Minecraft Bukkit - 右键单击​​村民时的自定义 GUI

问题描述

我正在为我的Minecraft服务器制作 [Bed Wars][1] 插件。实际上我必须做一个定制的村民商店。

我已经制作了我的 GUI(使用 InventoryHolder 工具)。它正在使用命令。我在整个互联网上进行了搜索,但我没有在系统上找到任何东西,当你右键单击一个村民(我知道如何生成它)时,它正在显示我的 GUI。有什么想法呢?

编辑:我尝试使用 PlayerInteractAtEntityEvent,我创建了一个类,注册它并制作这个代码:

    @EventHandler
    public void interactAtEntity(PlayerInteractAtEntityEvent e) {
        if (e.getRightClicked() == ShopVillager.villager1) {
            System.out.println("UwU");
            Player player = e.getPlayer();
            FastShop shop = new FastShop(player);
            player.openInventory(shop.getInventory());
            e.setCancelled(true);
            return;
        }
    }

它显示 gui 像 0.2 秒,但是在我关闭它并显示原始交易 gui 之后,我在控制台中得到了 uwu。

标签: javaminecraftbukkit

解决方案


这取决于您如何制作 PNJ(村民)。

  1. 生成 PNJ 作为默认实体

如果使用 生成它world.spawnEntity,则可以使用默认的 spigot 事件。

例如,使用PlayerInteractAtEntityEvent,您可以获得实体。

  1. 使用数据包生成实体

就个人而言,我使用数据包来检测PacketPlayInUseEntity并获取具有 ID 的村民。

  1. 在全球范围内,通过多个交互事件并通过检查位置/最近的 PNJ,您将能够找到您正在寻找的那个。

推荐阅读