mirror of
https://github.com/garbagemule/MobArena.git
synced 2025-02-15 12:02:42 +01:00
Allow for dismounting and remounting.
This commit makes it possible for mounted players to dismount. Upon dismounting, the horse AI is set to false to prevent it from moving around. Players attempting to mount an available horse will be thrown off unless they actually own the horse. The owners are free to remount when they want.
This commit is contained in:
parent
c325317153
commit
42416cab2f
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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()) {
|
||||
|
Loading…
Reference in New Issue
Block a user