diff --git a/src/main/java/com/garbagemule/MobArena/ArenaListener.java b/src/main/java/com/garbagemule/MobArena/ArenaListener.java index 6f589fe..bf143a6 100644 --- a/src/main/java/com/garbagemule/MobArena/ArenaListener.java +++ b/src/main/java/com/garbagemule/MobArena/ArenaListener.java @@ -25,6 +25,7 @@ import org.bukkit.block.BlockState; import org.bukkit.block.Sign; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.AbstractHorse; +import org.bukkit.entity.AnimalTamer; import org.bukkit.entity.Entity; import org.bukkit.entity.Horse; import org.bukkit.entity.LivingEntity; @@ -75,6 +76,7 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.event.vehicle.VehicleExitEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.InventoryHolder; @@ -1269,6 +1271,27 @@ public class ArenaListener arena.playerLeave(p); } + public void onVehicleEnter(VehicleEnterEvent event) { + Entity entity = event.getEntered(); + if (!(entity instanceof Player)) return; + + Player p = (Player) entity; + if (!arena.inArena(p)) return; + + Vehicle vehicle = event.getVehicle(); + if (!(vehicle instanceof Horse)) return; + + Horse horse = (Horse) vehicle; + if (!monsters.hasMount(horse)) return; + + AnimalTamer tamer = horse.getOwner(); + if (tamer.equals(p)) { + horse.setAI(true); + } else { + event.setCancelled(true); + } + } + public void onVehicleExit(VehicleExitEvent event) { LivingEntity entity = event.getExited(); if (!(entity instanceof Player)) return; @@ -1279,8 +1302,9 @@ public class ArenaListener Vehicle vehicle = event.getVehicle(); if (!(vehicle instanceof Horse)) return; - if (monsters.hasMount(vehicle)) { - event.setCancelled(true); - } + Horse horse = (Horse) vehicle; + if (!monsters.hasMount(horse)) return; + + horse.setAI(false); } } diff --git a/src/main/java/com/garbagemule/MobArena/listeners/MAGlobalListener.java b/src/main/java/com/garbagemule/MobArena/listeners/MAGlobalListener.java index 7abe42a..a9a319e 100644 --- a/src/main/java/com/garbagemule/MobArena/listeners/MAGlobalListener.java +++ b/src/main/java/com/garbagemule/MobArena/listeners/MAGlobalListener.java @@ -42,6 +42,7 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.event.vehicle.VehicleEnterEvent; import org.bukkit.event.vehicle.VehicleExitEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldUnloadEvent; @@ -361,6 +362,13 @@ public class MAGlobalListener implements Listener } } + @EventHandler(priority = EventPriority.NORMAL) + public void vehicleEnter(VehicleEnterEvent event) { + for (Arena arena : am.getArenas()) { + arena.getEventListener().onVehicleEnter(event); + } + } + @EventHandler(priority = EventPriority.NORMAL) public void vehicleExit(VehicleExitEvent event) { for (Arena arena : am.getArenas()) {