我正在尝试制作一个允许你让任何玩家无懈可击的命令 – 也就是神模式.
到目前为止这是我的代码(虽然它是所有的样板)
@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来触发一个不应该遇见的玩家不应该遇到的事情,它也可能导致无法预料的后果.
最佳答案
您将需要使用event.setCancelled(true).
如果您当前使用的代码正在运行,则必须使用旧的事件API(以及旧版本的bukkit),我建议您升级bukkit.使用new event API的代码看起来像这样:
@EventHandler
public void onPlayerDamage(EntityDamageEvent event) {
if(godModed.containsKey(event.getEntity())) {
event.setCancelled(true);
}
}