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

Помогите Как сделать поддержку несколькими версиями? (R1, R2, R3)

Тема в разделе "Разработка плагинов для новичков", создана пользователем chief, 19 июл 2016.

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

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

    Баллы:
    76
    Толкового объяснения в гугле не нашел. Надеюсь, вы мне сможете помочь.
    Писавши плагин понял, что мне придется его компилировать для каждой версии отдельно
    Плагин импортирует класс org.bukkit.craftbukkit.v1_10_R1. и меня это настораживает, потому что когда выйдет R2 то мой плагин просто перестанет работать.
    Как сделать, чтобы плагин имел поддержку всех возможных последующих версий craftbukkit.v*_*_ R* ?
     
  2. Хостинг MineCraft
    <
  3. Dymeth

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

    Баллы:
    76
    Рефлексией получай нужный класс по имени, дальше делай с ним что угодно.
     
    Последнее редактирование: 19 июл 2016
  4. Roma1020

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

    Баллы:
    68
    У меня есть собственный вопрос по этой теме. Есть ли возможность оживить старые плагины и моды? а то я тут сижу уже 3 день и все не как не могу въехать в тему что да как сейчас стало с серверами и плагинами...
     
  5. Dymeth

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

    Баллы:
    76
    Ручками-ручками. Ну, если плагины не публичные, конечно.
    В ином случае меняешь библиотеку-ядро на нужную версию, заменяешь импорты и смотришь всякие NMSы - наличие нужных методов, полей и вообще всего того, что используется в плагине. При желании можешь переделать всё на рефлексию. Однако учти, что это не даёт стопроцентной гарантии работоспособности на всех версиях. К тому же сёрфить сорцы NMS будет уже не так удобно...
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Никогда, не переживай.
     
  7. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Ещё вариант проект компилировать модулями (в терминологии maven-а), где есть один модуль главный, и несколько модулей, реализующих нужный код для разных версий (каждый модуль имеет ядро своей версии как подключенную библиотеку). Код верхнего уровня выберет подходящий модуль, если найдёт таковой.
    Но вообще, по возможности, всегда лучше использовать только API, без внутрянки.
     
  8. Dymeth

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

    Баллы:
    76
    Почему, если не секрет?
     
  9. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Потому что API призван быть стабильным на протяжении многих версий, а внутрянка постоянно меняется.
     
  10. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    +1 Нужно избегать использование крафтбанки.
     
  11. Dymeth

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

    Баллы:
    76
    Выполнение в конечном итоге производится ядром же. О какой стабильности речь? Что-то я не шарю...
     
  12. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Само апи не менятся, а крафтбанка меняется.[DOUBLEPOST=1469016209,1469016177][/DOUBLEPOST]Почему ее и вынесли в пакет с версией, чтоб задавить быдлогодеров.
     
  13. Dymeth

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

    Баллы:
    76
    Всё-равно не понял. Смысл в том, чтобы не использовать возможности самого ядра? Ну, классы, методы и прочее.
    Так-то названия совпадают с айпийными...
    Вообще я всегда Спигот использую, даже не знаю, существует ли отдельно АПИ, поскольку проблем не возникало. Либо я вообще не понял, о чём речь.
     
  14. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Смысл в том, что API — объявление того, что должен делать код, а не как. А то, как он работает внутри — никто никому не объясняет, не гарантирует, и это может быть изменено вообще в любой момент, даже если у разработчика просто почесалась пятка.
     
  15. Dymeth

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

    Баллы:
    76
    Это-то понятно, но какое преимущество использования API? Не наткнуться на функционал, который выпилят/изменят? Как по мне, так удобней иметь возможность просматривать декомпил исходников... Ну, чтобы понимать, как поведёт себя код на данной конкретной версии ядра. Возможно дело в том, что я крайне редко пишу не для себя?
     
  16. MaрШутЧик

    MaрШутЧик Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    serega100
    ЗАЧЕМ ?????Все старые плагины идут к новым версиям!
     
  17. Автор темы
    chief

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

    Баллы:
    76
    :cry:
    Мне тебя не жаль :creeper:
     

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