Java 防止对Bukkit中指定玩家造成伤害?

Java 防止对Bukkit中指定玩家造成伤害?,java,minecraft,bukkit,Java,Minecraft,Bukkit,我试着做一个命令,让你可以让任何玩家无敌,也就是说,上帝模式 这是到目前为止我的代码(尽管都是样板) godModed是一个HashMap godModed,其中包含当前godModed的所有玩家。当它们关闭godmode时,它们将从地图中删除 命令本身工作正常-我现在让它向触发它的玩家发送一条消息,如果他们还没有打开,我也让它将玩家添加到godModed。然而,我不知道如何真正防止对玩家造成伤害。我想彻底停止,而不仅仅是事后治愈他们;虽然后者可能会起作用,但如果其他MOD查看onEntityD

我试着做一个命令,让你可以让任何玩家无敌,也就是说,上帝模式

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

godModed
是一个
HashMap godModed
,其中包含当前godModed的所有玩家。当它们关闭godmode时,它们将从地图中删除


命令本身工作正常-我现在让它向触发它的玩家发送一条消息,如果他们还没有打开,我也让它将玩家添加到godModed。然而,我不知道如何真正防止对玩家造成伤害。我想彻底停止,而不仅仅是事后治愈他们;虽然后者可能会起作用,但如果其他MOD查看
onEntityDamage
来触发godmoded玩家不应该遇到的事情,它也可能导致不可预见的后果。

您将希望使用
event.setCancelled(true)

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

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

对不起,我忘了包括第一行。我有@EventHandler,只是复制/粘贴错误。不过,谢谢你的提示,这应该行得通。@krijntote我们不会修改该优先级的事件。使用最高的。
@EventHandler
public void onPlayerDamage(EntityDamageEvent event) {
    if(godModed.containsKey(event.getEntity())) {
        event.setCancelled(true);
    }
}