Spigot Plugin

SettingsHubPlugin

Make a plugin that opens a settings gui by command thats implementing InventoryHolders for safety of use and there you can toggle settings like mob spawns near you, fullbright, /msg /replys and an auction house if you want alerts or not and a pay and /balance system, all settings which you can toggle should be the whole features in the plugin

src/main/java/eu/codexe/settingshub/SettingsHubPlugin.java
package eu.codexe.settingshub;

import eu.codexe.settingshub.commands.AuctionCommand;
import eu.codexe.settingshub.commands.BalanceCommand;
import eu.codexe.settingshub.commands.MsgCommand;
import eu.codexe.settingshub.commands.PayCommand;
import eu.codexe.settingshub.commands.ReplyCommand;
import eu.codexe.settingshub.commands.ReloadCommand;
import eu.codexe.settingshub.commands.SettingsCommand;
import eu.codexe.settingshub.listeners.PlayerJoinListener;
import eu.codexe.settingshub.listeners.PlayerQuitListener;
import eu.codexe.settingshub.listeners.SettingsGuiListener;
import eu.codexe.settingshub.managers.AuctionManager;
import eu.codexe.settingshub.managers.EconomyManager;
import eu.codexe.settingshub.managers.MessageManager;
import eu.codexe.settingshub.managers.SettingsManager;
import eu.codexe.settingshub.storage.StorageManager;
import eu.codexe.settingshub.storage.YamlStorage;
import eu.codexe.settingshub.utils.CommandUtil;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.Objects;

public final class SettingsHubPlugin extends JavaPlugin {

    private MessageManager messageManager;
    private StorageManager storageManager;
    private SettingsManager settingsManager;
    private EconomyManager economyManager;
    private AuctionManager auctionManager;

    @Override
    public void onEnable() {
        saveDefaultConfig();

        this.messageManager = new MessageManager(this);
        this.storageManager = new YamlStorage(this);
        this.settingsManager = new SettingsManager(this, storageManager);
        this.economyManager = new EconomyManager(this, storageManager);
        this.auctionManager = new AuctionManager(this, storageManager, economyManager, settingsManager);

        storageManager.load();
        registerCommands();
        registerListeners();

        Bukkit.getOnlinePlayers().forEach(player -> {
            settingsManager.ensurePlayer(player.getUniqueId(), player.getName());
            economyManager.ensurePlayer(player.getUniqueId(), player.getName());
        });
    }

    @Override
    public void onDisable() {
        if (storageManager != null) {
            storageManager.saveAll();
        }
    }