加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:22:47 所属栏目:Java 来源:网络整理
导读:我正在尝试制作一个允许你让任何玩家无懈可击的命令 也就是神模式. 到目前为止这是我的代码(虽然它是所有的样板) @EventHandlerpublic void onEntityDamage(EntityDamageEvent event) { if(event.getEntity() instaceof Player) { if(godModed.containsKey(e

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

到目前为止这是我的代码(虽然它是所有的样板)

@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);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读