diff --git a/classes/artifacts/Factions_jar/Factions.jar b/classes/artifacts/Factions_jar/Factions.jar index e233f069..bb682735 100644 Binary files a/classes/artifacts/Factions_jar/Factions.jar and b/classes/artifacts/Factions_jar/Factions.jar differ diff --git a/src/main/java/com/massivecraft/factions/Faction.java b/src/main/java/com/massivecraft/factions/Faction.java index 5e97f012..6467f7dc 100644 --- a/src/main/java/com/massivecraft/factions/Faction.java +++ b/src/main/java/com/massivecraft/factions/Faction.java @@ -176,7 +176,7 @@ public interface Faction extends EconomyParticipator { boolean noMonstersInTerritory(); boolean isNormal(); - + boolean isSystemFaction(); @Deprecated boolean isNone(); diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java index c21f0312..96122580 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java @@ -501,7 +501,9 @@ public class FactionsBlockListener implements Listener { } me.msg(TL.GENERIC_NOPERMISSION, action); return false; - } else return access == Access.ALLOW; + } else if (access == Access.ALLOW) return true; + me.msg(TL.GENERIC_NOPERMISSION, action); + return false; } private static boolean CheckActionState(Faction target, FLocation location, FPlayer me, PermissableAction action, boolean pain) { diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java index 327f14e4..23ac43d9 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java @@ -169,16 +169,15 @@ public class FactionsPlayerListener implements Listener { Relation rel = myFaction.getRelationTo(otherFaction); // no door/chest/whatever protection in wilderness, war zones, or safe zones - if (!otherFaction.isNormal()) return true; + if (otherFaction.isSystemFaction()) return true; + if (myFaction.isWilderness()) { + me.msg(TL.GENERIC_NOPERMISSION, TL.GENERIC_DOTHAT); + return false; + } if (SavageFactions.plugin.getConfig().getBoolean("hcf.raidable", false) && otherFaction.getLandRounded() > otherFaction.getPowerRounded()) return true; - if (!rel.isMember() || !otherFaction.playerHasOwnershipRights(me, loc) && player.getItemInHand().getType() != null) { - if (player.getItemInHand().getType().toString().toUpperCase().contains("DOOR")) - return false; - } - PermissableAction action = null; if (SavageFactions.plugin.mc113) { switch (block.getType()) { @@ -320,8 +319,6 @@ public class FactionsPlayerListener implements Listener { // Move up access check to check for exceptions if (!otherFaction.getId().equals(myFaction.getId())) { // If the faction target is not my own - if (SavageFactions.plugin.getConfig().getBoolean("hcf.raidable", false) && otherFaction.getLandRounded() > otherFaction.getPowerRounded()) - return true; // Get faction pain build access relation to me boolean pain = !justCheck && otherFaction.getAccess(me, PermissableAction.PAIN_BUILD) == Access.ALLOW; return CheckPlayerAccess(player, me, loc, otherFaction, otherFaction.getAccess(me, action), action, pain); @@ -872,9 +869,6 @@ public class FactionsPlayerListener implements Listener { Block block = event.getClickedBlock(); Player player = event.getPlayer(); - FLocation loc = new FLocation(block.getLocation()); - Faction faction = MemoryBoard.getInstance().getFactionAt(loc); - FPlayer fplayer = MemoryFPlayers.getInstance().getByPlayer(player); // Check if the material is bypassing protection if (Conf.territoryBypasssProtectedMaterials.contains(block.getType())) return; @@ -882,12 +876,13 @@ public class FactionsPlayerListener implements Listener { if (block == null) return; // clicked in air, apparently if (!block.getType().isInteractable()) return; - + player.sendMessage("Checking if you can use that block"); if (!canPlayerUseBlock(player, block, false)) { event.setCancelled(true); event.setUseInteractedBlock(Event.Result.DENY); return; } + player.sendMessage("Checking if you can use that item"); if (!playerCanUseItemHere(player, block.getLocation(), event.getMaterial(), false)) { event.setCancelled(true); event.setUseInteractedBlock(Event.Result.DENY); @@ -1042,6 +1037,7 @@ public class FactionsPlayerListener implements Listener { return false; } } + me.msg(TL.GENERIC_NOPERMISSION, action); return false; } } diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java index b6ea8227..4b325e5c 100644 --- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java +++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java @@ -754,6 +754,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { public boolean isWarZone() { return this.getId().equals("-2"); } + public boolean isSystemFaction() { return this.isSafeZone() || this.isWarZone() || this.isWilderness(); } public boolean isPlayerFreeType() { return this.isSafeZone() || this.isWarZone();