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

В разработке NMS на более чем одну версию...

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

Статус темы:
Закрыта.
  1. Автор темы
    Namer_PRO

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

    Баллы:
    76
    Имя в Minecraft:
    Namer_PRO
    Написал плагин на таб лист. Работал с пакетами и все хорошо, НО... работает только на одной версии :( (а я хочу, чтобы на 1.8.x - 1.13.x + (даже не пишите, что многовато я хочу))

    Как это поправить?

    Слышал, что это делал кто-то прям на все (1.8 - 1.13) версии. Вроде получали nms версию сервера (Bukkit.getServer().getClass().getPackage().getName().substring(23)) и брали из какой-то онлайн директории что-то. Но вот как такое реализовать я не знаю.

    Комментарии типа "Это невозможно" не писать! 100% уверен, что реализовать такое как-то можно.

    Заранее спасибо :)

    P.s: Такое даже не предлагайте: http://rubukkit.org/threads/perevod-nms-na-raznyx-versijax-bez-refleksii.155914/ (и оригинал на спиготе тоже https://www.spigotmc.org/wiki/nms-on-different-versions-without-reflection/)
     
  2. Автор темы
    Namer_PRO

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

    Баллы:
    76
    Имя в Minecraft:
    Namer_PRO
    Помощь приветствуется... (очень :good:)
     
  3. DeadBot

    DeadBot Активный участник

    Баллы:
    61
    Имя в Minecraft:
    DeadBoy
    ViaVersion тебе в помощь.
     
  4. alexandrage

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

    Баллы:
    173
    protocollib.
     
  5. Автор темы
    Namer_PRO

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

    Баллы:
    76
    Имя в Minecraft:
    Namer_PRO
    Я хочу, чтобы плагин поддерживал версии 1.8-1.13, а не только на моем сервере все работало. Или там апи какое есть?

    Это я знаю, но я не хочу, чтобы мой плагин зависел от него.
     
  6. Автор темы
    Namer_PRO

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

    Баллы:
    76
    Имя в Minecraft:
    Namer_PRO
    Или все-таки советуете не париться и написать кучу классов под каждую версию?
    Мне надо с 1.8 по 1.13, т.е. это:
    1. 1_8_R1
    2. 1_8_R2
    3. 1_8_R3
    4. 1_9_R1
    5. 1_9_R2
    6. 1_10_R1
    7. 1_11_R1
    8. 1_12_R1
    9. 1_13_R1
    10. 1_13_R2
    Целых 10 классов :(
     
  7. alexandrage

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

    Баллы:
    173
    Или делать как люди на protocollib. Сам себе жизнь усложняешь. Ты так на каждый плагин с пакетами будешь по 90 классов мутить?
     
  8. iD3LSY

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

    Баллы:
    76
    ProtocolLib — реально, для людей.

    Если не хочешь зависеть от него, то можешь через рефлексию все сделать. Для удобства, советую написать свою маленькую библиотеку, т.к. каждый раз переписывать одно и тоже это бред.
     
  9. alexandrage

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

    Баллы:
    173
    Ага. Пусть лучше в таймингах висит тормозная рефлексия, чем юзать ProtocolLib :D.
     
  10. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ниче, что у ProtocolLib тож большой оверхед? Он подойдет разве что только для паб плагинов.
     
  11. iD3LSY

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

    Баллы:
    76
    Еще, к слову, можно почитать про MethodHandle.

    Ну, это его выбор))
     
  12. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Типо в протокол либе не юзается рефлексия?)
     
  13. Sonicxd2

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

    Баллы:
    76
    Почему народ нынче настолько ленив?( Настолько сложно сделать простенький генератор кода и сделать всего один класс?!
     
  14. alexandrage

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

    Баллы:
    173
    Обоснуй? Там прокси классы на cglib. Если нет слушателей пакетов, для сервера protocollib вообще прозрачен.
     
  15. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Ну слушатели пакетов и есть самый большой оверхед протоколлиба.
    К тому же прокси классы через обычную рефлексию скорее всего делают вызовы.
     
  16. alexandrage

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

    Баллы:
    173
    Не знаю где ты там свой оверхед увидел. У меня модовый серв с оребфускатором на protocollib вообще прозрачно работал, никаких отставаний. 150 человек получали кашу из руды вместо камней и никто не пожаловался.
     
  17. Автор темы
    Namer_PRO

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

    Баллы:
    76
    Имя в Minecraft:
    Namer_PRO
    А можно по подробнее...
    Это типо if(версия nms такая-то) {то то-то} else { то-то }... ?
    И так в 1ом классе или я не догоняю)
     
  18. Автор темы
    Namer_PRO

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

    Баллы:
    76
    Имя в Minecraft:
    Namer_PRO
    А так не нагляднее получится?
    И потом, а что если в новой версии будет что-то крутое, что бы я хотел добавить в плагин. Тогда в старых классах я ничего не трогаю, а в новом пишу код?
     
  19. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Немножко о лени:
    [​IMG]
    По идее ты должен поддерживать только крайние версии мажорных, то есть с 1.8 по 1.13:
    - 1.8.8
    - 1.12.2
    - 1.13.2
    Все, остальные идут в ж... (желаемое место).
     
  20. Nikolai_Faint

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

    Баллы:
    96
    Жуть какая. Для чего эти классы?
     
Статус темы:
Закрыта.

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