Added option ("territoryBlockCreepers") to prevent creepers from destroying blocks if they explode inside faction owned territory, which defaults to disabled; if enabled, it prevents griefing by way of luring creepers into a faction's territory
note that creepers will still explode and hurt nearby players and mobs, they just won't destroy blocks
This commit is contained in:
		@@ -42,6 +42,7 @@ public class Factions extends JavaPlugin {
 | 
			
		||||
		pm.registerEvent(Event.Type.PLAYER_QUIT, this.playerListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.ENTITY_DEATH, this.entityListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.ENTITY_DAMAGED, this.entityListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.ENTITY_EXPLODE, this.entityListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.BLOCK_DAMAGED, this.blockListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.BLOCK_PLACED, this.blockListener, Event.Priority.Normal, this);
 | 
			
		||||
		pm.registerEvent(Event.Type.BLOCK_INTERACT, this.blockListener, Event.Priority.Normal, this);		
 | 
			
		||||
 
 | 
			
		||||
@@ -42,6 +42,7 @@ public class Conf {
 | 
			
		||||
	public static int mapWidth = 49;
 | 
			
		||||
 | 
			
		||||
	public static double territoryShieldFactor = 0.5;
 | 
			
		||||
	public static boolean territoryBlockCreepers = false;
 | 
			
		||||
	public static List<Material> territoryProtectedMaterials = new ArrayList<Material>();
 | 
			
		||||
	
 | 
			
		||||
	// Command names / aliases	
 | 
			
		||||
 
 | 
			
		||||
@@ -4,15 +4,19 @@ import java.text.DecimalFormat;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.entity.Entity;
 | 
			
		||||
import org.bukkit.entity.LivingEntity;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityDamageByProjectileEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityDeathEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityExplodeEvent;
 | 
			
		||||
import org.bukkit.event.entity.EntityListener;
 | 
			
		||||
 | 
			
		||||
import com.bukkit.mcteam.factions.Factions;
 | 
			
		||||
import com.bukkit.mcteam.factions.entities.Board;
 | 
			
		||||
import com.bukkit.mcteam.factions.entities.Conf;
 | 
			
		||||
import com.bukkit.mcteam.factions.entities.Coord;
 | 
			
		||||
import com.bukkit.mcteam.factions.entities.Follower;
 | 
			
		||||
import com.bukkit.mcteam.factions.struct.Relation;
 | 
			
		||||
 | 
			
		||||
@@ -59,7 +63,20 @@ public class FactionsEntityListener extends EntityListener {
 | 
			
		||||
    		}
 | 
			
		||||
        }
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public void onEntityExplode(EntityExplodeEvent event)
 | 
			
		||||
	{
 | 
			
		||||
		if (Conf.territoryBlockCreepers && event.getEntity() instanceof LivingEntity)
 | 
			
		||||
		{	// creeper which might need prevention, if inside faction territory
 | 
			
		||||
			if (Board.get(event.getLocation().getWorld()).getFactionIdAt(Coord.from(event.getLocation())) > 0)
 | 
			
		||||
			{
 | 
			
		||||
				event.setCancelled(true);
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public boolean canDamagerHurtDamagee(Entity damager, Entity damagee, int damage) {
 | 
			
		||||
		if ( ! (damager instanceof Player)) {
 | 
			
		||||
			return true;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user