Как переопределить классы в каком-либо 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) {
              }
    }
}

Выше я создал класс-обработчик событий, в нем сделал метод обработки нужного мне события, в методе создал экземпляр класса, логику которого я хочу поменять и изменил(но не вставил чтобы места много не занимало). Но когда я захожу в игру, нужный мне плагин обрабатывает событие по своему, как было всегда. А мой плагин никак не изменил логику этого класса.

Что мне нужно сделать, чтобы изменить логику класса из своего проекта?


Ответы (0 шт):