diff --git a/plugin.yml b/plugin.yml index 64801178..9e6f135e 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,5 +1,5 @@ name: Factions -version: 1.1.3 +version: 1.1.4 main: com.bukkit.mcteam.factions.Factions commands: f: diff --git a/src/com/bukkit/mcteam/factions/Conf.java b/src/com/bukkit/mcteam/factions/Conf.java index 1f1b50bf..4397a7eb 100644 --- a/src/com/bukkit/mcteam/factions/Conf.java +++ b/src/com/bukkit/mcteam/factions/Conf.java @@ -53,6 +53,11 @@ public class Conf { public static double territoryShieldFactor = 0.5; public static boolean territoryBlockCreepers = false; public static boolean territoryBlockFireballs = false; + public static boolean territoryBlockTNT = false; + + public static boolean safeZoneDenyBuild = true; + public static boolean safeZoneDenyUseage = true; + public static boolean safeZoneBlockTNT = true; public static Set territoryProtectedMaterials = new HashSet(); public static Set territoryDenyUseageMaterials = new HashSet(); diff --git a/src/com/bukkit/mcteam/factions/listeners/FactionsBlockListener.java b/src/com/bukkit/mcteam/factions/listeners/FactionsBlockListener.java index 4cfee8c4..309a5f93 100644 --- a/src/com/bukkit/mcteam/factions/listeners/FactionsBlockListener.java +++ b/src/com/bukkit/mcteam/factions/listeners/FactionsBlockListener.java @@ -64,7 +64,7 @@ public class FactionsBlockListener extends BlockListener { FPlayer me = FPlayer.get(player); if (otherFaction.isSafeZone()) { - if (Factions.hasPermManageSafeZone(player)) { + if (Factions.hasPermManageSafeZone(player) || !Conf.safeZoneDenyBuild) { return true; } me.sendMessage("You can't "+action+" in a safe zone."); diff --git a/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java b/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java index ab67a252..cbda20e3 100644 --- a/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java +++ b/src/com/bukkit/mcteam/factions/listeners/FactionsEntityListener.java @@ -65,7 +65,6 @@ public class FactionsEntityListener extends EntityListener { } - // TODO what happens with the creeper or fireball then? Must we delete them manually? @Override public void onEntityExplode(EntityExplodeEvent event) { @@ -86,6 +85,9 @@ public class FactionsEntityListener extends EntityListener { } else if ((Conf.territoryBlockFireballs || faction.isSafeZone()) && event.getEntity() instanceof Fireball) { // ghast fireball which might need prevention, if inside faction territory event.setCancelled(true); + } else if (Conf.territoryBlockTNT || (faction.isSafeZone() && Conf.safeZoneBlockTNT)) { + // we'll assume it's TNT, which might need prevention, if inside faction territory or safe zone + event.setCancelled(true); } } diff --git a/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java b/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java index b08f0476..5bb8376a 100644 --- a/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java +++ b/src/com/bukkit/mcteam/factions/listeners/FactionsPlayerListener.java @@ -171,7 +171,7 @@ public class FactionsPlayerListener extends PlayerListener{ FPlayer me = FPlayer.get(player); - if (otherFaction.isSafeZone()) { + if (otherFaction.isSafeZone() && Conf.safeZoneDenyUseage) { if (Factions.hasPermManageSafeZone(player)) { return true; }