From 0e9eddd2f96692d68a7f98a94e02e8499241ed05 Mon Sep 17 00:00:00 2001 From: snowleo Date: Fri, 4 Nov 2011 01:23:50 +0100 Subject: Fix bug in sign state loop --- .../earth2me/essentials/signs/SignProtection.java | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java index 157535cd9..ced8443a6 100644 --- a/Essentials/src/com/earth2me/essentials/signs/SignProtection.java +++ b/Essentials/src/com/earth2me/essentials/signs/SignProtection.java @@ -35,10 +35,15 @@ public class SignProtection extends EssentialsSign protected boolean onSignCreate(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException { sign.setLine(3, "§4" + username); - if (hasAdjacentBlock(sign.getBlock()) && isBlockProtected(sign.getBlock(), player, username, true) != SignProtectionState.NOT_ALLOWED) + if (hasAdjacentBlock(sign.getBlock())) { - sign.setLine(3, "§1" + username); - return true; + final SignProtectionState state = isBlockProtected(sign.getBlock(), player, username, true); + if (state == SignProtectionState.NOSIGN || state == SignProtectionState.OWNER + || player.isAuthorized("essentials.signs.protection.override")) + { + sign.setLine(3, "§1" + username); + return true; + } } player.sendMessage(Util.i18n("signProtectInvalidLocation")); return false; @@ -183,11 +188,6 @@ public class SignProtection extends EssentialsSign SignProtectionState retstate = SignProtectionState.NOSIGN; for (SignProtectionState state : signs.values()) { - - if (state == SignProtectionState.OWNER) - { - return state; - } if (state == SignProtectionState.ALLOWED) { retstate = state; @@ -197,6 +197,16 @@ public class SignProtection extends EssentialsSign retstate = state; } } + if (!secure || retstate == SignProtectionState.NOSIGN) + { + for (SignProtectionState state : signs.values()) + { + if (state == SignProtectionState.OWNER) + { + return state; + } + } + } return retstate; } @@ -300,7 +310,7 @@ public class SignProtection extends EssentialsSign player.sendMessage(Util.format("noDestroyPermission", block.getType().toString().toLowerCase())); return false; } - + @Override public boolean onBlockBreak(final Block block, final IEssentials ess) { @@ -324,7 +334,7 @@ public class SignProtection extends EssentialsSign return state == SignProtectionState.NOSIGN; } - + @Override public boolean onBlockIgnite(final Block block, final IEssentials ess) { -- cgit v1.2.3