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

Помогите Как сделать плагин пригодным к перезагрузке

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

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

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

    Баллы:
    76
    Есть один крупный плагин на спиготе. Я его форкнул, добавил к аргументам его команды нужный мне аргумент. При его использовании сервер получает МОЙ инстанс плагина и делает определенные вещи.
    Но есть одна неувязочка... Если перезагрузить мой плагин плагманом (а первый со спигота не трогать), тогда при написании команды вылетает ошибка...

    Код:
    class ru.rezero.some.Main cannot be cast to class ru.rezero.some.Main (ru.rezero.some.Main is in unnamed module of loader 'test.jar' @2309886c; ru.rezero.some.Main is in unnamed module of loader 'test.jar' @585b8b83)

    Вот я и думаю: как так? Классы должны быть одинаковы, учитывая что при обычной загрузке сервера (без перезагрузки моего плагина) все работает как часы. Скорее всего, ответ кроется где-то в загрузчиках классов... Я предполагаю, что при старте сервера все плагины загружаются и хранятся в памяти, но когда плагман выгружает какой-то плагин и загружает по-новой, в памяти сервера хранится уже другой экземпляр моего плагина

    Сам вопрос: что можно придумать, чтобы при перезагрузке моего плагина не отлетала команда из спиготовского плагина?
    Дополнительный вопрос: если вам не впадлу, объясните, пожалуйста, прав ли я со своей догадкой или нет, или как вообще это работает на самом деле и в чем может быть настоящая причина?

    Код:
    Main myPlugin = (Main) Bukkit.getPluginManager().getPlugin("MyPlugin");
     
  2. Sneyzi

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

    Баллы:
    76
    Перезагружать оба плагина?
    У тебя в двух плагинах одинаковый путь к главному класу?
     
  3. Автор темы
    reZero

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

    Баллы:
    76
    Не вариант. Спиготовский плагин это не терпит
    Конечно. Иначе бы при запуске сервера ничего не работало
     
  4. Sneyzi

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

    Баллы:
    76
    так нельзя, переименуй и будет тебе счастье
     
  5. Автор темы
    reZero

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

    Баллы:
    76
    Реализовал идею по-другому. закрыто.
     
Статус темы:
Закрыта.

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