Преобразование UUID <---> NickName

Версия Minecraft
1.7.10
API
Forge
236
4
22
Добрый день всем. Помогите пожалуйста найти методы получения UUID из ника игрока и на оборот - UUID по имени игрока. В обеих случаях требует поддержка оффлайн-игроков, по этому циклы по онлайн игрокам в сторону. Также обязательно нужно, чтобы не было проблем при юзе таких методов с GravitLauncher / Лаунчер сашка, на подобии генерации разных UUID/ников для одного и того же игрока.

На текущий момент в поисках решения удалось найти вот такие методы:
UUID uuid = MinecraftServer.getServer().func_152358_ax().func_152655_a(никнейм игрока).getId();
String nickName = UsernameCache.getLastKnownUsername(uuid);
Sting nickName = MinecraftServer.getServer().func_152358_ax().func_152652_a(uuid);

Но, первый метод - выдаёт UUID даже на тех игроков, которые никогда не играли вообще, а мне нужно чтобы для тех кто не играл ещё был null.
Второй метод - иногда выдаёт null, хотя игрок с таким uuid уже играл.
Третий - вроде работает, но не уверен.
 
Решение
А что тогда скажешь про остальные методы?
Первый метод делает запрос к авторизации и достаёт UUID оттуда, вот и показывает даже тех кто не заходил на сервер.
Третий, вроде, не ходит к авторизации, значит должен показывать только тех кто заходил на сервер.

Не знаю, я его не юзал. Всегда использовал UsernameCache и всё было хорошо.
Чтобы получить UUID по нику, нужно просто инвертировать мапу:
Java:
public <K, V> Map<V, K> invertMap(Map<K, V> map){
    return map.entrySet().stream().collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
}
Java:
Map<String, UUID> usernames = invertMap(UsernameCache.getMap());
UUID id = usernames.get("tox1cozZ");
236
4
22
Второй метод отлично работает и никогда не вызывал проблем.
Возможно и работает, я в одиночке тестил (да, знаю, не подходящее место для этого теста). А что тогда скажешь про остальные методы?

Где и для чего ты это используешь?
Ну например получаю uuid по нику для какого-то обращения к API модов в оффлайне. Или же получаю актуальный ник для игрока по uuid для визуального показа (ну не uuid же показывать..) [касательно серверов, где можно поменять свой ник]
 

tox1cozZ

aka Agravaine
8,455
598
2,892
А что тогда скажешь про остальные методы?
Первый метод делает запрос к авторизации и достаёт UUID оттуда, вот и показывает даже тех кто не заходил на сервер.
Третий, вроде, не ходит к авторизации, значит должен показывать только тех кто заходил на сервер.

Не знаю, я его не юзал. Всегда использовал UsernameCache и всё было хорошо.
Чтобы получить UUID по нику, нужно просто инвертировать мапу:
Java:
public <K, V> Map<V, K> invertMap(Map<K, V> map){
    return map.entrySet().stream().collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
}
Java:
Map<String, UUID> usernames = invertMap(UsernameCache.getMap());
UUID id = usernames.get("tox1cozZ");
 

tox1cozZ

aka Agravaine
8,455
598
2,892
А что, выходит в кеше ников игроков и их UUID хранятся все, кто хотя-бы раз был на сервере в течении всего жизненного цикла сервера?
Да. В файлике usernamecache.json в корне сервера.
 
Сверху