Spigot Plugin

OctoEnchants

название плагина OctoEnchants сделай плагин зачарование около 120 зачарований и сделай к ним всем описание, как они работают, для какого предмета и какие чары не совместимы, и сделай, чтобы можно было зачаровать на чародейский стол, сделай уникальные зачарования и чтобы работал на любой версии майнкрафта: первое зачарование — автонаводка стрел, чтобы всегда попадала по цели с большим радиусом. например зачарование на броню,меч,карту,топор и т.д и чтоб можно взять из гм1 и командой и только для Админа и опературу сервера

src/main/java/eu/codexe/octoenchants/OctoEnchantsPlugin.java
package eu.codexe.octoenchants;

import eu.codexe.octoenchants.commands.OctoEnchantsCommand;
import eu.codexe.octoenchants.gui.EnchantmentBooksMenu;
import eu.codexe.octoenchants.listeners.EnchantmentTableListener;
import eu.codexe.octoenchants.listeners.GameplayListener;
import eu.codexe.octoenchants.managers.EnchantmentManager;
import eu.codexe.octoenchants.utils.MessageUtil;
import org.bukkit.plugin.java.JavaPlugin;

public class OctoEnchantsPlugin extends JavaPlugin {
    private EnchantmentManager enchantmentManager;
    private MessageUtil messageUtil;
    private EnchantmentBooksMenu enchantmentBooksMenu;

    @Override
    public void onEnable() {
        saveDefaultConfig();
        
        messageUtil = new MessageUtil(this);
        enchantmentManager = new EnchantmentManager(this);
        enchantmentBooksMenu = new EnchantmentBooksMenu(this, enchantmentManager);
        
        registerCommands();
        registerListeners();
        
        getLogger().info("OctoEnchants успешно загружен!");
    }

    @Override
    public void onDisable() {
        getLogger().info("OctoEnchants выключен.");
    }

    private void registerCommands() {
        OctoEnchantsCommand command = new OctoEnchantsCommand(this, enchantmentManager, messageUtil);
        getCommand("octoenchants").setExecutor(command);
        getCommand("octoenchants").setTabCompleter(command);
    }

    private void registerListeners() {
        getServer().getPluginManager().registerEvents(new EnchantmentTableListener(this, enchantmentManager, messageUtil), this);
        getServer().getPluginManager().registerEvents(new GameplayListener(this, enchantmentManager, messageUtil), this);
    }

    public void reloadPlugin() {
        reloadConfig();
        enchantmentManager = new EnchantmentManager(this);
        enchantmentBooksMenu = new EnchantmentBooksMenu(this, enchantmentManager);
    }

    public EnchantmentManager getEnchantmentManager() {
        return enchantmentManager;
    }

    public MessageUtil getMessageUtil() {
        return messageUtil;
    }

    public EnchantmentBooksMenu getEnchantmentBooksMenu() {