Skip to content

Commit 725dd2a

Browse files
committed
Restore previous behavior of ride/interact.
Closes #2194.
1 parent 4ec325e commit 725dd2a

2 files changed

Lines changed: 20 additions & 6 deletions

File tree

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@
126126
import org.bukkit.event.entity.EntityUnleashEvent;
127127
import org.bukkit.event.entity.ExpBottleEvent;
128128
import org.bukkit.event.entity.LingeringPotionSplashEvent;
129+
import org.bukkit.event.entity.PlayerLeashEntityEvent;
129130
import org.bukkit.event.entity.PotionSplashEvent;
130131
import org.bukkit.event.entity.ProjectileHitEvent;
131132
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
@@ -940,10 +941,17 @@ public void onEntityCombust(EntityCombustEvent event) {
940941
}
941942
}
942943

944+
@EventHandler(ignoreCancelled = true)
945+
public void onEntityLeash(PlayerLeashEntityEvent event) {
946+
UseEntityEvent useEntityEvent = new UseEntityEvent(event, create(event.getPlayer()), event.getEntity());
947+
useEntityEvent.getRelevantFlags().add(Flags.RIDE);
948+
useEntityEvent.getRelevantFlags().add(Flags.INTERACT);
949+
Events.fireToCancel(event, useEntityEvent);
950+
}
951+
943952
@EventHandler(ignoreCancelled = true)
944953
public void onEntityUnleash(EntityUnleashEvent event) {
945-
if (event instanceof PlayerUnleashEntityEvent) {
946-
PlayerUnleashEntityEvent playerEvent = (PlayerUnleashEntityEvent) event;
954+
if (event instanceof PlayerUnleashEntityEvent playerEvent) {
947955
Events.fireToCancel(playerEvent, new UseEntityEvent(playerEvent, create(playerEvent.getPlayer()), event.getEntity()));
948956
}
949957
}

worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import org.bukkit.event.Event.Result;
6363
import org.bukkit.event.EventHandler;
6464
import org.bukkit.event.entity.EntityMountEvent;
65+
import org.bukkit.event.entity.PlayerLeashEntityEvent;
6566
import org.bukkit.event.inventory.InventoryMoveItemEvent;
6667
import org.bukkit.event.inventory.InventoryOpenEvent;
6768
import org.bukkit.event.player.PlayerTakeLecternBookEvent;
@@ -430,10 +431,15 @@ public void onUseEntity(UseEntityEvent event) {
430431
}
431432
/* Ridden on use */
432433
} else if (Entities.isRiddenOnUse(entity)) {
433-
// this is bypassed here as it's handled by the entity mount listener below
434-
// bukkit actually gives three events in this case - in order: PlayerInteractAtEntity, VehicleEnter, EntityMount
435-
canUse = true;
436-
what = "ride that";
434+
if (event.getOriginalEvent() instanceof PlayerLeashEntityEvent) {
435+
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event));
436+
what = "use that";
437+
} else {
438+
// this is bypassed here as it's handled by the entity mount listener below
439+
// bukkit actually gives three events in this case - in order: PlayerInteractAtEntity, VehicleEnter, EntityMount
440+
canUse = true;
441+
what = "ride that";
442+
}
437443
/* Everything else */
438444
} else {
439445
canUse = query.testBuild(BukkitAdapter.adapt(target), associable, combine(event, Flags.INTERACT));

0 commit comments

Comments
 (0)