防止Bukkit中指定玩家受到伤害?

时间:2012-11-29 18:24:17

标签: java minecraft bukkit

我正在尝试制作一个允许你让任何玩家无懈可击的命令 - 也就是神模式。

到目前为止这是我的代码(尽管它都是样板文件)

@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
    if(event.getEntity() instaceof Player) {
        if(godModed.containsKey(event.getPlayer())) {
            //This is where I need the code to go - something to cancel the damage.
        }
    }
}

godModed是一个HashMap godModed,其中包含目前处于模糊状态的所有玩家。当他们关闭godmode时,他们将从地图中删除。

命令本身工作正常 - 我现在让它向触发它的玩家发送消息,并且我还将它添加到godModed(如果它们尚未打开)。但是,我无法弄清楚如何真正防止对玩家的伤害。我想完全阻止它,而不仅仅是事后医治它们;虽然后者可能会起作用,但如果其他mod看到onEntityDamage来触发一个不应该遇见的玩家不应该遇到的事情,也可能导致不可预见的后果。

1 个答案:

答案 0 :(得分:4)

您需要使用event.setCancelled(true)

如果您当前使用的代码正在运行,您必须使用旧的事件API(以及旧版本的bukkit),我建议您升级bukkit。使用new event API的代码看起来像这样:

@EventHandler
public void onPlayerDamage(EntityDamageEvent event) {
    if(godModed.containsKey(event.getEntity())) {
        event.setCancelled(true);
    }
}