diff --git a/lib/PermissionsEx.jar b/lib/PermissionsEx.jar index f2b16853..37121e65 100644 Binary files a/lib/PermissionsEx.jar and b/lib/PermissionsEx.jar differ diff --git a/plugin.yml b/plugin.yml index a0c051a8..838711e1 100644 --- a/plugin.yml +++ b/plugin.yml @@ -12,6 +12,10 @@ permissions: factions.lock: true factions.reload: true factions.save: true + factions.*: + description: This is just an alias for factions.kit.admin + children: + factions.kit.admin: true factions.kit.mod: description: All faction permissions but configuration and persistance. children: @@ -20,7 +24,7 @@ permissions: factions.setpermanent: true factions.setpeaceful: true factions.sethome.any: true - factions.money.withdraw.any: true + factions.money.*: true factions.kit.halfmod: description: Zones, bypassing, and kicking children: @@ -55,13 +59,7 @@ permissions: factions.list: true factions.map: true factions.mod: true - factions.money.balance: true - factions.money.balance.any: true - factions.money.deposit: true - factions.money.withdraw: true - factions.money.f2f: true - factions.money.f2p: true - factions.money.p2f: true + factions.money.kit.standard: true factions.noboom: true factions.open: true factions.owner: true @@ -140,12 +138,21 @@ permissions: description: transfer money from faction to player factions.money.p2f: description: transfer money from player to faction - factions.money.*: + factions.money.kit.standard: children: factions.money.balance: true factions.money.balance.any: true factions.money.deposit: true factions.money.withdraw: true + factions.money.f2f: true + factions.money.f2p: true + factions.money.p2f: true + factions.money.*: + children: + factions.money.kit.standard: true + factions.money.balance.any: true + factions.money.deposit: true + factions.money.withdraw: true factions.money.withdraw.any: true factions.money.f2f: true factions.money.f2p: true diff --git a/src/com/massivecraft/factions/FPlayer.java b/src/com/massivecraft/factions/FPlayer.java index 034cf605..f6dffee7 100644 --- a/src/com/massivecraft/factions/FPlayer.java +++ b/src/com/massivecraft/factions/FPlayer.java @@ -1,5 +1,7 @@ package com.massivecraft.factions; +import java.util.ArrayList; + import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -593,42 +595,29 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator { double cost = Conf.econCostLeave; if ( ! Econ.modifyMoney(this, -cost, "to leave your faction.", "for leaving your faction.")) return; - /* - // pay up - if (cost > 0.0) { - String costString = Econ.moneyString(cost); - if ( ! Econ.deductMoney(this.getName(), cost)) { - msg("It costs %s to leave your faction, which you can't currently afford.", costString); - return; - } - msg("You have paid %s to leave your faction.", costString); - } - // wait... we pay you to leave? - else if (cost < 0.0) - { - String costString = Econ.moneyString(-cost); - Econ.addMoney(this.getName(), -cost); - msg("You have been paid %s for leaving your faction.", costString); - }*/ } - if (myFaction.isNormal()) - { - //myFaction.msg("%s left your faction.", this.getNameAndRelevant(myFaction)); - for (FPlayer fplayer : myFaction.getFPlayersWhereOnline(true)) - { - fplayer.msg("%s left your faction.", this.describeTo(fplayer, true)); - } - } - - this.resetFactionData(); - - if (myFaction.isNormal() && !perm && myFaction.getFPlayers().isEmpty()) + // Am I the last one in the faction? + ArrayList fplayers = myFaction.getFPlayers(); + if (fplayers.size() == 1 && fplayers.get(0) == this) { // Transfer all money if (Econ.shouldBeUsed()) Econ.transferMoney(this, myFaction, this, myFaction.getAccount().balance()); + } + + if (myFaction.isNormal()) + { + for (FPlayer fplayer : myFaction.getFPlayersWhereOnline(true)) + { + fplayer.msg("%s left %s.", this.describeTo(fplayer, true), myFaction.describeTo(fplayer)); + } + } + + this.resetFactionData(); + if (myFaction.isNormal() && !perm && myFaction.getFPlayers().isEmpty()) + { // Remove this faction for (FPlayer fplayer : FPlayers.i.getOnline()) { diff --git a/src/com/massivecraft/factions/zcore/util/PermUtil.java b/src/com/massivecraft/factions/zcore/util/PermUtil.java index 60d59306..1f1fb3d9 100644 --- a/src/com/massivecraft/factions/zcore/util/PermUtil.java +++ b/src/com/massivecraft/factions/zcore/util/PermUtil.java @@ -53,7 +53,7 @@ public class PermUtil { pex = PermissionsEx.getPermissionManager(); p.log("Will use this plugin for permissions: " + Bukkit.getServer().getPluginManager().getPlugin("PermissionsEx").getDescription().getFullName()); return; - } + } if ( Bukkit.getServer().getPluginManager().isPluginEnabled("Permissions")) { @@ -89,7 +89,9 @@ public class PermUtil { if (pex != null) { - return pex.has((Player)me, perm); + //return pex.has((Player)me, perm); + // Since pex supports superperms we should use those instead. + return ((Player)me).hasPermission(perm); } if (perm2or3 != null)