events - Minecraft Bukkit 标志操作

标签 events click minecraft sign bukkit

我在 Bukkit 工作,基本上我需要制作一个方法,以便在右键单击标志时执行某些操作。在这种情况下,它将是套件 list ,但我会在到达它时穿过那座桥。

现在我对如何右键单击标志来让它们做事感到困惑。我想我应该得到右键单击的 block ,检查它是否是一个标志,然后检查标志上写的是什么。但是,我不知道如何将其识别为标志,因为我对两种标志 Material SIGNSIGN_POST 的存在感到困惑。之后,我需要调用一些特殊事件吗?

如果您知道对我来说很好的引用,请随时在评论中发表。但我到处检查,发现的只是愚蠢的 SignChangeEvent,这不是我需要的。非常感谢所有帮助!

最佳答案

您应该使用方 block 类型 ID 来确认它是一个标志。标志有两个 id,一个是墙上的标志 (68),另一个是立在柱子上的标志 (63)。使用 PlayerInteractEvent 检查玩家是否右键单击了标志。检查玩家是否右键单击了一个方 block 。检查被右键单击的方 block 的 ID 是 63 还是 68。将方 block 状态转换为标志。做任何你想做的事。如果更改标牌上的文字,请确保之后进行更新,否则文字不会显示。这是您应该使用的 Player Listener 函数。

    @EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
    if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
        if(event.getClickedBlock().getTypeId() == 63 || event.getClickedBlock().getTypeId() == 68) {

            Sign sign = (Sign) event.getClickedBlock().getState();
            sign.setLine(0, "Boo Yeah");
            sign.update();

            // Do other stuff if you need to
        }
    }
}

关于events - Minecraft Bukkit 标志操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213718/

相关文章:

events - 在内核调试中调试 NotificationEvent (Windows)

java - 内部类事件处理程序无法访问顶级类字段。为什么?

javascript - jquery 来回点击事件

java - 从一个列表中保存并获取 3 个整数和 1 个字符串

java - 如何为您的 Java 应用程序创建 native 二进制文件?

C# 获取自定义控件内控件的事件

c# - WPF 绑定(bind)因 INotifyPropertyChanged.PropertyChanged 的​​自定义添加和删除访问器而失败

javascript - 链接应该在点击功能的帮助下打开 fancybox ($.fancybox.pos)

java - JFreeChart XYPlot XYImageAnnotation 鼠标点击监听器

java - 表达式的类型必须是数组类型,但它解析为字符串 | java