Handle UseEntity player->player events as PvP.

Fixes WORLDGUARD-4118.
Tell me if this breaks other intended behaviors somehow.
This commit is contained in:
wizjany 2019-07-16 18:44:14 -04:00
parent 79f6635b8a
commit 456a16591b

View File

@ -416,15 +416,16 @@ public void onUseEntity(UseEntityEvent event) {
String what;
/* Hostile / ambient mob override */
final EntityType type = event.getEntity().getType();
if (Entities.isHostile(event.getEntity()) || Entities.isAmbient(event.getEntity())
|| Entities.isNPC(event.getEntity())) {
final Entity entity = event.getEntity();
final EntityType type = entity.getType();
if (Entities.isHostile(entity) || Entities.isAmbient(entity)
|| Entities.isNPC(entity)) {
canUse = event.getRelevantFlags().isEmpty() || query.queryState(BukkitAdapter.adapt(target), associable, combine(event)) != State.DENY;
what = "use that";
/* Paintings, item frames, etc. */
} else if (Entities.isConsideredBuildingIfUsed(event.getEntity())) {
} else if (Entities.isConsideredBuildingIfUsed(entity)) {
if (type == EntityType.ITEM_FRAME && event.getCause().getFirstPlayer() != null
&& ((ItemFrame) event.getEntity()).getItem().getType() != Material.AIR) {
&& ((ItemFrame) entity).getItem().getType() != Material.AIR) {
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.ITEM_FRAME_ROTATE));
what = "change that";
} else if (Entities.isMinecart(type)) {
@ -435,10 +436,14 @@ public void onUseEntity(UseEntityEvent event) {
what = "change that";
}
/* Ridden on use */
} else if (Entities.isRiddenOnUse(event.getEntity())) {
} else if (Entities.isRiddenOnUse(entity)) {
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.RIDE, Flags.INTERACT));
what = "ride that";
} else if (entity instanceof Player && event.getCause().getRootCause() instanceof Player) {
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.INTERACT, Flags.PVP));
what = "use that";
/* Everything else */
} else {
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.INTERACT));