1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Переключение на универсальный идентификатор (UUID) - Потенциальные проблемы плагинов/сервера

Тема в разделе "Разработка плагинов для новичков", создана пользователем fromgate, 6 апр 2014.

  1. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Возможно не совсем корректно приводить эту информацию здесь, но... в общем-то больше негде.
    Как известно, грядущая версия Minecraft 1.8, будет ещё ознаменовано ещё и возможностью менять имена. Некоторое время назад EvilSeph, рассказал свое виденье ситуации. На мой взгляд, в чем-то он усугубляет проблему, но комментарии я тут приводить не будут, а просто переведу (весьма вольно):

    Переключение на универсальный идентификатор (UUID) - Потенциальные проблемы плагинов/сервера


    Автор: EvilSeph Оригинальная статья

    С начала года Mojang уже сделала несколько намёков об их планах переключить аккаунты основанные на имени на использование универсальных уникальных идентификаторов (UUID), что даст возможность игрокам изменять своё имя. Поскольку, в настоящее время, в Minecraft'е всё подвязано на имена (баны, белый список, перечень операторов), плагины также используют имена (пермишены, собственность, приваты и защита), то эти изменения могут нанести урон как серверам так и работоспособности плагинов. На текущий момент времени, известно, что планирует "включить" систему смены имён после выхода Minecraft 1.8, выпуск которого ожидается в мае. Так что времени на подготовку остаётся не так уж и много.

    Что такое a UUID?
    Универсальный уникальный идентификатор (Universally Unique IDentifier) это достаточно длинный набор чисел в шестнадцатиричном представлении, применяемые в программировании для однозначной идентификации чего-либо. В Minecraft'е планируется использовать UUID для идентификации учетных записей игроков, которая будет связана с аккаунтом Mojang. Например, у Ночта UUID вот такой: "069a79f4-44e9-4726-a5be-fca90e38aaf5".

    Возможные проблемы на сервере
    До переключения на использования UUID имена игроков использовались практически везде где только можно в самом Майнкрафте (баны, белый список и т.д.) так и в плагинах использовались имена для хранения информации о пермишенах, приватах и т.д. Когда Mojang предоставит пользователям процедуру смены имени (а это будет, как уже говорилось, уже после 1.8) уже нельзя будет считать имя игрока чем-то незыблимым и хранить информацию опираясь на неё. Естественно для Майнкрафта, уже было объявлено, при апдейте будет учтены встроенные баны, белый список и т.д., однако для плагины необходимо будет переделать для использования UUID в целях определения пользователя.

    Для подготовки сервера к переключению на UUID, администратор потребуется проверить плагины и определить какие из них используют имена для идентификации игроков. Рекомендуем связаться с разработчиками этих плагинов, чтобы убедиться, что они готовы к переходу на использование UUID. Вот возможный перечень типов плагинов (он может оказаться гораздо обширнее), для которых потребуется доработка: пермишены, защиты регионов, защита мира, приват сундуков, разные виды собственности (города, фракции), телепорты, чат, экономики и плагины управления банами.

    Собственно, основной риск заключается в том, что сервер, который будет неготов к использованию UUID, получит возможные риски оффлайн-сервера. Учитывая, что имя игрока перестало быть постоянным, появляется вероятность того, что в какой-то момент времени кто-то сможет выбрать себе имя администратора и получить соответствующий доступ и возможности.

    К сведению разработчиков плагинов
    29 марта 2014 г. мы уже работаем в соответствии с планом миграции на UUID (см. коммиты: Bukkit commit, CraftBukkit commit), я решил использовать возможность Java на указание устаревшего кода в качестве инструмента для привлечения внимания разработчиков, чтобы быть уверенным, что все разработчики так или иначе узнают о возможных проблемах связанных с переходом на UUID. Эта мера идёт в дополнении к этой статье. Информацию приведенную здесь, не так-то просто было получить, в основном она собрана из множества твитов разработчиков Minecraft. Результатом мы имеем нечто, названное планом миграции, который в общем-то основна на догадках и предположения, которые могут оказаться далеки от истины в тот момент, когда система заработает.

    Итак, основные моменты, важные разработчикам:

    • Имя не будет однозначным уникальным идентификатором игрока.
    • Всё что касается определению игрока по имени отмечено как устаревшее, но они все работают, хотя возможно часть из "устаревших" методов в будущщем будет удалена. Подробнее читайте, ниже в Плане Миграцuи.
    • Любые данные, которые сохраняются для пользователя, должны опираться на UUID.
    • С версии Minecraft 1.7, a UUID игрока может быть получен методом Player.getUniqueId();
    • Метод Server.getOfflinePlayer(UUID) является, временным, неэффективны (по сути - хаком), котроый предоставлен для того, чтобы Вы могли реализовать свой собственный "план миграции"
    • Вам потребуется библиотека Mojang’s AccountsClient или evilmidget38's UUIDFetcher (рекомедуем) для конвертации имён в UUID. Вопрос о том, будет ли в баккит встроено собственное подобное решение пока открыт.
    Наш Текущий план миграции (справочно):
    Minecraft 1.7.5

    • Отметить устаревшими методы использующие имя для определения самого игрока, в целях уведомления разработчиков о грядущем переходе на UUID.
    • Добавить временный хак чтобы позволить реализовать "раннюю" поддержку UUID
      • Это позволит разработчикам планировать апдейт своих плагинов, однако НЕ для использования в релизах.
    Minecraft 1.7.6+

    • Выбор игрока по UUID будет самым эффективным методом (будет опирать на данные сохраненные на диске)
    • Выбор игрока по имени, соответственно, станет менее эффективным.
    Minecraft 1.8

    • Предупредительные отметки об устаревших методах будут удалены, если они не были удалены ранее в процессе перехода на UUID>
    Общая информация:

    • Аккаунт Mojang необходим, если Вы хотите сменить свое имя
    • Имя должны быть уникально, Вы не сможете выбрать имя, которое уже занято
    • Смена имён бесплатна, однако будут установлены какие-то ограничения, чтобы избежать злоупотреблений.
    • Если Вы ещё не переключились на аккаунт Mojang, сделайте это как можно скорее - чтобы избежать риска потерять собственное имя.
    • Возможность изменения имени будет запущена после обновления веб-сервисов приблизительно после выхода Minecraft 1.8
    • Если Вы сменили имя, то Ваше имя будет доступно для "захвата". Это не традиционные "локальные" имена, это глобальная система имён. Неизвестно будет ли какой-то льготный период или защита против отслеживания освободившихся имён
     
    ПриветОтЛайки, AlexGL, Pip и 2 другим нравится это.
  2. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Проекты с лаунчером это мало затронет.
     
  3. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Ну вот, не я один об этом беспокоюсь, но меня интересует ряд других вопросов, на которые пока ответ не могу получить:
    1. Пираты -- как им будет выдаваться UUID? Или пиратские клиенты будут работать все на одном UUID? Тогда большая часть систем, работающая на UUID будет не только не эффективна, но и бесполезна.
    2. Когда-нибудь CraftBukkit будет следовать за обновлениями? Будет ли выборка сущностей по UUID? Или стоит действительно заняться своим ядром, которое реализует все необходимые функции?
    Может есть что-то, что я упустил и есть другие вопросы?
    Хотя да, я всё ещё сижу на 1.5 из-за повышенной нестабильности более поздних и отставания версий в функционале от ванильки...
     
    BeYkeR, Den_Abr и musel70 нравится это.
  4. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Пичальбида. Они еще не написали PluginAPI (или ModAPI), а уже хотят сломать всю систему плагинов.
     
  5. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Не могу понять к чему суета?
    Ну потрясет и перестанет, делов-то, перейдут игроки и все.
    А вот с пиратами интереснее.
    Эх еслиб была возможность защитить игру... Убрать пиратов из онлайна
    Perfect *o*
     
  6. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Это "по-первой". Когда плагины перейдут на UUID, возникнет вопрос их эмуляции.

    Посмотрим, что будет представлять из себя оффлайн-игрок. В принципе, можно уже сейчас попытаться пристально посмотреть на последние пре-релизы 1.7.6. Там уже изменили протокол и UUID будет использоваться.

    Ну а как следовать оперативно? Если информация черпается в основном из твиттера ;) Как я понял, в этот раз должно быть всё более-менее оперативно. По крайней мере в девбилдах уже что-то касательно UUID добавляется. Я пока ещё не глядел, но раз добавляется, значит что-то будет :)

    Вы не понимаете, наши плагины — они за плагины не держат. Это так информационный мусор. У них все последние апдейты так или иначе касаются реализации PluginAPI. Вот они сейчас всё и ломают, чтобы потом не приходилось ломать плагины на своем API.
     
    Pip и ql_Nik_lp нравится это.
  7. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Тут всё зависит от того, как сервер будет получать этот UUID. Если через всем известный checkserver, то допилить слегка авторизацию и будет ок.
     
  8. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Наверное, именно так и будет.
     
  9. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Я про оперативность добавления стандартных комманд в крюфтбукит, по скорости добавления фич из 1.4.7... А если UUID будет копаться из клиента, то... Будет очень много самых различных казусов...
     
  10. Asmodai

    Asmodai Активный участник Пользователь

    Баллы:
    93
    У пиратов UUID либо через регистрацию с получением пароля, либо генерация на основе данных системы/железа. Других вариантов нет. Коллизии при такой длине пренебрежимо маловероятны.
     
  11. Автор темы
    fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Тут другой момент будет. Те кто использовал скины, выбирая имя чужого лицензионного игрока, лишатся этой возможности.
    Чёрт, это ж придется CameraObscura переписывать...
     
  12. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    UUID для пиратов генерятся тупым хэшированием ника при логине на сервер самим сервером.
    И между прочим уже достаточно давно, ещё с выхода версии 1.7.2.
    UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + this.i.getName()).getBytes(Charsets.UTF_8));

    Так что никаких проблем с плагинами у пиратских серверов не будет.
    Более того - сконвертировать все данные игрока из ника в UUID будет оооооооооочень легко.
    Худший метод который можно только выбрать это чтобы UUID генерился на клиенте, слава богу что моджанги не совсем идиоты.
     
    Последнее редактирование: 6 апр 2014
    stalef и fromgate нравится это.
  13. makssof

    makssof Старожил Девелопер Пользователь

    Баллы:
    103
    //Оффтоп
     
  14. MrAnanasik

    MrAnanasik Старожил Пользователь

    Баллы:
    153
    Если запретят пиратам, то онлайн на серверах будет около 100 человек точно(я говорю о серверах с большим онлайном(пиратских)).
     
  15. xDiP

    xDiP Старожил Девелопер Переводчик Пользователь

    Баллы:
    123
    Значит для пиратских серверов это ничем не грозит?
    Я так понял что с выключенным online-mode UUID будет генерироваться на стороне сервера независимо от лицензии игрока. Получается если изменить ник на Моянке и пойти продолжить играть на пиратском сервере то все равно его данные останутся на старом нике...
    Если это так, то для 99% славянских серверов будет пофиг на это обновление.
     
  16. dark32

    dark32 А где твой ТЗ? Пользователь

    Баллы:
    123
    Хуже незнания, только томительное ожидание.
    Быстрей бы это уже всё доделали, а то переписывать надо, а на что - не совсем понятно.
     
    ql_Nik_lp нравится это.
  17. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Да, оффлайн сервера практически не заметят это обновление. И да независимо от наличия у игроа лицензии айдишники будут генериться на сервере в оффлайн моде.
    Единственное в чём может быть проблема так это в том что некоторые плагины могут решить попробовать конвертануть к UUID пытаясь резолвить его с сервера моджнгов не проверяя режим сервера. Но плагинов хрянщих данные не так много (Плагин приватов, плагин прав, плагин экономики, домов, варпов, ну и всё собственно.), поэтому в крайнем случае написать автоконвертер не составит труда.
     
  18. Requiem

    Requiem Активный участник Пользователь

    Баллы:
    68
    Кто знает как по UUID узнать ник ирока? И наоборот - как из ника узнать UUID?
     
  19. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
  20. Requiem

    Requiem Активный участник Пользователь

    Баллы:
    68

Поделиться этой страницей