Spigot Plugin

DungeonCompass

плагин на на майнкрафт Версия: Purpur 1.21.11 не надо создавать для 1.21.1 версия 1.21.11 уже есть что должен делать плагин плагин добавляет новый функционал компасу .Он должен показывать ближайшую структуру данжа из local structure . Как должно работать игрок ерет в руку компас и над полоской опыта появляется что то типа счетчика который показывает расстояния до ближайший структуре .

src/main/java/eu/codexe/dungeoncompass/DungeonCompassPlugin.java
package eu.codexe.dungeoncompass;

import eu.codexe.dungeoncompass.commands.DungeonCompassCommand;
import eu.codexe.dungeoncompass.listeners.CompassListener;
import eu.codexe.dungeoncompass.managers.MessageManager;
import eu.codexe.dungeoncompass.managers.PluginConfig;
import eu.codexe.dungeoncompass.managers.StructureManager;
import eu.codexe.dungeoncompass.storage.MysqlStorage;
import eu.codexe.dungeoncompass.storage.SqliteStorage;
import eu.codexe.dungeoncompass.storage.StorageManager;
import eu.codexe.dungeoncompass.storage.YamlStorage;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

public final class DungeonCompassPlugin extends JavaPlugin {
    private PluginConfig pluginConfig;
    private MessageManager messageManager;
    private StorageManager storageManager;
    private StructureManager structureManager;

    @Override
    public void onEnable() {
        saveDefaultConfig();
        saveResourceIfMissing("messages.yml");

        pluginConfig = new PluginConfig(this);
        messageManager = new MessageManager(this);
        storageManager = createStorage();
        structureManager = new StructureManager(this, storageManager, pluginConfig, messageManager);

        try {
            storageManager.initialize();
        } catch (Exception exception) {
            getLogger().severe("Не удалось открыть хранилище: " + exception.getMessage());
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        CompassListener listener = new CompassListener(this, structureManager, pluginConfig, messageManager);
        getServer().getPluginManager().registerEvents(listener, this);

        PluginCommand command = getCommand("dungeoncompass");
        if (command != null) {
            DungeonCompassCommand executor = new DungeonCompassCommand(
                    this, structureManager, pluginConfig, messageManager);
            command.setExecutor(executor);
            command.setTabCompleter(executor);
        }

        listener.start();
        getLogger().info("DungeonCompass включён.");
    }

    @Override
    public void onDisable() {
        if (storageManager != null) {
            try {
                storageManager.close();
            } catch (Exception exception) {
                getLogger().warning("Ошибка закрытия хранилища: " + exception.getMessage());