mirror of
https://github.com/garbagemule/MobArena.git
synced 2025-02-11 10:01:30 +01:00
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:
parent
51fa78acd9
commit
548d8c7e4f
@ -19,6 +19,7 @@ These changes will (most likely) be included in the next version.
|
||||
- If MobArena fails to load due to config-file errors, it now enters a type of "error state". In this state, it responds to all commands (except for the reload command) with a short message explaining why it's disabled.
|
||||
- It is now possible to reload config-files with `/ma reload`.
|
||||
- The reload command now also reloads global settings, e.g. the global messenger prefix.
|
||||
- Armor stands can now be placed in arenas and lobbies.
|
||||
|
||||
Thanks to:
|
||||
- PrinceIonia and Nesseley for help with test of dev builds
|
||||
|
@ -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());
|
||||
|
Loading…
Reference in New Issue
Block a user