Allow armor stands in arenas and lobbies.
This commit adds an event handler for the PlayerArmorStandManipulateEvent and cancels it if the arena protection is on, we aren't in edit mode, and the region contains the armor stand. The same logic applies to the armor stand damage event.
This commit is contained in:
@@ -26,7 +26,9 @@ import org.bukkit.block.Sign;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.entity.AbstractHorse;
|
||||
import org.bukkit.entity.AnimalTamer;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Horse;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Ocelot;
|
||||
@@ -69,6 +71,7 @@ import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.entity.PotionSplashEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
@@ -454,6 +457,10 @@ public class ArenaListener
|
||||
return;
|
||||
}
|
||||
|
||||
if (arena.inEditMode() && event.getEntityType() == EntityType.ARMOR_STAND) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getSpawnReason() != SpawnReason.CUSTOM) {
|
||||
if (event.getSpawnReason() == SpawnReason.BUILD_IRONGOLEM || event.getSpawnReason() == SpawnReason.BUILD_SNOWMAN) {
|
||||
monsters.addGolem(event.getEntity());
|
||||
@@ -717,6 +724,9 @@ public class ArenaListener
|
||||
else if (damagee instanceof Ocelot && arena.hasPet(damagee)) {
|
||||
onPetDamage(event, (Ocelot) damagee, damager);
|
||||
}
|
||||
else if (damagee instanceof ArmorStand) {
|
||||
onArmorStandDamage(event);
|
||||
}
|
||||
// Mount
|
||||
else if (damagee instanceof AbstractHorse && monsters.hasMount(damagee)) {
|
||||
onMountDamage(event, (Horse) damagee, damager);
|
||||
@@ -772,6 +782,12 @@ public class ArenaListener
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
private void onArmorStandDamage(EntityDamageEvent event) {
|
||||
if (protect && !arena.inEditMode() && region.contains(event.getEntity().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void onMountDamage(EntityDamageEvent event, Horse mount, Entity damager) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
@@ -1101,6 +1117,12 @@ public class ArenaListener
|
||||
}
|
||||
}
|
||||
|
||||
public void onPlayerArmorStandManipulate(PlayerArmorStandManipulateEvent event) {
|
||||
if (protect && !arena.inEditMode() && region.contains(event.getRightClicked().getLocation())) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleReadyBlock(Player p) {
|
||||
if (arena.getArenaPlayer(p).getArenaClass() != null) {
|
||||
arena.getMessenger().tell(p, Msg.LOBBY_PLAYER_READY);
|
||||
|
||||
@@ -33,6 +33,7 @@ import org.bukkit.event.entity.PotionSplashEvent;
|
||||
import org.bukkit.event.hanging.HangingBreakEvent;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerArmorStandManipulateEvent;
|
||||
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
@@ -304,6 +305,13 @@ public class MAGlobalListener implements Listener
|
||||
arena.getEventListener().onPlayerInteract(event);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void playerArmorStandManipulate(PlayerArmorStandManipulateEvent event) {
|
||||
if (!am.isEnabled()) return;
|
||||
for (Arena arena : am.getArenas())
|
||||
arena.getEventListener().onPlayerArmorStandManipulate(event);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL)
|
||||
public void playerJoin(PlayerJoinEvent event) {
|
||||
InventoryManager.restoreFromFile(plugin, event.getPlayer());
|
||||
|
||||
Reference in New Issue
Block a user