- Баллы
- 76
- Имя в Minecraft
- Slavok2001
Создавая плагин на статистику, мозгами девелоперов с рубаккита, я столкнулся с новой проблемой. Мне помогли вывести префикс группы, в которой состоит игрок. Но, как только там появляется 'Player p = Bukkit.getPlayer(args[0]), т.е. игрок, перестает работать выводиться статистика игроков, которые оффлайн, хотя данные, которые выводятся, хранятся в файле. Подскажите, как мне решить эту проблему. При попытки получения статистики игрока, который оффлайн, выходит знакомая ошибка "Am internal..."
Код:
Конфиг, из которого берутся данные:
Код:
Java:
@Override
public boolean onCommand(CommandSender s, Command cmd, String label, String[] args) {
String arg1 = args[0].toLowerCase();
if(args.length != 1) {
s.sendMessage("Неверное использование");
return true;
}
if(!plugin.getConfig().contains("players." + arg1)) {
s.sendMessage("Такого игрока нет");
return true;
}
Player player = Bukkit.getPlayer(args[0]);
String group = Main.c.getPrimaryGroup(player);
String prefix = Main.c.getGroupPrefix(player.getWorld(), group);
prefix = prefix.replace("&", "\u00a7");
String status = Bukkit.getPlayerExact(args[0]) == null ? plugin.getConfig().getString("status.offline") : plugin.getConfig().getString("status.online");
int kills = plugin.getConfig().getInt("players." + arg1 + ".kills");
int deaths = plugin.getConfig().getInt("players." + arg1 + ".deaths");
int rating = plugin.getConfig().getInt("players." + arg1 + ".rating");
String skills = String.valueOf(kills);
String sdeaths = String.valueOf(deaths);
String srating = String.valueOf(rating);
int percent = deaths == 0 && kills == 0 ? 0 : kills*100/(deaths+kills);
String spercent = percent < 50 ? ChatColor.RED + String.valueOf(percent) : percent < 60 ? ChatColor.YELLOW + String.valueOf(percent) : percent < 75 ? ChatColor.DARK_AQUA + String.valueOf(percent) : percent < 95 ? ChatColor.DARK_PURPLE + String.valueOf(percent) : ChatColor.LIGHT_PURPLE + String.valueOf(percent);
List<String> stat = plugin.getConfig().getStringList("message");
for (String statlist : stat) {
statlist = statlist.replace("&", "\u00a7");
statlist = statlist.replaceAll("%kills", skills);
statlist = statlist.replaceAll("%deaths", sdeaths);
statlist = statlist.replaceAll("%rating", srating);
statlist = statlist.replaceAll("%nick", args[0]);
statlist = statlist.replaceAll("%percent", spercent);
statlist = statlist.replaceAll("%prefix", prefix);
statlist = statlist.replaceAll("%status", status);
s.sendMessage(statlist);
}
return true;
}
Код:
status:
online: '&aOnline'
offline: '&cOffline'
message:
- '&6==================='
- '&6Ник: &e%nick'
- '&6Привилегия: %prefix'
- '&6Убийств: &a%kills'
- '&cСмертей: %deaths'
- '&eБоевой рейтинг: &a%rating'
- '&6Процент побед: %percent%'
- '&6Статус: %status'
- '&6==================='
config:
rating-add: 6
rating-remove: 8
players:
slavkaa:
kills: 0
rating: 0
deaths: 0
blackmaster:
kills: 0
rating: 0
deaths: 0