我在 Bukkit 工作,基本上我需要制作一个方法,以便在右键单击标志时执行某些操作。在这种情况下,它将是套件 list ,但我会在到达它时穿过那座桥。
现在我对如何右键单击标志来让它们做事感到困惑。我想我应该得到右键单击的 block ,检查它是否是一个标志,然后检查标志上写的是什么。但是,我不知道如何将其识别为标志,因为我对两种标志 Material SIGN
和 SIGN_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/