use of com.iCo6.system.Account in project Core by iConomy.
the class Money method perform.
@Override
public boolean perform(CommandSender sender, LinkedHashMap<String, Argument> arguments) throws InvalidUsage {
if (Constants.Nodes.useHoldingsPermission.getBoolean())
if (!hasPermissions(sender, "money"))
throw new InvalidUsage("You do not have permission to do that.");
String name = arguments.get("name").getStringValue();
String tag = template.color(Template.Node.TAG_MONEY);
if (name.equals("0")) {
if (isConsole(sender)) {
Messaging.send(sender, "`rCannot check money on non-living organism.");
return false;
}
Player player = (Player) sender;
if (player == null)
return false;
Account account = new Account(player.getName());
account.getHoldings().showBalance(null);
return false;
}
if (!hasPermissions(sender, "money+"))
throw new InvalidUsage("You do not have permission to do that.");
if (!Accounts.exists(name)) {
template.set(Template.Node.ERROR_ACCOUNT);
template.add("name", name);
Messaging.send(sender, tag + template.parse());
return false;
}
Account account = new Account(name);
account.getHoldings().showBalance(sender);
return false;
}
use of com.iCo6.system.Account in project Core by iConomy.
the class MoneyComparator method topAccounts.
static List<Account> topAccounts(int amount) {
Accounts Accounts = new Accounts();
List<Account> accounts = new ArrayList<Account>();
List<Account> finals = new ArrayList<Account>();
List<String> total = new ArrayList<String>();
if (useMiniDB() || useInventoryDB() || useOrbDB()) {
if (useInventoryDB())
total.addAll(inventory.getAllPlayers());
if (useOrbDB())
for (Player p : iConomy.Server.getOnlinePlayers()) total.add(p.getName());
total.addAll(database.getIndices().keySet());
} else {
try {
QueryRunner run = new QueryRunner();
Connection c = iConomy.Database.getConnection();
try {
String t = Constants.Nodes.DatabaseTable.toString();
total = run.query(c, "SELECT username FROM " + t + " WHERE status <> 1 ORDER BY balance DESC LIMIT " + amount, returnList);
} catch (SQLException ex) {
System.out.println("[iConomy] Error issueing SQL query: " + ex);
} finally {
DbUtils.close(c);
}
} catch (SQLException ex) {
System.out.println("[iConomy] Database Error: " + ex);
}
}
for (Iterator<String> it = total.iterator(); it.hasNext(); ) {
String player = it.next();
if (useMiniDB() || useInventoryDB() || useOrbDB()) {
accounts.add(Accounts.get(player));
} else {
finals.add(new Account(player));
}
}
if (useMiniDB() || useInventoryDB() || useOrbDB()) {
Collections.sort(accounts, new MoneyComparator());
if (amount > accounts.size())
amount = accounts.size();
for (int i = 0; i < amount; i++) {
if (accounts.get(i).getStatus() == 1) {
i--;
continue;
}
finals.add(accounts.get(i));
}
}
return finals;
}
use of com.iCo6.system.Account in project Core by iConomy.
the class Set method perform.
@Override
public boolean perform(CommandSender sender, LinkedHashMap<String, Argument> arguments) throws InvalidUsage {
if (!hasPermissions(sender, "set"))
throw new InvalidUsage("You do not have permission to do that.");
String name = arguments.get("name").getStringValue();
String tag = template.color(Template.Node.TAG_MONEY);
Double amount;
if (name.equals("0"))
throw new InvalidUsage("Missing <white>name<rose>: /money set <name> <amount>");
if (arguments.get("amount").getStringValue().equals("empty"))
throw new InvalidUsage("Missing <white>amount<rose>: /money set <name> <amount>");
try {
amount = arguments.get("amount").getDoubleValue();
} catch (NumberFormatException e) {
throw new InvalidUsage("Invalid <white>amount<rose>, must be double.");
}
if (Double.isInfinite(amount) || Double.isNaN(amount))
throw new InvalidUsage("Invalid <white>amount<rose>, must be double.");
if (!Accounts.exists(name)) {
template.set(Template.Node.ERROR_ACCOUNT);
template.add("name", name);
Messaging.send(sender, tag + template.parse());
return false;
}
Account account = new Account(name);
account.getHoldings().setBalance(amount);
template.set(Template.Node.PLAYER_SET);
template.add("name", name);
template.add("amount", account.getHoldings().toString());
Messaging.send(sender, tag + template.parse());
return false;
}
use of com.iCo6.system.Account in project Core by iConomy.
the class Take method perform.
@Override
public boolean perform(CommandSender sender, LinkedHashMap<String, Argument> arguments) throws InvalidUsage {
if (!hasPermissions(sender, "take"))
throw new InvalidUsage("You do not have permission to do that.");
String name = arguments.get("name").getStringValue();
String tag = template.color(Template.Node.TAG_MONEY);
Double amount;
if (name.equals("0"))
throw new InvalidUsage("Missing name parameter: /money take <name> <amount>");
if (arguments.get("amount").getStringValue().equals("empty"))
throw new InvalidUsage("Missing amount parameter: /money take <name> <amount>");
try {
amount = arguments.get("amount").getDoubleValue();
} catch (NumberFormatException e) {
throw new InvalidUsage("Invalid amount parameter, must be double.");
}
if (Double.isInfinite(amount) || Double.isNaN(amount))
throw new InvalidUsage("Invalid amount parameter, must be double.");
if (!Accounts.exists(name)) {
template.set(Template.Node.ERROR_ACCOUNT);
template.add("name", name);
Messaging.send(sender, tag + template.parse());
return false;
}
Account account = new Account(name);
account.getHoldings().subtract(amount);
template.set(Template.Node.PLAYER_DEBIT);
template.add("name", name);
template.add("amount", iConomy.format(amount));
Messaging.send(sender, tag + template.parse());
return false;
}
use of com.iCo6.system.Account in project Core by iConomy.
the class Payment method perform.
@Override
public boolean perform(CommandSender sender, LinkedHashMap<String, Argument> arguments) throws InvalidUsage {
if (!hasPermissions(sender, "pay"))
return false;
if (isConsole(sender)) {
Messaging.send(sender, "`rCannot remove money from a non-living organism.");
return false;
}
Player from = (Player) sender;
String name = arguments.get("name").getStringValue();
String tag = template.color(Template.Node.TAG_MONEY);
Double amount;
if (name.equals("0"))
throw new InvalidUsage("Missing <white>name<rose>: /money pay <name> <amount>");
if (arguments.get("amount").getStringValue().equals("empty"))
throw new InvalidUsage("Missing <white>amount<rose>: /money pay <name> <amount>");
try {
amount = arguments.get("amount").getDoubleValue();
} catch (NumberFormatException e) {
throw new InvalidUsage("Invalid <white>amount<rose>, must be double.");
}
if (Double.isInfinite(amount) || Double.isNaN(amount))
throw new InvalidUsage("Invalid <white>amount<rose>, must be double.");
if (amount < 0.1)
throw new InvalidUsage("Invalid <white>amount<rose>, cannot be less than 0.1");
if (Common.matches(from.getName(), name)) {
template.set(Template.Node.PAYMENT_SELF);
Messaging.send(sender, template.parse());
return false;
}
if (!Accounts.exists(name)) {
template.set(Template.Node.ERROR_ACCOUNT);
template.add("name", name);
Messaging.send(sender, tag + template.parse());
return false;
}
Account holder = new Account(from.getName());
Holdings holdings = holder.getHoldings();
if (holdings.getBalance() < amount) {
template.set(Template.Node.ERROR_FUNDS);
Messaging.send(sender, tag + template.parse());
return false;
}
Account account = new Account(name);
holdings.subtract(amount);
account.getHoldings().add(amount);
template.set(Template.Node.PAYMENT_TO);
template.add("name", name);
template.add("amount", iConomy.format(amount));
Messaging.send(sender, tag + template.parse());
Player to = iConomy.Server.getPlayer(name);
if (to != null) {
template.set(Template.Node.PAYMENT_FROM);
template.add("name", from.getName());
template.add("amount", iConomy.format(amount));
Messaging.send(to, tag + template.parse());
}
return false;
}
Aggregations