Как переопределить классы в каком-либо API, изменив таким образом их поведение?
у меня есть плагин для игры на Java - некий jar файл, который запускается вместе с этой игрой. Заметил, что этот плагин сильно перегружает систему и имеет некоторые недостатки. Моя цель - понять как и научиться изменять поведение одного API посредством другого. Я собираюсь написать свой плагин, в котором каким-то образом должен переопределить логику классов из нужного мне плагина.
Что мы имеем?
public class Plugin extends JavaPlugin {
private static Plugin instance;
public static Plugin getInstance() {
return instance;
}
public void onEnable() {
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "[noVoid] " + ChatColor.GRAY + "Plugin enabled!");
instance = this;
Bukkit.getPluginManager().registerEvents(new noVoidListener(), this);
Bukkit.getPluginManager().registerEvents(new EntityEvents(), this);
getCommand("fly").setExecutor(new FlyExecutor());
}
public void onDisable() {
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_RED + "[noVoid] " + ChatColor.GRAY + "Plugin disabled!");
}
В этом классе начинается работа моего проекта при запуске игры. Здесь регистрируются все что только можно: события, команды и т.д.
В том API я хочу изменить поведение некоторого события. Для обработки событий в игре есть соответствующие смыслу события названия. (Например: PlayerJoinEvent - событие входа игрока.)
public class EntityEvents implements Listener{
@EventHandler(priority = EventPriority.HIGHEST)
public void onDamageEntityByEntity(EntityDamageByEntityEvent event) {
new GameListener(new GameHandler(), false){
@Override
@EventHandler
public void onDamageEntityByEntity(EntityDamageByEntityEvent event) {
}
}
}
Выше я создал класс-обработчик событий, в нем сделал метод обработки нужного мне события, в методе создал экземпляр класса, логику которого я хочу поменять и изменил(но не вставил чтобы места много не занимало). Но когда я захожу в игру, нужный мне плагин обрабатывает событие по своему, как было всегда. А мой плагин никак не изменил логику этого класса.
Что мне нужно сделать, чтобы изменить логику класса из своего проекта?