diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java index e8155db0..a659847b 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsBlockListener.java @@ -37,7 +37,7 @@ public class FactionsBlockListener implements Listener { } if (!playerCanBuildDestroyBlock(event.getPlayer(), event.getBlock().getLocation(), "build", false)) { - event.setCancelled(true); + event.setBuild(false); } } diff --git a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java index e8b256cd..0b7ce8fe 100644 --- a/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/main/java/com/massivecraft/factions/listeners/FactionsPlayerListener.java @@ -305,6 +305,23 @@ public class FactionsPlayerListener implements Listener { return true; } + // Dupe fix. + Faction myFaction = me.getFaction(); + Relation rel = myFaction.getRelationTo(otherFaction); + if (!rel.isMember() || !otherFaction.playerHasOwnershipRights(me, loc) && player.getItemInHand() != null) { + switch (player.getItemInHand().getType()) { + case CHEST: + case SIGN_POST: + case TRAPPED_CHEST: + case SIGN: + case WOOD_DOOR: + case IRON_DOOR: + return false; + default: + break; + } + } + // We only care about some material types. if (otherFaction.hasPlayersOnline()) { if (!Conf.territoryProtectedMaterials.contains(material)) { @@ -316,9 +333,6 @@ public class FactionsPlayerListener implements Listener { } } - Faction myFaction = me.getFaction(); - Relation rel = myFaction.getRelationTo(otherFaction); - // You may use any block unless it is another faction's territory... if (rel.isNeutral() || (rel.isEnemy() && Conf.territoryEnemyProtectMaterials) || (rel.isAlly() && Conf.territoryAllyProtectMaterials)) { if (!justCheck) {