- Баллы
- 173
- Имя в Minecraft
- fromgate
Добрый день!
После последних обновлений Bukkit API прослеживается неприятная тенденция. Некоторые функции в BukkitAPI внезапно изменяют типы данных с которыми они работают, сохраняя при этом свое название.
Честно говоря, я не понимаю, почему разработчики craftbukkit так легко вносят изменения в API. Ведь одно из назначений API - это какая-то гарантия того, что плагин написанный без обращения к внутреннему коду сервера будет работать на множестве версий.
В общем сейчас ситуация такова, что плагин скомпилированный под 1.7.2 не будет работать под 1.5.2.
В первую очередь это связано с переходом к использованию double вместо int для представления едениц измерения здоровья, урона и т.п.
С этим я готов был мириться, но когда в пределах одной версии (1.7.х) пошли дальнейшие изменения API (и у меня плагин скомпилированный под 1.7.4 не заработал под 1.7.2 — причем все было на Bukkit API), то я решил, что нужно что-то делать.
В общем, у меня в результате получился небольшой класс, который я использовал в плагине ReActions для обхода таких нюансов:
https://github.com/fromgate/ReActio...te/reactions/util/BukkitCompatibilityFix.java
Работает он используя рефлексии и не претендует на полноту - писался конкретно под ReActions. Если у Вас вылезет вопрос несовместимости в другом месте, то думаю его тоже можно будет решить.
Если же у Вас есть идеи как решить вопрос несовместимости API более универсально и вообще как-то по другому, напишите - я буду благодарен
P.S. В приведенном классе есть вызова метода logOnce из ReActions — смело убирайте, это запись ошибки в лог.
После последних обновлений Bukkit API прослеживается неприятная тенденция. Некоторые функции в BukkitAPI внезапно изменяют типы данных с которыми они работают, сохраняя при этом свое название.
Честно говоря, я не понимаю, почему разработчики craftbukkit так легко вносят изменения в API. Ведь одно из назначений API - это какая-то гарантия того, что плагин написанный без обращения к внутреннему коду сервера будет работать на множестве версий.
В общем сейчас ситуация такова, что плагин скомпилированный под 1.7.2 не будет работать под 1.5.2.
В первую очередь это связано с переходом к использованию double вместо int для представления едениц измерения здоровья, урона и т.п.
С этим я готов был мириться, но когда в пределах одной версии (1.7.х) пошли дальнейшие изменения API (и у меня плагин скомпилированный под 1.7.4 не заработал под 1.7.2 — причем все было на Bukkit API), то я решил, что нужно что-то делать.
В общем, у меня в результате получился небольшой класс, который я использовал в плагине ReActions для обхода таких нюансов:
https://github.com/fromgate/ReActio...te/reactions/util/BukkitCompatibilityFix.java
Работает он используя рефлексии и не претендует на полноту - писался конкретно под ReActions. Если у Вас вылезет вопрос несовместимости в другом месте, то думаю его тоже можно будет решить.
Если же у Вас есть идеи как решить вопрос несовместимости API более универсально и вообще как-то по другому, напишите - я буду благодарен

P.S. В приведенном классе есть вызова метода logOnce из ReActions — смело убирайте, это запись ошибки в лог.