summaryrefslogtreecommitdiffstats
path: root/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
diff options
context:
space:
mode:
authorementalo <ementalodev@gmx.co.uk>2012-05-28 00:37:28 +0100
committerementalo <ementalodev@gmx.co.uk>2012-05-28 00:37:28 +0100
commit373a48da5412c6005f7ad2fe4bec41c68d4eb2a2 (patch)
tree3ebc11bffcb1dde3f3bd338fca97656d03511e70 /EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
parent45c1e347b0698318ebd3772c540a9a52b6509daf (diff)
parentb69a16bcf0abac1ebd2ca3d35520cfcb5b433e88 (diff)
downloadEssentials-373a48da5412c6005f7ad2fe4bec41c68d4eb2a2.tar
Essentials-373a48da5412c6005f7ad2fe4bec41c68d4eb2a2.tar.gz
Essentials-373a48da5412c6005f7ad2fe4bec41c68d4eb2a2.tar.lz
Essentials-373a48da5412c6005f7ad2fe4bec41c68d4eb2a2.tar.xz
Essentials-373a48da5412c6005f7ad2fe4bec41c68d4eb2a2.zip
Master -> 3.0
Diffstat (limited to 'EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java')
-rw-r--r--EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java512
1 files changed, 286 insertions, 226 deletions
diff --git a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
index 8e5e9cca8..f69ede53a 100644
--- a/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
+++ b/EssentialsProtect/src/com/earth2me/essentials/protect/EssentialsProtectBlockListener.java
@@ -1,14 +1,14 @@
package com.earth2me.essentials.protect;
import static com.earth2me.essentials.I18n._;
-import com.earth2me.essentials.IEssentials;
-import com.earth2me.essentials.User;
+import com.earth2me.essentials.api.IEssentials;
import com.earth2me.essentials.protect.data.IProtectedBlock;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
+import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -34,66 +34,74 @@ public class EssentialsProtectBlockListener implements Listener
return;
}
- final User user = ess.getUser(event.getPlayer());
-
- if (prot.getSettingBool(ProtectConfig.disable_build) && !user.canBuild())
+ final Player user = event.getPlayer();
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
{
- event.setCancelled(true);
- return;
- }
+ if (!Permissions.BUILD.isAuthorized(user))
+ {
+ event.setCancelled(true);
+ return;
+ }
- final Block blockPlaced = event.getBlockPlaced();
- final int id = blockPlaced.getTypeId();
+ final Block blockPlaced = event.getBlockPlaced();
+ final int id = blockPlaced.getTypeId();
- if (prot.checkProtectionItems(ProtectConfig.blacklist_placement, id) && !user.isAuthorized("essentials.protect.exemptplacement"))
- {
- event.setCancelled(true);
- return;
- }
+ if (!BlockPlacePermissions.getPermission(blockPlaced.getType()).isAuthorized(user))
+ {
+ event.setCancelled(true);
+ return;
+ }
- if (!user.hasPermission("essentials.protect.alerts.notrigger")
- && prot.checkProtectionItems(ProtectConfig.alert_on_placement, id))
- {
- prot.getEssentialsConnect().alert(user, blockPlaced.getType().toString(), _("alertPlaced"));
- }
+ if (!Permissions.ALERTS_NOTRIGGER.isAuthorized(user) &&
+ settings.getData().getAlertOnPlacement().contains(blockPlaced.getType()))
+ {
+ prot.getEssentialsConnect().alert(user, blockPlaced.getType().toString(), _("alertPlaced"));
+ }
- final Block below = blockPlaced.getRelative(BlockFace.DOWN);
- if ((below.getType() == Material.RAILS || below.getType() == Material.POWERED_RAIL || below.getType() == Material.DETECTOR_RAIL)
- && prot.getSettingBool(ProtectConfig.prevent_block_on_rail)
- && isProtected(below, user))
- {
- event.setCancelled(true);
- return;
- }
+ final Block below = blockPlaced.getRelative(BlockFace.DOWN);
+ if ((below.getType() == Material.RAILS || below.getType() == Material.POWERED_RAIL || below.getType() == Material.DETECTOR_RAIL)
+ && settings.getData().getSignsAndRails().isPreventBlockAboveRails()
+ && isProtected(below, user, settings))
+ {
+ event.setCancelled(true);
+ return;
+ }
- final List<Block> protect = new ArrayList<Block>();
- if ((blockPlaced.getType() == Material.RAILS || blockPlaced.getType() == Material.POWERED_RAIL || blockPlaced.getType() == Material.DETECTOR_RAIL)
- && prot.getSettingBool(ProtectConfig.protect_rails)
- && user.isAuthorized("essentials.protect"))
- {
- protect.add(blockPlaced);
- if (prot.getSettingBool(ProtectConfig.protect_below_rails)
- && !isProtected(blockPlaced.getRelative(BlockFace.DOWN), user))
+ final List<Block> protect = new ArrayList<Block>();
+ if ((blockPlaced.getType() == Material.RAILS || blockPlaced.getType() == Material.POWERED_RAIL || blockPlaced.getType() == Material.DETECTOR_RAIL)
+ && settings.getData().getSignsAndRails().isProtectRails()
+ && Permissions.RAILS.isAuthorized(user))
{
- protect.add(blockPlaced.getRelative(BlockFace.DOWN));
+ protect.add(blockPlaced);
+ if (settings.getData().getSignsAndRails().isBlockBelow()
+ && !isProtected(blockPlaced.getRelative(BlockFace.DOWN), user, settings))
+ {
+ protect.add(blockPlaced.getRelative(BlockFace.DOWN));
+ }
}
- }
- if ((blockPlaced.getType() == Material.SIGN_POST || blockPlaced.getType() == Material.WALL_SIGN)
- && prot.getSettingBool(ProtectConfig.protect_signs)
- && user.isAuthorized("essentials.protect"))
- {
- protect.add(blockPlaced);
- if (prot.getSettingBool(ProtectConfig.protect_against_signs)
- && event.getBlockAgainst().getType() != Material.SIGN_POST
- && event.getBlockAgainst().getType() != Material.WALL_SIGN
- && !isProtected(event.getBlockAgainst(), user))
+ /*if ((blockPlaced.getType() == Material.SIGN_POST || blockPlaced.getType() == Material.WALL_SIGN)
+ && settings.getData().getSignsAndRails().isProtectSigns()
+ && user.isAuthorized("essentials.protect"))
+ {
+ protect.add(blockPlaced);
+ if (settings.getData().getSignsAndRails().isBlockBelow()
+ && event.getBlockAgainst().getType() != Material.SIGN_POST
+ && event.getBlockAgainst().getType() != Material.WALL_SIGN
+ && !isProtected(event.getBlockAgainst(), user, settings))
+ {
+ protect.add(event.getBlockAgainst());
+ }
+ }*/
+ for (Block block : protect)
{
- protect.add(event.getBlockAgainst());
+ prot.getStorage().protectBlock(block, user.getName());
}
}
- for (Block block : protect)
+ finally
{
- prot.getStorage().protectBlock(block, user.getName());
+ settings.unlock();
}
}
@@ -104,47 +112,56 @@ public class EssentialsProtectBlockListener implements Listener
{
return;
}
- final Block block = event.getBlock();
- if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL)
- && prot.getSettingBool(ProtectConfig.protect_rails))
- {
- event.setCancelled(true);
- return;
- }
- if ((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST)
- && prot.getSettingBool(ProtectConfig.protect_signs))
- {
- event.setCancelled(true);
- return;
- }
- if (event.getBlock().getType() == Material.OBSIDIAN
- || event.getBlock().getRelative(BlockFace.DOWN).getType() == Material.OBSIDIAN)
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
{
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_portal_creation));
- return;
- }
+ final Block block = event.getBlock();
+ if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL)
+ && settings.getData().getSignsAndRails().isProtectRails())
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST)
+ && settings.getData().getSignsAndRails().isProtectSigns())
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (event.getBlock().getType() == Material.OBSIDIAN
+ || event.getBlock().getRelative(BlockFace.DOWN).getType() == Material.OBSIDIAN)
+ {
+ event.setCancelled(settings.getData().getPrevent().isPortalCreation());
+ return;
+ }
- if (event.getCause().equals(BlockIgniteEvent.IgniteCause.SPREAD))
- {
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_fire_spread));
- return;
- }
+ if (event.getCause().equals(BlockIgniteEvent.IgniteCause.SPREAD))
+ {
+ event.setCancelled(settings.getData().getPrevent().isFirespread());
+ return;
+ }
- if (event.getCause().equals(BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL))
- {
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_flint_fire));
- return;
- }
+ if (event.getCause().equals(BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL) && event.getPlayer() != null)
+ {
+ event.setCancelled(Permissions.USEFLINTSTEEL.isAuthorized(event.getPlayer()));
+ return;
+ }
- if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LAVA))
- {
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lava_fire_spread));
- return;
+ if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LAVA))
+ {
+ event.setCancelled(settings.getData().getPrevent().isLavaFirespread());
+ return;
+ }
+ if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LIGHTNING))
+ {
+ event.setCancelled(settings.getData().getPrevent().isLightningFirespread());
+ return;
+ }
}
- if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LIGHTNING))
+ finally
{
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lightning_fire_spread));
- return;
+ settings.unlock();
}
}
@@ -155,37 +172,45 @@ public class EssentialsProtectBlockListener implements Listener
{
return;
}
- final Block toBlock = event.getToBlock();
- if ((toBlock.getType() == Material.RAILS || toBlock.getType() == Material.POWERED_RAIL || toBlock.getType() == Material.DETECTOR_RAIL)
- && prot.getSettingBool(ProtectConfig.protect_rails))
- {
- event.setCancelled(true);
- return;
- }
- if ((toBlock.getType() == Material.WALL_SIGN || toBlock.getType() == Material.SIGN_POST)
- && prot.getSettingBool(ProtectConfig.protect_signs))
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
{
- event.setCancelled(true);
- return;
- }
+ final Block toBlock = event.getToBlock();
+ if ((toBlock.getType() == Material.RAILS || toBlock.getType() == Material.POWERED_RAIL || toBlock.getType() == Material.DETECTOR_RAIL)
+ && settings.getData().getSignsAndRails().isProtectRails())
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((toBlock.getType() == Material.WALL_SIGN || toBlock.getType() == Material.SIGN_POST)
+ && settings.getData().getSignsAndRails().isProtectSigns())
+ {
+ event.setCancelled(true);
+ return;
+ }
- final Block block = event.getBlock();
- if (block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER)
- {
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_flow));
- return;
- }
+ final Block block = event.getBlock();
+ if (block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER)
+ {
+ event.setCancelled(settings.getData().getPrevent().isWaterFlow());
+ return;
+ }
- if (block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA)
- {
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lava_flow));
- return;
+ if (block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA)
+ {
+ event.setCancelled(settings.getData().getPrevent().isLavaFlow());
+ return;
+ }
+ // TODO: Test if this still works
+ /*
+ * if (block.getType() == Material.AIR) {
+ * event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_bucket_flow)); return; }
+ */
}
-
- if (block.getType() == Material.AIR)
+ finally
{
- event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_bucket_flow));
- return;
+ settings.unlock();
}
}
@@ -196,22 +221,32 @@ public class EssentialsProtectBlockListener implements Listener
{
return;
}
- final Block block = event.getBlock();
- if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL) && prot.getSettingBool(ProtectConfig.protect_rails))
- {
- event.setCancelled(true);
- return;
- }
- if ((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST)
- && prot.getSettingBool(ProtectConfig.protect_signs))
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
{
- event.setCancelled(true);
- return;
+ final Block block = event.getBlock();
+ if ((block.getType() == Material.RAILS || block.getType() == Material.POWERED_RAIL || block.getType() == Material.DETECTOR_RAIL)
+ && settings.getData().getSignsAndRails().isProtectRails())
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST)
+ && settings.getData().getSignsAndRails().isProtectSigns())
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (settings.getData().getPrevent().isFirespread())
+ {
+ event.setCancelled(true);
+ return;
+ }
}
- if (prot.getSettingBool(ProtectConfig.prevent_fire_spread))
+ finally
{
- event.setCancelled(true);
- return;
+ settings.unlock();
}
}
private final static BlockFace[] faces = new BlockFace[]
@@ -232,9 +267,9 @@ public class EssentialsProtectBlockListener implements Listener
{
return;
}
- final User user = ess.getUser(event.getPlayer());
+ final Player user = event.getPlayer();
- if (prot.getSettingBool(ProtectConfig.disable_build) && !user.canBuild())
+ if (!Permissions.BUILD.isAuthorized(user))
{
event.setCancelled(true);
return;
@@ -242,30 +277,41 @@ public class EssentialsProtectBlockListener implements Listener
final Block block = event.getBlock();
final int typeId = block.getTypeId();
- if (prot.checkProtectionItems(ProtectConfig.blacklist_break, typeId)
- && !user.isAuthorized("essentials.protect.exemptbreak"))
+ if (!BlockBreakPermissions.getPermission(block.getType()).isAuthorized(user))
{
event.setCancelled(true);
return;
}
- final Material type = block.getType();
-
- if (!user.hasPermission("essentials.protect.alerts.notrigger")
- && prot.checkProtectionItems(ProtectConfig.alert_on_break, typeId))
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
{
- prot.getEssentialsConnect().alert(user, type.toString(), _("alertBroke"));
- }
- final IProtectedBlock storage = prot.getStorage();
+ final Material type = block.getType();
- if (user.isAuthorized("essentials.protect.admin"))
- {
- if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
+ if (!Permissions.ALERTS_NOTRIGGER.isAuthorized(user) && settings.getData().getAlertOnBreak().contains(type))
+ {
+ prot.getEssentialsConnect().alert(user, type.toString(), _("alertBroke"));
+ }
+ final IProtectedBlock storage = prot.getStorage();
+
+ if (Permissions.ADMIN.isAuthorized(user))
{
- storage.unprotectBlock(block);
- if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
+ if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
- final Block below = block.getRelative(BlockFace.DOWN);
- storage.unprotectBlock(below);
+ storage.unprotectBlock(block);
+ if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
+ {
+ final Block below = block.getRelative(BlockFace.DOWN);
+ storage.unprotectBlock(below);
+ }
+ else
+ {
+ for (BlockFace blockFace : faces)
+ {
+ final Block against = block.getRelative(blockFace);
+ storage.unprotectBlock(against);
+ }
+ }
}
else
{
@@ -278,30 +324,30 @@ public class EssentialsProtectBlockListener implements Listener
}
else
{
- for (BlockFace blockFace : faces)
+
+ final boolean isProtected = isProtected(block, user, settings);
+ if (isProtected)
{
- final Block against = block.getRelative(blockFace);
- storage.unprotectBlock(against);
+ event.setCancelled(true);
}
- }
- }
- else
- {
-
- final boolean isProtected = isProtected(block, user);
- if (isProtected)
- {
- event.setCancelled(true);
- }
- else
- {
- if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
+ else
{
- storage.unprotectBlock(block);
- if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
+ if (type == Material.WALL_SIGN || type == Material.SIGN_POST || type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
- final Block below = block.getRelative(BlockFace.DOWN);
- storage.unprotectBlock(below);
+ storage.unprotectBlock(block);
+ if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL || type == Material.SIGN_POST)
+ {
+ final Block below = block.getRelative(BlockFace.DOWN);
+ storage.unprotectBlock(below);
+ }
+ else
+ {
+ for (BlockFace blockFace : faces)
+ {
+ final Block against = block.getRelative(blockFace);
+ storage.unprotectBlock(against);
+ }
+ }
}
else
{
@@ -312,28 +358,89 @@ public class EssentialsProtectBlockListener implements Listener
}
}
}
- else
+ }
+ }
+ finally
+ {
+ settings.unlock();
+ }
+ }
+
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void onBlockPistonExtend(final BlockPistonExtendEvent event)
+ {
+ if (event.isCancelled())
+ {
+ return;
+ }
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
+ {
+ for (Block block : event.getBlocks())
+ {
+ if (settings.getData().getPrevent().getPistonPush().contains(block.getType()))
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
+ || block.getType() == Material.RAILS
+ || block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
+ || block.getType() == Material.POWERED_RAIL
+ || block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
+ || block.getType() == Material.DETECTOR_RAIL)
+ && settings.getData().getSignsAndRails().isProtectRails())
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if (settings.getData().getSignsAndRails().isProtectSigns())
{
for (BlockFace blockFace : faces)
{
- final Block against = block.getRelative(blockFace);
- storage.unprotectBlock(against);
+ if (blockFace == BlockFace.DOWN)
+ {
+ continue;
+ }
+ final Block sign = block.getRelative(blockFace);
+ if ((blockFace == BlockFace.UP || blockFace == BlockFace.SELF)
+ && sign.getType() == Material.SIGN_POST)
+ {
+ event.setCancelled(true);
+ return;
+ }
+ if ((blockFace == BlockFace.NORTH || blockFace == BlockFace.EAST
+ || blockFace == BlockFace.SOUTH || blockFace == BlockFace.WEST
+ || blockFace == BlockFace.SELF)
+ && sign.getType() == Material.WALL_SIGN)
+ {
+ event.setCancelled(true);
+ return;
+ }
}
}
}
}
+ finally
+ {
+ settings.unlock();
+ }
}
@EventHandler(priority = EventPriority.HIGHEST)
- public void onBlockPistonExtend(BlockPistonExtendEvent event)
+ public void onBlockPistonRetract(final BlockPistonRetractEvent event)
{
- if (event.isCancelled())
+ if (event.isCancelled() || !event.isSticky())
{
return;
}
- for (Block block : event.getBlocks())
+ final ProtectHolder settings = prot.getSettings();
+ settings.acquireReadLock();
+ try
{
- if (prot.checkProtectionItems(ProtectConfig.blacklist_piston, block.getTypeId()))
+ final Block block = event.getRetractLocation().getBlock();
+ if (settings.getData().getPrevent().getPistonPush().contains(block.getType()))
{
event.setCancelled(true);
return;
@@ -344,12 +451,12 @@ public class EssentialsProtectBlockListener implements Listener
|| block.getType() == Material.POWERED_RAIL
|| block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
|| block.getType() == Material.DETECTOR_RAIL)
- && prot.getSettingBool(ProtectConfig.protect_rails))
+ && settings.getData().getSignsAndRails().isProtectRails())
{
event.setCancelled(true);
return;
}
- if (prot.getSettingBool(ProtectConfig.protect_signs))
+ if (settings.getData().getSignsAndRails().isProtectSigns())
{
for (BlockFace blockFace : faces)
{
@@ -375,70 +482,23 @@ public class EssentialsProtectBlockListener implements Listener
}
}
}
- }
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onBlockPistonRetract(BlockPistonRetractEvent event)
- {
- if (event.isCancelled() || !event.isSticky())
- {
- return;
- }
- final Block block = event.getRetractLocation().getBlock();
- if (prot.checkProtectionItems(ProtectConfig.blacklist_piston, block.getTypeId()))
+ finally
{
- event.setCancelled(true);
- return;
- }
- if ((block.getRelative(BlockFace.UP).getType() == Material.RAILS
- || block.getType() == Material.RAILS
- || block.getRelative(BlockFace.UP).getType() == Material.POWERED_RAIL
- || block.getType() == Material.POWERED_RAIL
- || block.getRelative(BlockFace.UP).getType() == Material.DETECTOR_RAIL
- || block.getType() == Material.DETECTOR_RAIL)
- && prot.getSettingBool(ProtectConfig.protect_rails))
- {
- event.setCancelled(true);
- return;
- }
- if (prot.getSettingBool(ProtectConfig.protect_signs))
- {
- for (BlockFace blockFace : faces)
- {
- if (blockFace == BlockFace.DOWN)
- {
- continue;
- }
- final Block sign = block.getRelative(blockFace);
- if ((blockFace == BlockFace.UP || blockFace == BlockFace.SELF)
- && sign.getType() == Material.SIGN_POST)
- {
- event.setCancelled(true);
- return;
- }
- if ((blockFace == BlockFace.NORTH || blockFace == BlockFace.EAST
- || blockFace == BlockFace.SOUTH || blockFace == BlockFace.WEST
- || blockFace == BlockFace.SELF)
- && sign.getType() == Material.WALL_SIGN)
- {
- event.setCancelled(true);
- return;
- }
- }
+ settings.unlock();
}
}
- private boolean isProtected(final Block block, final User user)
+ private boolean isProtected(final Block block, final Player user, final ProtectHolder settings)
{
final Material type = block.getType();
- if (prot.getSettingBool(ProtectConfig.protect_signs))
+ if (settings.getData().getSignsAndRails().isProtectSigns())
{
if (type == Material.WALL_SIGN || type == Material.SIGN_POST)
{
return prot.getStorage().isProtected(block, user.getName());
}
- if (prot.getSettingBool(ProtectConfig.protect_against_signs))
- {
+
final Block up = block.getRelative(BlockFace.UP);
if (up != null && up.getType() == Material.SIGN_POST)
{
@@ -463,15 +523,15 @@ public class EssentialsProtectBlockListener implements Listener
}
}
}
- }
+
}
- if (prot.getSettingBool(ProtectConfig.protect_rails))
+ if (settings.getData().getSignsAndRails().isProtectRails())
{
if (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL)
{
return prot.getStorage().isProtected(block, user.getName());
}
- if (prot.getSettingBool(ProtectConfig.protect_below_rails))
+ if (settings.getData().getSignsAndRails().isBlockBelow())
{
final Block up = block.getRelative(BlockFace.UP);
if (up != null && (type == Material.RAILS || type == Material.POWERED_RAIL || type == Material.DETECTOR_RAIL))