Помогите Из "именной" головы вместо OfflinePlayer приходит null

IlyaHaker

Активный участник
Пользователь
Баллы
76
Я создал некий инвентарь, в первом слоте которого находится голова.
Код:
SkullMeta meta = (SkullMeta) skull.getItemMeta();
OfflinePlayer player = this.getServer().getOfflinePlayer(something_uuid);
meta.setOwningPlayer(player);
skull.setItemMeta(meta);
Далее при нажатии на эту голову в инвентаре я должен получить объект OfflinePlayer
Код:
SkullMeta meta = (SkullMeta) e.getCurrentItem().getItemMeta();
OfflinePlayer player = meta.getOwningPlayer();
e.getPlayer().sendMessage("Name: " + player.getName());
в итоге получаю такое сообщение: Name: null[/CODE]
 
В первом случае:
this.getServer().getOfflinePlayer(something_uuid)
Возвращает тебе оффлайн игрока без никнейма (да, так тоже может быть), возможно его никогда не было на сервере (его данные отсутствуют на карте).
 
В первом случае:
this.getServer().getOfflinePlayer(something_uuid)
Возвращает тебе оффлайн игрока без никнейма (да, так тоже может быть), возможно его никогда не было на сервере (его данные отсутствуют на карте).
Дело в том, что этот OfflinePlayer гарантированно был на сервере, его UUID сохранилось при первом входе.
Начну издалека. У меня online-mode - false. Заходил и тестил я все с лицензии. К голове присваивался мой лицензионный UUID, скин ставился нормальный. Далее, решил сделать вывод в чат того UUID, который установлен на голове.
meta.getOwningPlayer().getUniqueId();
Оказалось, выводится UUID, который был бы, зайдя я с этого же ника, но через пиратский лаунчер.
Возможно это каким-нибудь образом исправить?
 
Дело в том, что этот OfflinePlayer гарантированно был на сервере, его UUID сохранилось при первом входе.
Начну издалека. У меня online-mode - false. Заходил и тестил я все с лицензии. К голове присваивался мой лицензионный UUID, скин ставился нормальный. Далее, решил сделать вывод в чат того UUID, который установлен на голове.
meta.getOwningPlayer().getUniqueId();
Оказалось, выводится UUID, который был бы, зайдя я с этого же ника, но через пиратский лаунчер.
Возможно это каким-нибудь образом исправить?
Если online-mode: false, то сервер работает исключительно с оффлайн UUID, заходишь ты с пиратки или лицензии.
 
Тогда появляется несколько вопросов:
1. Почему, когда я захожу с пиратки показывает, что я зашел с одним UUID, а когда с лицензии - с другим?
2. Почему метод e.getPlayer().getUniqueId(); возвращает "лицензионный" UUID?
3. Почему this.getServer().getOfflinePlayer(something_uuid); тоже возвращает лицензионный UUID
И, собсна, как получать только "пиратский" UUID?
 
Тогда появляется несколько вопросов:
1. Почему, когда я захожу с пиратки показывает, что я зашел с одним UUID, а когда с лицензии - с другим?
2. Почему метод e.getPlayer().getUniqueId(); возвращает "лицензионный" UUID?
3. Почему this.getServer().getOfflinePlayer(something_uuid); тоже возвращает лицензионный UUID
И, собсна, как получать только "пиратский" UUID?
Там проверка на онлайн мод, если оффлайн мод, то ууид буит сгенерированный из ника, так шо, если у тебя не так, то онлайн мод стоит true
 
1. Почему, когда я захожу с пиратки показывает, что я зашел с одним UUID, а когда с лицензии - с другим?
Такого не может быть, если сервер настроен на online-mode: false, будет показывать только оффлайн, так как сервер никаким образом не проверяет лицензию игрока в этом режиме, он генерирует через ник. Не встречал подобных ситуаций. Перешел на online-mode: false, зашел, создался уже файлик с оффлайн UUID на меня.

2. Почему метод e.getPlayer().getUniqueId(); возвращает "лицензионный" UUID?
Аналогично выше.
Может у тебя online-mode: true, либо что то с банжей не так, либо ядро левое?

3. Почему this.getServer().getOfflinePlayer(something_uuid);
Ну потому что something_uuid ты задаешь онлайновый, вот тебе и возвращает то самое.

И, собсна, как получать только "пиратский" UUID?
UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(StandardCharsets.UTF_8));
 
Назад
Верх