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

[Решено] Фикс WG для оффлайн мода. ( (не) Ковыряем исходники)

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

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

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

    Баллы:
    96
    В общем, есть проблемы с удалением и добавлением оффлайн игроков в приваты.
    Где-то видел, что нужно заменить UUID_AND_NAME на NAME_ONLY где-то в исходниках.
    Поиском нотпада нашел это:
    Снимок экрана (331).png
    Собсно, вопрос, в каких местах это стоит сделать, чтобы всё не поломать? Или нужно сделать что-то другое?
    Сервер на 1.13.2, последний билд WG.
    Решение найдёте, если немного полистаете комменты))
     
    Последнее редактирование: 8 май 2019
  2. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Проблем не будет, если не будешь удалять dat файлы игроков с основной карты.
    Заменяешь только в классах MembersCommands и RegionCommands, это создающие, в других не трогаешь, резолверы берут и UUID и имя по возможности. Я не понял, какую ты версию используешь, может даже поновее, но в моей 7.0.0 старом билде 1744 вообще нет такого как UUID_AND_NAME, было UUID_ONLY если без флага -n в команде записать.
     
  3. alexandrage

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

    Баллы:
    173
    +1
     
  4. Автор темы
    HauserGrim

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

    Баллы:
    96
    Как вариант, попытался сделать чёт с WGFixer'ом от InterVi, но, наверно, опять дичь сотворил.
    https://github.com/HauserGrim/wgfixer/commit/260b1229ff9e2ba7b4d7669b2b91c6d95fc91269
    Загрузил оригинал, а потом изменённый файл.
    Не надо лезть, если даже джаву толком не учил и надоедать нормальным людям, наверно...
     
  5. Автор темы
    HauserGrim

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

    Баллы:
    96
    Не совсем врубился, нужно, чтобы была своя база ников и юидов?
    Можно сделать просто, чтобы брался оффлайн юид? Или это и имелось ввиду?
    Ну так или иначе, у меня есть ещё пара идей, попробую и, если не получится, забью на это до лучших времён.
     
  6. kungermu

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

    Баллы:
    66
    Имя в Minecraft:
    kungermu
    Он сказал в том смысле, что типо - если подменить ссылку, ююидов не будет
     
  7. Автор темы
    HauserGrim

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

    Баллы:
    96
    Мм
     
  8. Автор темы
    HauserGrim

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

    Баллы:
    96
    Я просто хз где менять...
     
  9. alexandrage

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

    Баллы:
    173
    Еслиб все было так просто, там же ники все в ловерчаче по урл идут). А вообще тема рабочая со своим url, только безлаунчерным придется хранить базу ников с уидами где то все равно. Или дергать из базы essentials.
     
  10. Автор темы
    HauserGrim

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

    Баллы:
    96
  11. alexandrage

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

    Баллы:
    173
    Да это все понятно. Ток оно не знает в каком регистре был ник. Офлайн уиды не генерятся по ловерчаче же. Это кстати 1 из вариантов, пофиксить генератор офлайн уидов на ловерчачу D.

    Тогда мы просто даем такую заглушку в плагине и все
    Код:
        private static UUID uuid(String player) {
            return UUID.nameUUIDFromBytes(("OfflinePlayer:" + player).getBytes(Charset.forName("UTF-8")));
        }
     
    Последнее редактирование: 31 мар 2019
  12. MurlikMurlik

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

    Баллы:
    96
    Проще написать перехватчик команд /rg addowner/remveowner/addmember/removemember
    И переопределить их действия. Благо у wg есть апи который позволит добавить или удалить игрока в заданном рг.
    А для получения uuid игрока даже в оффлайне можно обратиться к Essentials, он их всех на диске хранит, проблем быть не должно.
     
  13. Автор темы
    HauserGrim

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

    Баллы:
    96
    Что-то похожее есть в wgfixer'е.
    Имелось ввиду пихнуть это в wg или отдельным плагином?
     
  14. Автор темы
    HauserGrim

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

    Баллы:
    96
    Кто тут знает как с ней обращаться? xD Даже если кто обьяснить попытается - не пойму, знаний мало. Крайне.
     
  15. kungermu

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

    Баллы:
    66
    Имя в Minecraft:
    kungermu
    На гитхабе разработчика вроде лежал редми
     
  16. MurlikMurlik

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

    Баллы:
    96
    Это всего лишь кеш, что значит он не долговечный.
    Самый эффективный способ, это получать uuid через Essentials. У него есть карта uuid=ник (я имел ввиду файл "usermap.csv") и есть папка в котором файлы игроков uuid, в которых сетхомы, юникс времена и прочее.

    Я уже писал своеобразный перехватчик, если игрок офлайн, то тупо по api Essentials получаю uuid юзера по нику. Там есть метод который вернет название файла в папке с uuid, то есть то что нужно. Если же его там нет, значит игрок никогда не был на сервере и париться насчет этого не стоит.
     
  17. MurlikMurlik

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

    Баллы:
    96
    Код:
    User essUser = getEssentials().getUser("playerName");
    if (essUser != null) {
      UUID plaUUID = essUser.getConfigUUID();
      //А этот uuid уже используем в методах для WorldGuard.
    }
    else {
      //Игрока никогда не было на сервере
    }
    
     
  18. MurlikMurlik

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

    Баллы:
    96
    Essentials сложно назвать сторонним плагином, он очень сильно распространен, его только ленивые не ставят на сервер. Велосипед зато писать не надо будет.
     
  19. Автор темы
    HauserGrim

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

    Баллы:
    96
    На самом деле, самый простой вариант, ещё можно убрать "name:" и вообще идеально, если не считать что будут только маленькие буквы в /rg info, ещё это не поставишь на сервер уже работающий некоторое время сервер, ибо удалить игроков кроме как через -a не получится, а ещё нельзя будет удалить игрока, создавшего приват.
    А вообще, забил я на это дело, пойду оставлю запрос в запросах на разработку
     
    Последнее редактирование: 2 апр 2019
  20. Автор темы
    HauserGrim

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

    Баллы:
    96
    Вчера вечером меня осенило и я сел допиливать плагин (WGFixer). Почему-то старые куски кода (на которые, по логике, не должна влиять версия wg или сервера) не очень хорошо работали и пришлось доделывать. Путём проб и ошибок я добился результата, а ещё добавил возможность добавления оффлайн игроков. Привязывался к ess'у как и писали выше (не видел ещё серверов с wg без ess'a)
    Если кто-то посмотрит и скажет про косяки, буду благодарен
    Код: https://pastebin.com/pXdDUXvW
    (наверно, удобнее было бы залить на гитхаб или типа того, может как-нибудь потом)
     

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