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

Использование craftbukkit в качестве библиотеки потребует перекомпиляции проекта после обновлений

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

?

Используете ли вы классы из пакетов: net.minecraft.server и org.bukkit.craftbukkit?

Голосование закрыто 21 дек 2012.
  1. Да, всегда

    16,7%
  2. Да, но редко

    26,7%
  3. Нет, только Bukkit API

    23,3%
  4. Нет, а что это?

    33,3%
  1. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Для разработчиков и так будет огромным гемором выпускать плагины каждый раз под новые версии CraftBukkit. А если брать в расчет спигот... Если кто-то пишет под CB, dряд ли он станет заботиться еще и о спиготе. Тут придется выбирать, или спигот, или cb, или выпускать по отдельной версии для каждого типа сервера, или же извращаться с использованием рефлексий (ох уж это и нудно (T__T )... но вполне реально)
     
    fromgate нравится это.
  2. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ну spigot интересен будет только если он будет работать как с новыми плагинами так и старыми. И интересен будет именно в качестве платформы для сервера. Но никак не с точки зрения разработки плагина: если я выложу плагин и напишу только для Spigot - меня не поймут ;)
     
    ITrAnEI и DPOH-VAR нравится это.
  3. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Вряд ли это случится. Не знаю способа реализовать поддержку плагинов для CB со стороны spigot (разве что можно запихать все версии классов cb в один jar - но это перебор).
    fromgate
    Как успехи c подтверждением на dev.bukkit.org?
     
    Stalkerdeni971 нравится это.
  4. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    DPOH-VAR, ждём-с ;) Сегодня или завтра будет MonsterFix - там одна небольшая функция. Она в принципе и раньше была частично с рефлексиями (нужно было добраться до "приватного" поля). Сейчас же я её вынес в отдельный класс (на развод, вдруг ещё что-то потребуется). В общем посмотрим к чему это приведет ;)
     
    ITrAnEI нравится это.
  5. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ну md_5 такой товарищ. Я вот про видео на картах думал, но даже не помыслил, что кто-то в здравом уме будет такое реализовывать. А он недавно видео выкладывал ;)
     
    Оригинало_о и ITrAnEI нравится это.
  6. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    @DPOH-VAR, WeatherMan 0.4.8 нормально приняли. Так что метод - "допустимый" ;)
     
    ITrAnEI нравится это.
  7. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Неужели нас ждет craftbukkit-1.4.7?
    http://mojang.com/2012/12/minecraft-1-4-7-pre-release/

    Изменения в Minecraft маленькие, буккитовцы догадаются, что в очередной раз ломать все плагины не стоит :(
     
    ITrAnEI нравится это.
  8. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Наконец-то. Прочитал 2 очень не плохих статьи по отражениям и теперь мне не страшны такие измывательства над bukkit'ом. Правда одно НО: исходник перевода книжек увеличился в 4 раз ^^
     
  9. Автор темы
    fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Ission,
    Дай ссылки на статьи, пожалуйста. Почитаю с удовольствием. У меня сейчас ещё одна задача стоит, там как раз могут отражения потребоваться ;)
    Кстати, разве книжного API BookMeta не достаточно?

    Ведь ItemMeta и его наследники (BookMeta, EnchantmentStorageMeta, FireworkEffectMeta, FireworkMeta, LeatherArmorMeta, MapMeta, PotionMeta, Repairable, SkullMeta) как раз и нужны для работы с NBT в составе соответствующими предметами.

    Правда они ограничены :(
    Взять тот же MapMeta - там нет доступа к изображению сохраненному в виде NBT-тага. Т.е. все равно через craftbukkit лезть, если потребуется. С другой стороны, API для нанесения изображения на карту есть. Чего ещё нужно ;)
    А вот с книгами, по моему все нормально: setTitle, setAuthor, setPages. Чего ещё для счастья нужно? ;)
     
    ITrAnEI нравится это.
  10. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Часть 1 и Часть 2 обе части - PDF'очки.
    А вот теперь с книжками: В старых версиях API ещё не появилось, поэтому нужно пользоваться старыми классами. А в новых версиях уже появилось API, при этом у CraftItemStack убрали очень нужную функцию: gatHandler() и на прямую к нужным частям этим кодом уже не обратиться, поэтому нужно использовать новое API. Но при использовании нового API, старые ваерсии начинают ругаться, что нет такого файла для импорта и приходится изворачиваться: для новых бверсий рефлексии для подгрузки bukkit API, а для старых рефлексии для подгрузки старых классов. При этом на части версий, где уже есть деление по версиям, но нет API для книг, всё равно не будет работать :(
     
    fromgate нравится это.
  11. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Сначала пытаемся через рефлексии вызвать getHandle();
    в блоке catch (если метода нет) пытаемся взять значение поля "handle"
    не забываем про setAccessible(true)
    Таким образом будет совместимость со всеми версиями. Но количество кода - в 2 раза больше)
    NBTTagCompound в обертке XNBTBase у предметов:
    Код:
        public XNBTBase getRootBase() {
            Object is = null;
            try {
                is = callMethod(item, "getHandle", noInput);
            } catch (Exception ignored) {
            }
            if (is == null) {
                is = getShell(VersionFix.FixInterface.class, item).getProxyField("handle");
            }
            return getShell(XNBTBase.class, callMethod(is, "getTag", noInput));
        }
     
    slavik123123123 и fromgate нравится это.
  12. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Остносительно того, что у меня сейчас, количество кода увеличится незначительно. Да, я не учёл того, что getHandle() возвращает закрытую переменную... К тому же я уже реализовал через другое место, близкое к тому, что сделали bukkit-овцы. :)
     
    fromgate нравится это.

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