Merge branch 'master' of github.com:MassiveCraft/Factions

This commit is contained in:
Brettflan 2011-10-13 14:10:04 -05:00
commit d7a2a88f95
18 changed files with 255 additions and 197 deletions

Binary file not shown.

View File

@ -12,6 +12,10 @@ permissions:
factions.lock: true factions.lock: true
factions.reload: true factions.reload: true
factions.save: true factions.save: true
factions.*:
description: This is just an alias for factions.kit.admin
children:
factions.kit.admin: true
factions.kit.mod: factions.kit.mod:
description: All faction permissions but configuration and persistance. description: All faction permissions but configuration and persistance.
children: children:
@ -20,7 +24,7 @@ permissions:
factions.setpermanent: true factions.setpermanent: true
factions.setpeaceful: true factions.setpeaceful: true
factions.sethome.any: true factions.sethome.any: true
factions.money.withdraw.any: true factions.money.*: true
factions.kit.halfmod: factions.kit.halfmod:
description: Zones, bypassing, and kicking description: Zones, bypassing, and kicking
children: children:
@ -31,6 +35,7 @@ permissions:
factions.kick.any: true factions.kick.any: true
factions.ownershipbypass: true factions.ownershipbypass: true
factions.kit.fullplayer: factions.kit.fullplayer:
default: true
description: Can also create new factions. description: Can also create new factions.
children: children:
factions.kit.halfplayer: true factions.kit.halfplayer: true
@ -54,11 +59,7 @@ permissions:
factions.list: true factions.list: true
factions.map: true factions.map: true
factions.mod: true factions.mod: true
factions.money.balance: true factions.money.kit.standard: true
factions.money.balance.any: true
factions.money.deposit: true
factions.money.pay: true
factions.money.withdraw: true
factions.noboom: true factions.noboom: true
factions.open: true factions.open: true
factions.owner: true factions.owner: true
@ -121,26 +122,41 @@ permissions:
description: show the territory map, and set optional auto update description: show the territory map, and set optional auto update
factions.mod: factions.mod:
description: give or revoke moderator rights description: give or revoke moderator rights
factions.money.*:
children:
factions.money.balance: true
factions.money.balance.any: true
factions.money.deposit: true
factions.money.pay: true
factions.money.withdraw: true
factions.money.withdraw.any: true
factions.money.balance: factions.money.balance:
description: show your factions current money balance description: show your factions current money balance
factions.money.balance.any: factions.money.balance.any:
description: show money balance for factions other than your own description: show money balance for factions other than your own
factions.money.deposit: factions.money.deposit:
description: deposit money into a faction bank description: deposit money into a faction bank
factions.money.pay:
description: pay another faction from your bank
factions.money.withdraw: factions.money.withdraw:
description: withdraw money from your faction bank description: withdraw money from your faction bank
factions.money.withdraw.any: factions.money.withdraw.any:
description: withdraw money from your factions other than your own description: withdraw money from your factions other than your own
factions.money.f2f:
description: transfer money from faction to faction
factions.money.f2p:
description: transfer money from faction to player
factions.money.p2f:
description: transfer money from player to faction
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
factions.money.p2f: true
factions.noboom: factions.noboom:
description: toggle explosions (peaceful factions only) description: toggle explosions (peaceful factions only)
factions.open: factions.open:

View File

@ -1,5 +1,7 @@
package com.massivecraft.factions; package com.massivecraft.factions;
import java.util.ArrayList;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -593,31 +595,22 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator
{ {
double cost = Conf.econCostLeave; double cost = Conf.econCostLeave;
if ( ! Econ.modifyMoney(this, -cost, "to leave your faction.", "for leaving your faction.")) return; 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("<b>It costs <h>%s<b> to leave your faction, which you can't currently afford.", costString);
return;
} }
msg("<i>You have paid <h>%s<i> to leave your faction.", costString);
} // Am I the last one in the faction?
// wait... we pay you to leave? ArrayList<FPlayer> fplayers = myFaction.getFPlayers();
else if (cost < 0.0) if (fplayers.size() == 1 && fplayers.get(0) == this)
{ {
String costString = Econ.moneyString(-cost); // Transfer all money
Econ.addMoney(this.getName(), -cost); if (Econ.shouldBeUsed())
msg("<i>You have been paid <h>%s<i> for leaving your faction.", costString); Econ.transferMoney(this, myFaction, this, myFaction.getAccount().balance());
}*/
} }
if (myFaction.isNormal()) if (myFaction.isNormal())
{ {
//myFaction.msg("%s<i> left your faction.", this.getNameAndRelevant(myFaction));
for (FPlayer fplayer : myFaction.getFPlayersWhereOnline(true)) for (FPlayer fplayer : myFaction.getFPlayersWhereOnline(true))
{ {
fplayer.msg("%s<i> left your faction.", this.describeTo(fplayer, true)); fplayer.msg("%s<i> left %s<i>.", this.describeTo(fplayer, true), myFaction.describeTo(fplayer));
} }
} }
@ -625,10 +618,6 @@ public class FPlayer extends PlayerEntity implements EconomyParticipator
if (myFaction.isNormal() && !perm && myFaction.getFPlayers().isEmpty()) if (myFaction.isNormal() && !perm && myFaction.getFPlayers().isEmpty())
{ {
// Transfer all money
if (Econ.shouldBeUsed())
Econ.transferMoney(this, myFaction, this, myFaction.getAccount().balance());
// Remove this faction // Remove this faction
for (FPlayer fplayer : FPlayers.i.getOnline()) for (FPlayer fplayer : FPlayers.i.getOnline())
{ {

View File

@ -74,7 +74,7 @@ public class FPlayers extends PlayerEntityCollection<FPlayer>
{ {
for (FPlayer fplayer : this.get()) for (FPlayer fplayer : this.get())
{ {
if (fplayer.getId().equalsIgnoreCase(playername) || fplayer.getId().startsWith(playername)) if (fplayer.getId().equalsIgnoreCase(playername) || fplayer.getId().toLowerCase().startsWith(playername.toLowerCase()))
{ {
return fplayer; return fplayer;
} }

View File

@ -60,27 +60,27 @@ public class CmdHelp extends FCommand
ArrayList<String> pageLines; ArrayList<String> pageLines;
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( p.cmdBase.cmdHelp.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdHelp.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdList.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdList.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdShow.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdShow.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdPower.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPower.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdJoin.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdJoin.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdLeave.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdLeave.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdChat.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdChat.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdHome.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdHome.getUseageTemplate(true) );
pageLines.add( p.txt.parse("<i>Learn how to create a faction on the next page.") ); pageLines.add( p.txt.parse("<i>Learn how to create a faction on the next page.") );
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( p.cmdBase.cmdCreate.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdCreate.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdDescription.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDescription.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdTag.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdTag.getUseageTemplate(true) );
pageLines.add( p.txt.parse("<i>You might want to close it and use invitations:" )); pageLines.add( p.txt.parse("<i>You might want to close it and use invitations:" ));
pageLines.add( p.cmdBase.cmdOpen.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdOpen.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdInvite.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdInvite.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdDeinvite.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDeinvite.getUseageTemplate(true) );
pageLines.add( p.txt.parse("<i>And don't forget to set your home:" )); pageLines.add( p.txt.parse("<i>And don't forget to set your home:" ));
pageLines.add( p.cmdBase.cmdSethome.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSethome.getUseageTemplate(true) );
helpPages.add(pageLines); helpPages.add(pageLines);
if (Econ.shouldBeUsed()) if (Econ.shouldBeUsed())
@ -91,7 +91,7 @@ public class CmdHelp extends FCommand
pageLines.add( p.txt.parse("<i>things, so it will need to have money deposited into it." )); pageLines.add( p.txt.parse("<i>things, so it will need to have money deposited into it." ));
pageLines.add( p.txt.parse("<i>To lear more use the money command." )); pageLines.add( p.txt.parse("<i>To lear more use the money command." ));
pageLines.add( "" ); pageLines.add( "" );
pageLines.add( p.cmdBase.cmdMoney.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdMoney.getUseageTemplate(true) );
pageLines.add( "" ); pageLines.add( "" );
pageLines.add( "" ); pageLines.add( "" );
pageLines.add( "" ); pageLines.add( "" );
@ -99,23 +99,23 @@ public class CmdHelp extends FCommand
} }
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( p.cmdBase.cmdClaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdClaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdAutoClaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAutoClaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdUnclaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdUnclaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdUnclaimall.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdUnclaimall.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdKick.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdKick.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdMod.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdMod.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdAdmin.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAdmin.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdTitle.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdTitle.getUseageTemplate(true) );
pageLines.add( p.txt.parse("<i>Player titles are just for fun. No rules connected to them." )); pageLines.add( p.txt.parse("<i>Player titles are just for fun. No rules connected to them." ));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( p.cmdBase.cmdMap.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdMap.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdBoom.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdBoom.getUseageTemplate(true) );
pageLines.add(""); pageLines.add("");
pageLines.add( p.cmdBase.cmdOwner.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdOwner.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdOwnerList.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdOwnerList.getUseageTemplate(true) );
pageLines.add(""); pageLines.add("");
pageLines.add(p.txt.parse("<i>Claimed land with ownership set is further protected so")); pageLines.add(p.txt.parse("<i>Claimed land with ownership set is further protected so"));
pageLines.add(p.txt.parse("<i>that only the owner(s), faction admin, and possibly the")); pageLines.add(p.txt.parse("<i>that only the owner(s), faction admin, and possibly the"));
@ -123,11 +123,11 @@ public class CmdHelp extends FCommand
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( p.cmdBase.cmdDisband.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDisband.getUseageTemplate(true) );
pageLines.add(""); pageLines.add("");
pageLines.add( p.cmdBase.cmdRelationAlly.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdRelationAlly.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdRelationNeutral.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdRelationNeutral.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdRelationEnemy.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdRelationEnemy.getUseageTemplate(true) );
pageLines.add(p.txt.parse("<i>Set the relation you WISH to have with another faction.")); pageLines.add(p.txt.parse("<i>Set the relation you WISH to have with another faction."));
pageLines.add(p.txt.parse("<i>Your default relation with other factions will be neutral.")); pageLines.add(p.txt.parse("<i>Your default relation with other factions will be neutral."));
pageLines.add(p.txt.parse("<i>If BOTH factions choose \"ally\" you will be allies.")); pageLines.add(p.txt.parse("<i>If BOTH factions choose \"ally\" you will be allies."));
@ -160,26 +160,26 @@ public class CmdHelp extends FCommand
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add("Finally some commands for the server admins:"); pageLines.add("Finally some commands for the server admins:");
pageLines.add( p.cmdBase.cmdBypass.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdBypass.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdSafeclaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSafeclaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdAutoSafeclaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAutoSafeclaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdSafeunclaimall.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSafeunclaimall.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdWarclaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdWarclaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdAutoWarclaim.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAutoWarclaim.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdWarunclaimall.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdWarunclaimall.getUseageTemplate(true) );
pageLines.add(p.txt.parse("<i>Note: " + p.cmdBase.cmdUnclaim.getUseageTemplate(false) + P.p.txt.parse("<i>") + " works on safe/war zones as well.")); pageLines.add(p.txt.parse("<i>Note: " + p.cmdBase.cmdUnclaim.getUseageTemplate(false) + P.p.txt.parse("<i>") + " works on safe/war zones as well."));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add(p.txt.parse("<i>More commands for server admins:")); pageLines.add(p.txt.parse("<i>More commands for server admins:"));
pageLines.add( p.cmdBase.cmdPeaceful.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPeaceful.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdPermanent.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPermanent.getUseageTemplate(true) );
pageLines.add(p.txt.parse("<i>Peaceful factions are protected from PvP and land capture.")); pageLines.add(p.txt.parse("<i>Peaceful factions are protected from PvP and land capture."));
pageLines.add( p.cmdBase.cmdLock.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdLock.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdReload.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdReload.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdSaveAll.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSaveAll.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdVersion.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdVersion.getUseageTemplate(true) );
pageLines.add( p.cmdBase.cmdConfig.getUseageTemplate() ); pageLines.add( p.cmdBase.cmdConfig.getUseageTemplate(true) );
helpPages.add(pageLines); helpPages.add(pageLines);
} }
} }

View File

@ -7,7 +7,9 @@ public class CmdMoney extends FCommand
public CmdMoneyBalance cmdMoneyBalance = new CmdMoneyBalance(); public CmdMoneyBalance cmdMoneyBalance = new CmdMoneyBalance();
public CmdMoneyDeposit cmdMoneyDeposit = new CmdMoneyDeposit(); public CmdMoneyDeposit cmdMoneyDeposit = new CmdMoneyDeposit();
public CmdMoneyWithdraw cmdMoneyWithdraw = new CmdMoneyWithdraw(); public CmdMoneyWithdraw cmdMoneyWithdraw = new CmdMoneyWithdraw();
public CmdMoneyPay cmdMoneyPay = new CmdMoneyPay(); public CmdMoneyTransferFf cmdMoneyTransferFf = new CmdMoneyTransferFf();
public CmdMoneyTransferFp cmdMoneyTransferFp = new CmdMoneyTransferFp();
public CmdMoneyTransferPf cmdMoneyTransferPf = new CmdMoneyTransferPf();
public CmdMoney() public CmdMoney()
{ {
@ -18,7 +20,6 @@ public class CmdMoney extends FCommand
//this.optionalArgs.put("","") //this.optionalArgs.put("","")
this.isMoneyCommand = true; this.isMoneyCommand = true;
this.isBankCommand = false;
senderMustBePlayer = false; senderMustBePlayer = false;
senderMustBeMember = false; senderMustBeMember = false;
@ -31,7 +32,9 @@ public class CmdMoney extends FCommand
this.addSubCommand(this.cmdMoneyBalance); this.addSubCommand(this.cmdMoneyBalance);
this.addSubCommand(this.cmdMoneyDeposit); this.addSubCommand(this.cmdMoneyDeposit);
this.addSubCommand(this.cmdMoneyWithdraw); this.addSubCommand(this.cmdMoneyWithdraw);
this.addSubCommand(this.cmdMoneyPay); this.addSubCommand(this.cmdMoneyTransferFf);
this.addSubCommand(this.cmdMoneyTransferFp);
this.addSubCommand(this.cmdMoneyTransferPf);
} }
@Override @Override

View File

@ -16,8 +16,7 @@ public class CmdMoneyBalance extends FCommand
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");
this.permission = Permission.MONEY_BALANCE.node; this.permission = Permission.MONEY_BALANCE.node;
this.isMoneyCommand = true; this.setHelpShort("show faction balance");
this.isBankCommand = true;
senderMustBePlayer = false; senderMustBePlayer = false;
senderMustBeMember = false; senderMustBeMember = false;

View File

@ -11,14 +11,14 @@ public class CmdMoneyDeposit extends FCommand
public CmdMoneyDeposit() public CmdMoneyDeposit()
{ {
super(); super();
this.aliases.add("d");
this.aliases.add("deposit"); this.aliases.add("deposit");
this.requiredArgs.add("amount"); this.requiredArgs.add("amount");
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");
this.permission = Permission.MONEY_DEPOSIT.node; this.permission = Permission.MONEY_DEPOSIT.node;
this.isMoneyCommand = true; this.setHelpShort("deposit money");
this.isBankCommand = true;
senderMustBePlayer = true; senderMustBePlayer = true;
senderMustBeMember = false; senderMustBeMember = false;
@ -29,7 +29,7 @@ public class CmdMoneyDeposit extends FCommand
@Override @Override
public void perform() public void perform()
{ {
double amount = this.argAsDouble(0, 0); double amount = this.argAsDouble(0, 0d);
Faction faction = this.argAsFaction(1, myFaction); Faction faction = this.argAsFaction(1, myFaction);
if (faction == null) return; if (faction == null) return;
Econ.transferMoney(fme, fme, faction, amount); Econ.transferMoney(fme, fme, faction, amount);

View File

@ -1,37 +0,0 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.struct.Permission;
public class CmdMoneyPay extends FCommand
{
public CmdMoneyPay()
{
this.aliases.add("pay");
this.requiredArgs.add("amount");
this.requiredArgs.add("faction");
//this.optionalArgs.put("", "");
this.permission = Permission.MONEY_PAY.node;
this.isMoneyCommand = true;
this.isBankCommand = true;
senderMustBePlayer = true;
senderMustBeMember = true;
senderMustBeModerator = false;
senderMustBeAdmin = false;
}
@Override
public void perform()
{
double amount = this.argAsDouble(0, 0);
Faction faction = this.argAsFaction(1);
if (faction == null) return;
Econ.transferMoney(fme, myFaction, faction, amount);
}
}

View File

@ -0,0 +1,40 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.struct.Permission;
public class CmdMoneyTransferFf extends FCommand
{
public CmdMoneyTransferFf()
{
this.aliases.add("ff");
this.requiredArgs.add("amount");
this.requiredArgs.add("faction");
this.requiredArgs.add("faction");
//this.optionalArgs.put("", "");
this.permission = Permission.MONEY_F2F.node;
this.setHelpShort("transfer f -> f");
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeModerator = false;
senderMustBeAdmin = false;
}
@Override
public void perform()
{
double amount = this.argAsDouble(0, 0d);
EconomyParticipator from = this.argAsFaction(1);
if (from == null) return;
EconomyParticipator to = this.argAsFaction(2);
if (to == null) return;
Econ.transferMoney(fme, from, to, amount);
}
}

View File

@ -0,0 +1,40 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.struct.Permission;
public class CmdMoneyTransferFp extends FCommand
{
public CmdMoneyTransferFp()
{
this.aliases.add("fp");
this.requiredArgs.add("amount");
this.requiredArgs.add("faction");
this.requiredArgs.add("player");
//this.optionalArgs.put("", "");
this.permission = Permission.MONEY_F2P.node;
this.setHelpShort("transfer f -> p");
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeModerator = false;
senderMustBeAdmin = false;
}
@Override
public void perform()
{
double amount = this.argAsDouble(0, 0d);
EconomyParticipator from = this.argAsFaction(1);
if (from == null) return;
EconomyParticipator to = this.argAsBestFPlayerMatch(2);
if (to == null) return;
Econ.transferMoney(fme, from, to, amount);
}
}

View File

@ -0,0 +1,40 @@
package com.massivecraft.factions.cmd;
import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.integration.Econ;
import com.massivecraft.factions.struct.Permission;
public class CmdMoneyTransferPf extends FCommand
{
public CmdMoneyTransferPf()
{
this.aliases.add("pf");
this.requiredArgs.add("amount");
this.requiredArgs.add("player");
this.requiredArgs.add("faction");
//this.optionalArgs.put("", "");
this.permission = Permission.MONEY_P2F.node;
this.setHelpShort("transfer p -> f");
senderMustBePlayer = false;
senderMustBeMember = false;
senderMustBeModerator = false;
senderMustBeAdmin = false;
}
@Override
public void perform()
{
double amount = this.argAsDouble(0, 0d);
EconomyParticipator from = this.argAsBestFPlayerMatch(1);
if (from == null) return;
EconomyParticipator to = this.argAsFaction(2);
if (to == null) return;
Econ.transferMoney(fme, from, to, amount);
}
}

View File

@ -6,17 +6,16 @@ import com.massivecraft.factions.struct.Permission;
public class CmdMoneyWithdraw extends FCommand public class CmdMoneyWithdraw extends FCommand
{ {
public CmdMoneyWithdraw() public CmdMoneyWithdraw()
{ {
this.aliases.add("w");
this.aliases.add("withdraw"); this.aliases.add("withdraw");
this.requiredArgs.add("amount"); this.requiredArgs.add("amount");
this.optionalArgs.put("faction", "yours"); this.optionalArgs.put("faction", "yours");
this.permission = Permission.MONEY_WITHDRAW.node; this.permission = Permission.MONEY_WITHDRAW.node;
this.isMoneyCommand = true; this.setHelpShort("withdraw money");
this.isBankCommand = true;
senderMustBePlayer = true; senderMustBePlayer = true;
senderMustBeMember = false; senderMustBeMember = false;
@ -27,47 +26,9 @@ public class CmdMoneyWithdraw extends FCommand
@Override @Override
public void perform() public void perform()
{ {
double amount = this.argAsDouble(0, 0); double amount = this.argAsDouble(0, 0d);
Faction faction = this.argAsFaction(1, myFaction); Faction faction = this.argAsFaction(1, myFaction);
if (faction == null) return; if (faction == null) return;
Econ.transferMoney(fme, faction, fme, amount); Econ.transferMoney(fme, faction, fme, amount);
/*if ( ! Conf.bankMembersCanWithdraw && ! assertMinRole(Role.MODERATOR))
{
msg("<b>Only faction moderators or admins are able to withdraw from the bank.");
return;
}
Faction faction = myFaction;
double amount = this.argAsDouble(0, 0d);
if( amount > 0.0 )
{
String amountString = Econ.moneyString(amount);
if( amount > faction.getMoney() )
{
amount = faction.getMoney();
}
// TODO: Improve messages.
faction.removeMoney(amount);
Econ.addMoney(fme.getName(), amount);
msg("<i>You have withdrawn "+amountString+" from "+faction.getTag()+"'s bank.");
msg("<i>"+faction.getTag()+" now has "+Econ.moneyString(faction.getMoney()));
P.p.log(fme.getName() + " withdrew "+amountString+" from "+faction.getTag()+"'s bank.");
// TODO: FAction.getOnlineMembers().
for (FPlayer fplayer : FPlayers.i.getOnline())
{
if (fplayer.getFaction() == faction)
{
fplayer.msg("%s<i> has withdrawn %s", fme.getNameAndRelevant(fplayer), amountString);
} }
} }
}*/
}
}

View File

@ -27,7 +27,6 @@ public abstract class FCommand extends MCommand<P>
public boolean senderMustBeAdmin; public boolean senderMustBeAdmin;
public boolean isMoneyCommand; public boolean isMoneyCommand;
public boolean isBankCommand;
public FCommand() public FCommand()
{ {
@ -38,7 +37,6 @@ public abstract class FCommand extends MCommand<P>
// The money commands must be disabled if money should not be used. // The money commands must be disabled if money should not be used.
isMoneyCommand = false; isMoneyCommand = false;
isBankCommand = false;
senderMustBeMember = false; senderMustBeMember = false;
senderMustBeModerator = false; senderMustBeModerator = false;
@ -76,7 +74,7 @@ public abstract class FCommand extends MCommand<P>
return false; return false;
} }
if (this.isBankCommand && ! Conf.bankEnabled) if (this.isMoneyCommand && ! Conf.bankEnabled)
{ {
msg("<b>The faction bank system is diabled on this server."); msg("<b>The faction bank system is diabled on this server.");
return false; return false;

View File

@ -16,6 +16,7 @@ import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions; import com.massivecraft.factions.Factions;
import com.massivecraft.factions.P; import com.massivecraft.factions.P;
import com.massivecraft.factions.iface.EconomyParticipator; import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.struct.Role;
import com.massivecraft.factions.util.RelationUtil; import com.massivecraft.factions.util.RelationUtil;
@ -95,6 +96,9 @@ public class Econ
// Bypassing players can do any kind of transaction // Bypassing players can do any kind of transaction
if (i instanceof FPlayer && ((FPlayer)i).isAdminBypassing()) return true; if (i instanceof FPlayer && ((FPlayer)i).isAdminBypassing()) return true;
// Players with the any withdraw can to.
if (i instanceof FPlayer && Permission.MONEY_WITHDRAW_ANY.has(((FPlayer)i).getPlayer())) return true;
// You can deposit to anywhere you feel like. It's your loss if you can't withdraw it again. // You can deposit to anywhere you feel like. It's your loss if you can't withdraw it again.
if (i == you) return true; if (i == you) return true;

View File

@ -34,9 +34,11 @@ public enum Permission
MONEY_BALANCE("money.balance"), MONEY_BALANCE("money.balance"),
MONEY_BALANCE_ANY("money.balance.any"), MONEY_BALANCE_ANY("money.balance.any"),
MONEY_DEPOSIT("money.deposit"), MONEY_DEPOSIT("money.deposit"),
MONEY_PAY("money.pay"),
MONEY_WITHDRAW("money.withdraw"), MONEY_WITHDRAW("money.withdraw"),
MONEY_WITHDRAW_ANY("money.withdraw.any"), MONEY_WITHDRAW_ANY("money.withdraw.any"),
MONEY_F2F("money.f2f"),
MONEY_F2P("money.f2p"),
MONEY_P2F("money.p2f"),
NO_BOOM("noboom"), NO_BOOM("noboom"),
OPEN("open"), OPEN("open"),
OWNER("owner"), OWNER("owner"),

View File

@ -48,7 +48,7 @@ public abstract class MCommand<T extends MPlugin>
{ {
return pdesc; return pdesc;
} }
return "*no short help available*"; return "*info unavailable*";
} }
return this.helpShort; return this.helpShort;
} }
@ -265,7 +265,7 @@ public abstract class MCommand<T extends MPlugin>
if (addShortHelp) if (addShortHelp)
{ {
ret.append(p.txt.parseTags(" <i>")); ret.append(p.txt.parseTags(" <i>"));
ret.append(this.helpShort); ret.append(this.getHelpShort());
} }
return ret.toString(); return ret.toString();
@ -332,12 +332,12 @@ public abstract class MCommand<T extends MPlugin>
} }
// INT ====================== // INT ======================
public int strAsInt(String str, int def) public Integer strAsInt(String str, Integer def)
{ {
if (str == null) return def; if (str == null) return def;
try try
{ {
int ret = Integer.parseInt(str); Integer ret = Integer.parseInt(str);
return ret; return ret;
} }
catch (Exception e) catch (Exception e)
@ -345,22 +345,22 @@ public abstract class MCommand<T extends MPlugin>
return def; return def;
} }
} }
public int argAsInt(int idx, int def) public Integer argAsInt(int idx, Integer def)
{ {
return strAsInt(this.argAsString(idx), def); return strAsInt(this.argAsString(idx), def);
} }
public int argAsInt(int idx) public Integer argAsInt(int idx)
{ {
return this.argAsInt(idx, -1); return this.argAsInt(idx, null);
} }
// Double ====================== // Double ======================
public double strAsDouble(String str, double def) public Double strAsDouble(String str, Double def)
{ {
if (str == null) return def; if (str == null) return def;
try try
{ {
double ret = Double.parseDouble(str); Double ret = Double.parseDouble(str);
return ret; return ret;
} }
catch (Exception e) catch (Exception e)
@ -368,13 +368,13 @@ public abstract class MCommand<T extends MPlugin>
return def; return def;
} }
} }
public double argAsDouble(int idx, double def) public Double argAsDouble(int idx, Double def)
{ {
return strAsDouble(this.argAsString(idx), def); return strAsDouble(this.argAsString(idx), def);
} }
public double argAsDouble(int idx) public Double argAsDouble(int idx)
{ {
return this.argAsDouble(idx, -1d); return this.argAsDouble(idx, null);
} }
// TODO: Go through the str conversion for the other arg-readers as well. // TODO: Go through the str conversion for the other arg-readers as well.

View File

@ -44,6 +44,7 @@ public class PermUtil {
{ {
for(Permission permission : p.getDescription().getPermissions()) for(Permission permission : p.getDescription().getPermissions())
{ {
//p.log("\""+permission.getName()+"\" = \""+permission.getDescription()+"\"");
this.permissionDescriptions.put(permission.getName(), permission.getDescription()); this.permissionDescriptions.put(permission.getName(), permission.getDescription());
} }
@ -88,7 +89,9 @@ public class PermUtil {
if (pex != null) 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) if (perm2or3 != null)