package nl.sugcube.crystalquest.command;
import nl.sugcube.crystalquest.Broadcast;
import nl.sugcube.crystalquest.CrystalQuest;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/**
* @author SugarCaney
*/
public class CommandMoney extends CrystalQuestCommand {
public CommandMoney() {
super("money", "commands.usage-money", 3);
addPermissions(
"crystalquest.admin"
);
addAutoCompleteMeta(0, AutoCompleteArgument.MONEY);
}
private void set(CrystalQuest plugin, CommandSender sender, Player player, int amount) {
plugin.economy.getBalance().setBalance(player, amount);
sender.sendMessage(Broadcast.TAG + Broadcast.get("commands.money")
.replace("%player%", player.getName())
.replace("%amount%", Integer.toString(amount)));
}
private void give(CrystalQuest plugin, CommandSender sender, Player player, int amount) {
int previousBalance = plugin.economy.getBalance().getBalance(player, false);
int newBalance = previousBalance + amount;
plugin.economy.getBalance().setBalance(player, newBalance);
sender.sendMessage(Broadcast.TAG + Broadcast.get("commands.money-add")
.replace("%player%", player.getName())
.replace("%amount%", Integer.toString(amount)));
}
@Override
protected void executeImpl(CrystalQuest plugin, CommandSender sender, String... arguments) {
// Parse player
Player player = Bukkit.getPlayer(arguments[1]);
if (player == null) {
sender.sendMessage(Broadcast.get("commands.couldnt-find-player-var")
.replace("%p%", arguments[1]));
return;
}
// Parse amount
int amount;
try {
amount = Integer.parseInt(arguments[2]);
}
catch (NumberFormatException nfe) {
sender.sendMessage(Broadcast.get("commands.parse-number-error")
.replace("%n%", arguments[2]));
return;
}
// Set
if (arguments[0].equalsIgnoreCase("set")) {
set(plugin, sender, player, amount);
}
// Give
else if (arguments[0].equalsIgnoreCase("give") ||
arguments[0].equalsIgnoreCase("add")) {
give(plugin, sender, player, amount);
}
// Not supported.
else {
sender.sendMessage(Broadcast.get(usageNode));
}
}
@Override
protected boolean assertSender(CommandSender sender) {
return true;
}
}