我正在尝试制作一个允许你让任何玩家无懈可击的命令 - 也就是神模式。
到目前为止这是我的代码(尽管它都是样板文件)
@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
来触发一个不应该遇见的玩家不应该遇到的事情,也可能导致不可预见的后果。
答案 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);
}
}