diff --git a/src/com/massivecraft/factions/Conf.java b/src/com/massivecraft/factions/Conf.java index c7b0a68c..f75f459e 100644 --- a/src/com/massivecraft/factions/Conf.java +++ b/src/com/massivecraft/factions/Conf.java @@ -22,12 +22,6 @@ public class Conf { public static ChatColor colorCommand = ChatColor.AQUA; public static ChatColor colorParameter = ChatColor.DARK_AQUA; - //Money - public static boolean bankEnabled = true; - public static boolean bankMembersCanWithdraw = false; //Have to be at least moderator to withdraw or pay money to another faction - public static boolean bankFactionPaysCosts = true; //The faction pays for faction command costs, such as sethome - public static boolean bankFactionPaysLandCosts = true; //The faction pays for land claiming costs. - // Power public static double powerPlayerMax = 10.0; public static double powerPlayerMin = -10.0; @@ -225,6 +219,12 @@ public class Conf { public static double econCostNeutral = 0.0; public static double econCostNoBoom = 0.0; + //Faction banks, to pay for land claiming and other costs instead of individuals paying for them + public static boolean bankEnabled = true; + public static boolean bankMembersCanWithdraw = false; //Have to be at least moderator to withdraw or pay money to another faction + public static boolean bankFactionPaysCosts = true; //The faction pays for faction command costs, such as sethome + public static boolean bankFactionPaysLandCosts = true; //The faction pays for land claiming costs. + public static Set worldsNoClaiming = new HashSet(); public static Set worldsNoPowerLoss = new HashSet(); public static Set worldsIgnorePvP = new HashSet(); diff --git a/src/com/massivecraft/factions/Econ.java b/src/com/massivecraft/factions/Econ.java index 864c0c5e..9858da5a 100644 --- a/src/com/massivecraft/factions/Econ.java +++ b/src/com/massivecraft/factions/Econ.java @@ -4,6 +4,7 @@ import org.bukkit.event.Event; import org.bukkit.plugin.Plugin; import com.massivecraft.factions.listeners.FactionsServerListener; +import com.massivecraft.factions.commands.FCommandHelp; import com.earth2me.essentials.api.Economy; import com.nijikokun.register.payment.Methods; @@ -55,6 +56,7 @@ public class Econ { else { Factions.log("Un-hooked from Register."); } + FCommandHelp.updateHelp(); } public static void iConomySet(boolean enable) { @@ -65,6 +67,7 @@ public class Econ { else { Factions.log("Un-hooked from iConomy."); } + FCommandHelp.updateHelp(); } public static void essentialsEcoSet(boolean enable) { @@ -75,6 +78,7 @@ public class Econ { else { Factions.log("Un-hooked from EssentialsEco."); } + FCommandHelp.updateHelp(); } public static boolean registerHooked() { diff --git a/src/com/massivecraft/factions/commands/FCommandBalance.java b/src/com/massivecraft/factions/commands/FCommandBalance.java index 7a77d009..b17b3504 100644 --- a/src/com/massivecraft/factions/commands/FCommandBalance.java +++ b/src/com/massivecraft/factions/commands/FCommandBalance.java @@ -1,10 +1,10 @@ package com.massivecraft.factions.commands; -import org.bukkit.entity.Player; - import com.massivecraft.factions.Conf; import com.massivecraft.factions.Econ; import com.massivecraft.factions.Faction; +import com.massivecraft.factions.Factions; + public class FCommandBalance extends FBaseCommand { @@ -12,9 +12,9 @@ public class FCommandBalance extends FBaseCommand { aliases.add("balance"); aliases.add("money"); - optionalParameters.add("faction name"); + optionalParameters.add("faction tag"); - helpDescription = "Shows a faction's current balance"; + helpDescription = "Show faction's current balance"; } @Override @@ -30,11 +30,20 @@ public class FCommandBalance extends FBaseCommand { Faction faction; if (parameters.size() > 0) { + if (!Factions.hasPermViewAnyFactionBalance(sender)) { + sendMessage("You do not have sufficient permissions to view the bank balance of other factions."); + return; + } faction = findFaction(parameters.get(0), true); } else { faction = me.getFaction(); } + if(faction == null) { + sendMessage("Faction "+parameters.get(0)+" could not be found."); + return; + } + sendMessage(Conf.colorChrome+faction.getTag()+" balance: "+ Econ.moneyString(faction.getMoney())); } diff --git a/src/com/massivecraft/factions/commands/FCommandDeposit.java b/src/com/massivecraft/factions/commands/FCommandDeposit.java index 5322b28d..b3866c23 100644 --- a/src/com/massivecraft/factions/commands/FCommandDeposit.java +++ b/src/com/massivecraft/factions/commands/FCommandDeposit.java @@ -2,8 +2,10 @@ package com.massivecraft.factions.commands; import com.massivecraft.factions.Conf; import com.massivecraft.factions.Econ; -import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.Faction; +import com.massivecraft.factions.Factions; +import com.massivecraft.factions.FPlayer; + public class FCommandDeposit extends FBaseCommand { @@ -36,9 +38,9 @@ public class FCommandDeposit extends FBaseCommand { } } - String amountString = Econ.moneyString(amount); - if( amount > 0.0 ) { + String amountString = Econ.moneyString(amount); + if( !Econ.deductMoney(me.getName(), amount ) ) { sendMessage("You cannot afford to deposit that much."); } @@ -47,6 +49,7 @@ public class FCommandDeposit extends FBaseCommand { faction.addMoney(amount); sendMessage("You have deposited "+amountString+" into "+faction.getTag()+"'s bank."); sendMessage(faction.getTag()+" now has "+Econ.moneyString(faction.getMoney())); + Factions.log(player.getName() + " deposited "+amountString+" into "+faction.getTag()+"'s bank."); for (FPlayer fplayer : FPlayer.getAllOnline()) { if (fplayer.getFaction() == faction) { diff --git a/src/com/massivecraft/factions/commands/FCommandDisband.java b/src/com/massivecraft/factions/commands/FCommandDisband.java index e43a7105..93b24f11 100644 --- a/src/com/massivecraft/factions/commands/FCommandDisband.java +++ b/src/com/massivecraft/factions/commands/FCommandDisband.java @@ -70,7 +70,13 @@ public class FCommandDisband extends FBaseCommand { } if (Conf.bankEnabled) { - Econ.addMoney(me.getName(), me.getFaction().getMoney() ); //Give all the faction's money to the disbander + double amount = faction.getMoney(); + Econ.addMoney(me.getName(), amount ); //Give all the faction's money to the disbander + if (amount > 0.0) { + String amountString = Econ.moneyString(amount); + sendMessage("You have been given the disbanded faction's bank, totaling "+amountString+"."); + Factions.log(player.getName() + " has been given bank holdings of "+amountString+" from disbanding "+faction.getTag()+"."); + } } Faction.delete( faction.getId() ); diff --git a/src/com/massivecraft/factions/commands/FCommandHelp.java b/src/com/massivecraft/factions/commands/FCommandHelp.java index 5390ce12..dc8f6650 100644 --- a/src/com/massivecraft/factions/commands/FCommandHelp.java +++ b/src/com/massivecraft/factions/commands/FCommandHelp.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import org.bukkit.command.CommandSender; import com.massivecraft.factions.Conf; +import com.massivecraft.factions.Econ; import com.massivecraft.factions.util.TextUtil; @@ -48,9 +49,9 @@ public class FCommandHelp extends FBaseCommand { // Build the help pages //----------------------------------------------// - public static final ArrayList> helpPages; + public static ArrayList> helpPages; - static { + public static void updateHelp() { helpPages = new ArrayList>(); ArrayList pageLines; @@ -78,12 +79,19 @@ public class FCommandHelp extends FBaseCommand { pageLines.add( new FCommandSethome().getUseageTemplate() ); helpPages.add(pageLines); - pageLines = new ArrayList(); - pageLines.add( new FCommandBalance().getUseageTemplate() ); - pageLines.add( new FCommandDeposit().getUseageTemplate() ); - pageLines.add( new FCommandWithdraw().getUseageTemplate() ); - pageLines.add( new FCommandPay().getUseageTemplate() ); - helpPages.add(pageLines); + if (Econ.enabled() && Conf.bankEnabled) { + pageLines = new ArrayList(); + pageLines.add( "" ); + pageLines.add( "Your faction has a bank which is used to pay for certain" ); + pageLines.add( "things, so it will need to have money deposited into it." ); + pageLines.add( "" ); + pageLines.add( new FCommandBalance().getUseageTemplate() ); + pageLines.add( new FCommandDeposit().getUseageTemplate() ); + pageLines.add( new FCommandWithdraw().getUseageTemplate() ); + pageLines.add( new FCommandPay().getUseageTemplate() ); + pageLines.add( "" ); + helpPages.add(pageLines); + } pageLines = new ArrayList(); pageLines.add( new FCommandClaim().getUseageTemplate() ); @@ -169,6 +177,9 @@ public class FCommandHelp extends FBaseCommand { pageLines.add( new FCommandConfig().getUseageTemplate() ); helpPages.add(pageLines); } - + + static { + updateHelp(); + } } diff --git a/src/com/massivecraft/factions/commands/FCommandPay.java b/src/com/massivecraft/factions/commands/FCommandPay.java index a85b3127..e49e4509 100644 --- a/src/com/massivecraft/factions/commands/FCommandPay.java +++ b/src/com/massivecraft/factions/commands/FCommandPay.java @@ -2,16 +2,18 @@ package com.massivecraft.factions.commands; import com.massivecraft.factions.Conf; import com.massivecraft.factions.Econ; -import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.Faction; +import com.massivecraft.factions.Factions; +import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.struct.Role; + public class FCommandPay extends FBaseCommand { public FCommandPay() { aliases.add("pay"); - helpDescription = "Pay another faction money from your faction's bank"; + helpDescription = "Pay another faction from your bank"; requiredParameters.add("faction"); requiredParameters.add("amount"); } @@ -46,13 +48,13 @@ public class FCommandPay extends FBaseCommand { } if(them == null) { - sendMessage(parameters.get(0)+" could not be found."); + sendMessage("Faction "+parameters.get(0)+" could not be found."); return; } - - String amountString = Econ.moneyString(amount); - + if( amount > 0.0 ) { + String amountString = Econ.moneyString(amount); + if( amount > us.getMoney() ) { amount = us.getMoney(); } @@ -61,6 +63,7 @@ public class FCommandPay extends FBaseCommand { them.addMoney(amount); sendMessage("You have paid "+amountString+" from "+us.getTag()+"'s bank to "+them.getTag()+"'s bank."); sendMessage(us.getTag()+" now has "+Econ.moneyString(us.getMoney())); + Factions.log(player.getName() + " paid "+amountString+" from "+us.getTag()+"'s bank to "+them.getTag()+"'s bank."); for (FPlayer fplayer : FPlayer.getAllOnline()) { if (fplayer.getFaction() == us || fplayer.getFaction() == them) { diff --git a/src/com/massivecraft/factions/commands/FCommandWithdraw.java b/src/com/massivecraft/factions/commands/FCommandWithdraw.java index 679d67dd..9ac4f558 100644 --- a/src/com/massivecraft/factions/commands/FCommandWithdraw.java +++ b/src/com/massivecraft/factions/commands/FCommandWithdraw.java @@ -2,10 +2,12 @@ package com.massivecraft.factions.commands; import com.massivecraft.factions.Conf; import com.massivecraft.factions.Econ; -import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.Faction; +import com.massivecraft.factions.Factions; +import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.struct.Role; + public class FCommandWithdraw extends FBaseCommand { public FCommandWithdraw() { @@ -42,9 +44,9 @@ public class FCommandWithdraw extends FBaseCommand { } } - String amountString = Econ.moneyString(amount); - if( amount > 0.0 ) { + String amountString = Econ.moneyString(amount); + if( amount > faction.getMoney() ) { amount = faction.getMoney(); } @@ -53,6 +55,7 @@ public class FCommandWithdraw extends FBaseCommand { Econ.addMoney(me.getName(), amount); sendMessage("You have withdrawn "+amountString+" from "+faction.getTag()+"'s bank."); sendMessage(faction.getTag()+" now has "+Econ.moneyString(faction.getMoney())); + Factions.log(player.getName() + " withdrew "+amountString+" from "+faction.getTag()+"'s bank."); for (FPlayer fplayer : FPlayer.getAllOnline()) { if (fplayer.getFaction() == faction) { diff --git a/src/plugin.yml b/src/plugin.yml index 89bdc57e..3060ead1 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,5 +1,5 @@ name: Factions -version: 1.5.1 +version: 1.5.1_dev main: com.massivecraft.factions.Factions softdepend: - Permissions @@ -27,6 +27,7 @@ permissions: factions.participate: true factions.create: true factions.viewAnyPower: true + factions.viewAnyFactionBalance: true factions.peacefulExplosionToggle: true factions.adminBypass: true factions.config: true @@ -49,6 +50,9 @@ permissions: factions.viewAnyPower: description: Allows the player to view the power level of anyone else default: true + factions.viewAnyFactionBalance: + description: Allows the player to view the faction bank balance for any faction + default: true factions.peacefulExplosionToggle: description: Allows peaceful faction admins and moderators to disable explosions in their territory default: true @@ -100,6 +104,9 @@ permissions: factions.commandDisable.autowar: description: autowar command disabled default: false + factions.commandDisable.balance: + description: balance/money command disabled + default: false factions.commandDisable.bypass: description: bypass command disabled default: false @@ -121,6 +128,9 @@ permissions: factions.commandDisable.deinv: description: deinvite command disabled default: false + factions.commandDisable.deposit: + description: deposit command disabled + default: false factions.commandDisable.desc: description: desc command disabled default: false @@ -169,6 +179,9 @@ permissions: factions.commandDisable.mod: description: mod command disabled default: false + factions.commandDisable.money: + description: balance/money command disabled + default: false factions.commandDisable.noboom: description: noboom command disabled default: false @@ -184,9 +197,15 @@ permissions: factions.commandDisable.ownerlist: description: ownerlist command disabled default: false + factions.commandDisable.pay: + description: pay command disabled + default: false factions.commandDisable.peaceful: description: peaceful command disabled default: false + factions.commandDisable.permanent: + description: permanent command disabled + default: false factions.commandDisable.power: description: power command disabled default: false @@ -265,6 +284,9 @@ permissions: factions.commandDisable.wardeclaimall: description: warunclaimall command disabled default: false + factions.commandDisable.withdraw: + description: withdraw command disabled + default: false factions.commandDisable.worldnoclaim: description: worldnoclaim command disabled default: false