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. Быстрая раскрутка сервера Minecraft
  3. LuckyZeeRo

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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