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; | ||||
|  | ||||
| @@ -60,6 +64,19 @@ 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
	 
				 Brettflan
					Brettflan