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

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

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

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

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

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

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

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

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

    Баллы:
    76
    Заменить ссылку на свою и будет всё работать как надо. WG за UUID обращается к API Mojang.
     
  5. alexandrage

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

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

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

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

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

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

    kungermu Участник Пользователь

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

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

    Баллы:
    96
    Имя в Minecraft:
    HauserGrim
    Мм
     
  10. Автор темы
    HauserGrim

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

    Баллы:
    96
    Имя в Minecraft:
    HauserGrim
    Я просто хз где менять...
     
  11. alexandrage

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

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

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

    Баллы:
    96
    Имя в Minecraft:
    HauserGrim
  13. alexandrage

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

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

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

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

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

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

    Баллы:
    76
    У WG своя база uuid'ов sqlite есть.
     
  16. Автор темы
    HauserGrim

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

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

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

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

    kungermu Участник Пользователь

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

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

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

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

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

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

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

    Баллы:
    76
    Зачем цепляться за сторонний плагин?
    Кеш можно переделать чтобы он был постоянным. Добавлять туда игроков в момент входа в на сервер.
     

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