防止对布吉中指定玩家的伤害



我正在尝试制作一个命令,允许您使任何玩家无懈可击 - 即上帝模式。

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

@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。当他们关闭上帝模式时,他们会从地图中删除。

该命令本身工作正常 - 我目前让它向触发它的玩家发送一条消息,如果玩家尚未打开,我也让它将播放器添加到 godModed。但是,我不知道如何真正防止对玩家的伤害。我想完全阻止它,而不仅仅是在事后治愈他们;虽然后者可能有效,但如果其他模组查看onEntityDamage以触发上帝模式玩家不应该遇到的事情,它也可能导致不可预见的后果。

您需要使用 event.setCancelled(true) .

如果您当前的代码正在运行,则必须使用旧的事件API(以及旧版本的bukkit),我建议您升级bukkit。 使用新事件 API 的代码如下所示:

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

最新更新