我正在开发一个插件,允许玩家在具有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
感谢您花时间帮助我。
答案 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语句依赖服务器上的全局变量,然后重新编译&保存。然后,您可以在插件内编辑此全局变量(例如PlayerMeta
或FixedMetaDataValues
)。
对问题2的回答:再次,这将要求您进行反编译,编辑和重新编译。虽然这会更简单,因为您必须真正为此做的就是删除
sender.sendMessage("You can't pvp here"); part of the code.
P.S:你应该检查这个插件是否有配置文件,因为如果我说它可能有关闭此PvP消息的设置