Clean up the Monsters flag logic.
This commit is contained in:
		@@ -7,6 +7,7 @@ import org.bukkit.Location;
 | 
				
			|||||||
import org.bukkit.block.Block;
 | 
					import org.bukkit.block.Block;
 | 
				
			||||||
import org.bukkit.entity.Enderman;
 | 
					import org.bukkit.entity.Enderman;
 | 
				
			||||||
import org.bukkit.entity.Entity;
 | 
					import org.bukkit.entity.Entity;
 | 
				
			||||||
 | 
					import org.bukkit.entity.EntityType;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
import org.bukkit.entity.Wither;
 | 
					import org.bukkit.entity.Wither;
 | 
				
			||||||
import org.bukkit.event.Cancellable;
 | 
					import org.bukkit.event.Cancellable;
 | 
				
			||||||
@@ -22,10 +23,12 @@ import org.bukkit.event.block.BlockPistonRetractEvent;
 | 
				
			|||||||
import org.bukkit.event.block.BlockPlaceEvent;
 | 
					import org.bukkit.event.block.BlockPlaceEvent;
 | 
				
			||||||
import org.bukkit.event.block.BlockSpreadEvent;
 | 
					import org.bukkit.event.block.BlockSpreadEvent;
 | 
				
			||||||
import org.bukkit.event.block.BlockIgniteEvent.IgniteCause;
 | 
					import org.bukkit.event.block.BlockIgniteEvent.IgniteCause;
 | 
				
			||||||
 | 
					import org.bukkit.event.entity.CreatureSpawnEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityChangeBlockEvent;
 | 
					import org.bukkit.event.entity.EntityChangeBlockEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
					import org.bukkit.event.entity.EntityDamageEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityExplodeEvent;
 | 
					import org.bukkit.event.entity.EntityExplodeEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityRegainHealthEvent;
 | 
					import org.bukkit.event.entity.EntityRegainHealthEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.entity.EntityTargetEvent;
 | 
				
			||||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
 | 
					import org.bukkit.event.hanging.HangingBreakByEntityEvent;
 | 
				
			||||||
import org.bukkit.event.hanging.HangingBreakEvent;
 | 
					import org.bukkit.event.hanging.HangingBreakEvent;
 | 
				
			||||||
import org.bukkit.event.hanging.HangingPlaceEvent;
 | 
					import org.bukkit.event.hanging.HangingPlaceEvent;
 | 
				
			||||||
@@ -38,6 +41,7 @@ import org.bukkit.event.server.PluginEnableEvent;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import com.massivecraft.factions.BoardColl;
 | 
					import com.massivecraft.factions.BoardColl;
 | 
				
			||||||
import com.massivecraft.factions.ConfServer;
 | 
					import com.massivecraft.factions.ConfServer;
 | 
				
			||||||
 | 
					import com.massivecraft.factions.Const;
 | 
				
			||||||
import com.massivecraft.factions.FFlag;
 | 
					import com.massivecraft.factions.FFlag;
 | 
				
			||||||
import com.massivecraft.factions.FPerm;
 | 
					import com.massivecraft.factions.FPerm;
 | 
				
			||||||
import com.massivecraft.factions.FPlayer;
 | 
					import com.massivecraft.factions.FPlayer;
 | 
				
			||||||
@@ -65,6 +69,47 @@ public class FactionsListenerMain implements Listener
 | 
				
			|||||||
		Bukkit.getPluginManager().registerEvents(this, Factions.get());
 | 
							Bukkit.getPluginManager().registerEvents(this, Factions.get());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						// FLAG: MONSTERS
 | 
				
			||||||
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
 | 
				
			||||||
 | 
						public void blockMonsters(CreatureSpawnEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// If a monster is spawning ...
 | 
				
			||||||
 | 
							if ( ! Const.ENTITY_TYPES_MONSTERS.contains(event.getEntityType())) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... at a place where monsters are forbidden ...
 | 
				
			||||||
 | 
							PS ps = PS.valueOf(event.getLocation());
 | 
				
			||||||
 | 
							Faction faction = BoardColl.get().getFactionAt(ps);
 | 
				
			||||||
 | 
							if (faction.getFlag(FFlag.MONSTERS)) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... block the spawn.
 | 
				
			||||||
 | 
							event.setCancelled(true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
 | 
				
			||||||
 | 
						public void blockMonsters(EntityTargetEvent event)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// If a monster is targeting something ...
 | 
				
			||||||
 | 
							if ( ! Const.ENTITY_TYPES_MONSTERS.contains(event.getEntityType())) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... at a place where monsters are forbidden ...
 | 
				
			||||||
 | 
							PS ps = PS.valueOf(event.getTarget());
 | 
				
			||||||
 | 
							Faction faction = BoardColl.get().getFactionAt(ps);
 | 
				
			||||||
 | 
							if (faction.getFlag(FFlag.MONSTERS)) return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... then if ghast target nothing ...
 | 
				
			||||||
 | 
							if (event.getEntityType() == EntityType.GHAST)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								event.setTarget(null);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							// ... otherwise simply cancel.
 | 
				
			||||||
 | 
							event.setCancelled(true);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
	// FLAG: EXPLOSIONS
 | 
						// FLAG: EXPLOSIONS
 | 
				
			||||||
	// -------------------------------------------- //
 | 
						// -------------------------------------------- //
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -15,11 +15,9 @@ import org.bukkit.entity.Projectile;
 | 
				
			|||||||
import org.bukkit.event.EventHandler;
 | 
					import org.bukkit.event.EventHandler;
 | 
				
			||||||
import org.bukkit.event.EventPriority;
 | 
					import org.bukkit.event.EventPriority;
 | 
				
			||||||
import org.bukkit.event.Listener;
 | 
					import org.bukkit.event.Listener;
 | 
				
			||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
 | 
					 | 
				
			||||||
import org.bukkit.event.entity.EntityCombustByEntityEvent;
 | 
					import org.bukkit.event.entity.EntityCombustByEntityEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
					import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
					import org.bukkit.event.entity.EntityDamageEvent;
 | 
				
			||||||
import org.bukkit.event.entity.EntityTargetEvent;
 | 
					 | 
				
			||||||
import org.bukkit.event.entity.PlayerDeathEvent;
 | 
					import org.bukkit.event.entity.PlayerDeathEvent;
 | 
				
			||||||
import org.bukkit.event.entity.PotionSplashEvent;
 | 
					import org.bukkit.event.entity.PotionSplashEvent;
 | 
				
			||||||
import org.bukkit.potion.PotionEffect;
 | 
					import org.bukkit.potion.PotionEffect;
 | 
				
			||||||
@@ -27,7 +25,6 @@ import org.bukkit.potion.PotionEffectType;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import com.massivecraft.factions.BoardColl;
 | 
					import com.massivecraft.factions.BoardColl;
 | 
				
			||||||
import com.massivecraft.factions.ConfServer;
 | 
					import com.massivecraft.factions.ConfServer;
 | 
				
			||||||
import com.massivecraft.factions.Const;
 | 
					 | 
				
			||||||
import com.massivecraft.factions.FFlag;
 | 
					import com.massivecraft.factions.FFlag;
 | 
				
			||||||
import com.massivecraft.factions.FPlayer;
 | 
					import com.massivecraft.factions.FPlayer;
 | 
				
			||||||
import com.massivecraft.factions.FPlayerColl;
 | 
					import com.massivecraft.factions.FPlayerColl;
 | 
				
			||||||
@@ -110,8 +107,9 @@ public class TodoFactionsEntityListener implements Listener
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		EntityDamageByEntityEvent sub = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(), EntityDamageEvent.DamageCause.FIRE, 0);
 | 
							EntityDamageByEntityEvent sub = new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(), EntityDamageEvent.DamageCause.FIRE, 0);
 | 
				
			||||||
		if ( ! this.canDamagerHurtDamagee(sub, false))
 | 
							if ( ! this.canDamagerHurtDamagee(sub, false))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
			event.setCancelled(true);
 | 
								event.setCancelled(true);
 | 
				
			||||||
		sub = null;
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final Set<PotionEffectType> badPotionEffects = new LinkedHashSet<PotionEffectType>(Arrays.asList(
 | 
						private static final Set<PotionEffectType> badPotionEffects = new LinkedHashSet<PotionEffectType>(Arrays.asList(
 | 
				
			||||||
@@ -276,38 +274,6 @@ public class TodoFactionsEntityListener implements Listener
 | 
				
			|||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
 | 
					 | 
				
			||||||
	public void onCreatureSpawn(CreatureSpawnEvent event)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		if (event.getLocation() == null) return;
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
		PS ps = PS.valueOf(event.getLocation());
 | 
					 | 
				
			||||||
		Faction faction = BoardColl.get().getFactionAt(ps);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (faction.getFlag(FFlag.MONSTERS)) return;
 | 
					 | 
				
			||||||
		if ( ! Const.ENTITY_TYPES_MONSTERS.contains(event.getEntityType())) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		event.setCancelled(true);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
 | 
					 | 
				
			||||||
	public void onEntityTarget(EntityTargetEvent event)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		// if there is a target
 | 
					 | 
				
			||||||
		Entity target = event.getTarget();
 | 
					 | 
				
			||||||
		if (target == null) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		// We are interested in blocking targeting for certain mobs:
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		if ( ! Const.ENTITY_TYPES_MONSTERS.contains(event.getEntity().getType())) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		PS ps = PS.valueOf(target.getLocation());
 | 
					 | 
				
			||||||
		Faction faction = BoardColl.get().getFactionAt(ps);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (faction.getFlag(FFlag.MONSTERS)) return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		event.setCancelled(true);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -267,10 +267,7 @@ public class TodoFactionsPlayerListener implements Listener
 | 
				
			|||||||
	public void onPlayerKick(PlayerKickEvent event)
 | 
						public void onPlayerKick(PlayerKickEvent event)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		FPlayer badGuy = FPlayerColl.get().get(event.getPlayer());
 | 
							FPlayer badGuy = FPlayerColl.get().get(event.getPlayer());
 | 
				
			||||||
		if (badGuy == null)
 | 
							if (badGuy == null) return;
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		SpoutFeatures.playerDisconnect(badGuy);
 | 
							SpoutFeatures.playerDisconnect(badGuy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user