覆盖WorldGuard标志

时间:2015-10-12 21:32:20

标签: java bukkit

我正在开发一个插件,允许玩家在具有PVP: deny标志的WorldGuard区域中进行PVP,但仅限于某个条件为真。

我已经尝试过: - 将priority设为HIGHEST - 设置event.setCancelled(false)

我是Bukkit编程的新手,所以我还不熟悉这些功能。

问题:是否可以暂时为玩家攻击者设置WorldGuard旁路许可?我怎样才能做到这一点?我试过了,但没有成功。

问题2:是否可以取消发送"你不能在这里进行PvP的WorldGuard活动!"消息?

@EventHandler(priority=EventPriority.HIGHEST)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
    Player attacker = (Player) event.getDamager();

    if(!conditionIsTrue) {
        event.setCancelled(true);
    }
    else {
        event.setCancelled(false);
    }
} // onEntityDamageByEntity

感谢您花时间帮助我。

2 个答案:

答案 0 :(得分:0)

我做了一些更多的研究,因为没有找到有用的答案。


问题1:是否可以暂时为玩家攻击者设置WorldGuard旁路权限?

答案:有可能,但不推荐。取消WorldGuard活动更容易。


问题2:是否可以取消发送"你不能在这里进行PvP的WorldGuard活动!"消息?

答案:是的,取消onDisallowedPVPEvent将停止阻止PVP和消息。


代码:

@EventHandler
public void onDisallowPvpEvent(DisallowedPVPEvent event) {
    if(//condition) {
        event.setCancelled(true);
    }
}

答案 1 :(得分:-2)

对问题1的回答:关于你说Bukkit的新内容,我会说不,这是不可能的。实现这一目标的唯一方法是反编译WorldGuard,在你想控制的部分添加一个if语句,使if语句依赖服务器上的全局变量,然后重新编译&保存。然后,您可以在插件内编辑此全局变量(例如PlayerMetaFixedMetaDataValues)。

对问题2的回答:再次,这将要求您进行反编译,编辑和重新编译。虽然这会更简单,因为您必须真正为此做的就是删除     sender.sendMessage("You can't pvp here"); part of the code.

P.S:你应该检查这个插件是否有配置文件,因为如果我说它可能有关闭此PvP消息的设置