package org.buckit.commands.admin;
import java.net.InetAddress;
import java.util.List;
import org.buckit.Config;
import org.buckit.model.UserDataHolder;
import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class WhoisCommand extends Command {
private Server server;
public WhoisCommand(String name, Server server) {
super(name);
this.description = "Gives regular information about [player].";
this.usageMessage = "Usage: /whois [player]";
this.accessname = "buckit.admin.whois";
this.server = server;
}
@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
if(args.length == 0) {
sender.sendMessage(getUsage());
}
String playername = args[0].toLowerCase();
List<Player> matches = server.matchPlayer(playername);
UserDataHolder data = null;
if(matches.size() == 0) {
data = server.getDataSourceManager().getUserDataSource().getUserData(playername);
} else if(matches.size() == 1) {
data = matches.get(0).getUserDataHolder();
} else {
for(Player p : matches) {
if(p.getName().equalsIgnoreCase(playername)) {
data = p.getUserDataHolder();
break;
}
}
}
if(data == null){
sender.sendMessage(Config.DEFAULT_ERROR_COLOR + "No player found with name: '" + playername + "'.");
return true;
}
byte[] addr = new byte[4];
String[] split =data.getIp().split(".");
for(int i = 0;i < split.length;i++){
addr[i] = Byte.parseByte(split[i]);
}
String hostname = "None found.";
try {
hostname = InetAddress.getByAddress(addr).getCanonicalHostName();
} catch (Exception e) {
}
sender.sendMessage("Player: "+data.getUsername());
sender.sendMessage("Ip: " + data.getIp());
sender.sendMessage("Hostname: " + hostname);
sender.sendMessage("Online: " + data.isOnline());
return true;
}
}