3

我在 Bukkit 工作,基本上我需要制作一个方法,以便在右键单击一个标志时,它会做一些事情。在这种情况下,它将是套件的清单,但是当我遇到它时,我会越过那座桥。

现在,我对如何右键单击标志来让他们做事感到困惑。我想我可能应该得到右键单击的块,检查它是否是一个标志,然后检查标志上写的内容。但是,我不知道如何将其识别为标志,因为我对 2 个标志材料的存在感到困惑,SIGN并且SIGN_POST. 在那之后,我需要打电话给一些特殊的事件吗?

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

4

1 回答 1

3

您应该使用块类型 ID 来确认它是一个标志。标志有两个 ID,一个是墙上的标志 (68),另一个是立在柱子上的标志 (63)。使用 PlayerInteractEvent 检查玩家是否右键单击该标志。检查玩家是否右键单击了一个块。检查被右键单击的方块的 ID 是 63 还是 68。将方块状态转换为符号。做任何你想做的事。如果您更改了标牌上的文字,请确保在之后进行更新,否则文字将不会显示。这是您应该使用的 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
        }
    }
}
于 2013-08-13T23:14:20.373 回答