Получение плагина в моде

Версия Minecraft
1.7.10
1,015
9
102
Как получить объект конкретного плагина на серверной стороне из любой точки кода? При том, что я знаю имя и класс плагина. Импорты бакита и плагина присутствуют
 

Icosider

Kotliner
Администратор
3,603
99
664
Как получить объект конкретного плагина на серверной стороне из любой точки кода? При том, что я знаю имя и класс плагина. Импорты бакита и плагина присутствуют
Как вариант, через class
 
1,111
47
420
Хз, можешь попробовать Bukkit.getPluginManager().getPlugin(name).
Ну а вообще обычно у хороших плагинов есть API, с которым можно спокойно работать.
Это серьезно сработало? Там же разные класс лодеры...
 
1,111
47
420
Ладно я тогда напишухаю правильный ответ))
Вообщем Bukkit и FML используют разные класс лодеры. Чтоб ты понимал Foo(загруженный Bukkit).class != Foo(загруженный FML).class.
То есть если я сделаю поле классу типа такого public static final bar = Math.random(); и загружу этот класс одним и другим лодером, значения будут отличаться(9(
Это пожалуй главная проблема)) Поэтому остается только рефлекшеном. Ни в коем случае не подгружай либу баккита в мод, т.к. когда она попадет в контекст, метод Class.forName вернет класс подгруженый форджем.

P.S. Так как рефлекшен это медленно и не удобно у меня уже довольно давно появилась навязчивая идея сделать класс который будет подгружен баккит лодером Сlass.forName("some.bukkit.Class").getClassLoader() и через него взаимодействовать с баккитом, но так как я это еще не делал советовать не могу))
 
1,111
47
420
Ну допустим ивент. Во-первых мне интересно куда ты его постить будешь, а во-вторых это что за способ получения прав игрока через ивент. Страх какой то.
Плагин-прослойка. Слово ты конечно умное придумал, но я не знаю что это)) Объясни
 
Сверху