80 lines
2.2 KiB
Java
80 lines
2.2 KiB
Java
package me.jamestmartin.wasteland.commands;
|
|
|
|
import java.sql.SQLException;
|
|
import java.util.logging.Level;
|
|
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import me.jamestmartin.wasteland.Wasteland;
|
|
|
|
public class CommandSetKills implements CommandExecutor {
|
|
@Override
|
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
if (!sender.hasPermission("wasteland.kills.set")) {
|
|
sender.sendMessage("You do not have permission to set a player's kills.");
|
|
return true;
|
|
}
|
|
|
|
if (args.length < 1) {
|
|
sender.sendMessage("You must specify the number of kills to set to.");
|
|
return false;
|
|
}
|
|
if (args.length > 2) {
|
|
sender.sendMessage("Too many arguments.");
|
|
return false;
|
|
}
|
|
|
|
String playerNowHas;
|
|
Player subject;
|
|
if (args.length == 1) {
|
|
if (!(sender instanceof Player)) {
|
|
sender.sendMessage("You are not a player! Don't forget to specify a player argument.");
|
|
return false;
|
|
}
|
|
subject = (Player) sender;
|
|
playerNowHas = "You now have";
|
|
} else {
|
|
subject = sender.getServer().getPlayer(args[0]);
|
|
if (subject == null) {
|
|
sender.sendMessage("Unknown player: " + args[0]);
|
|
return false;
|
|
}
|
|
playerNowHas = subject.getDisplayName() + " now has";
|
|
}
|
|
|
|
String killsArg;
|
|
if (args.length == 1) {
|
|
killsArg = args[0];
|
|
} else {
|
|
killsArg = args[1];
|
|
}
|
|
|
|
int kills;
|
|
try {
|
|
kills = Integer.valueOf(killsArg);
|
|
} catch (NumberFormatException e) {
|
|
sender.sendMessage("Not a valid number of kills: " + killsArg);
|
|
return false;
|
|
}
|
|
|
|
if (kills < 0) {
|
|
sender.sendMessage("The number of kills must not be negative!");
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
Wasteland.getInstance().getDatabase().setPlayerKills(subject, kills);
|
|
Wasteland.getInstance().updatePlayerRank(subject);
|
|
sender.sendMessage(playerNowHas + " " + kills + " kills.");
|
|
} catch (SQLException e) {
|
|
Wasteland.getInstance().getLogger().log(Level.SEVERE, "Failed to set player kills.", e);
|
|
sender.sendMessage("ERROR: Failed to update player kills. Please notify a server administrator.");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|