NSM

NSM.java v1.0
网络服务器管理插件,支持多版本自动化、远程加密接口、权限控制、实时监控和高级管理命令
作者: immml

命令列表

  • nsmNSM主命令前缀,支持子命令
  • nsm version <...>版本管理命令
  • nsm plugin <...>插件管理命令
  • nsm world <...>世界管理命令
  • nsm server <...>服务器控制命令
  • nsm help帮助命令

权限列表

  • nsm.admin最高管理员权限
  • nsm.operator操作员权限
  • nsm.plugin_manager插件管理权限
  • nsm.world_manager世界管理权限
  • nsm.backup_manager备份管理权限
  • nsm.viewer只读查看权限
package com.nsm.core;

import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.Bukkit;
import org.bukkit.World;

import java.io.File;
import java.io.IOException;
import java.util.logging.Logger;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @pluginName NSM
 * @author immml
 * @version 1.0
 * @description 网络服务器管理插件,支持多版本自动化、远程加密接口、权限控制、实时监控和高级管理命令
 * [command]nsm|NSM主命令前缀,支持子命令[/command]
 * [command]nsm version <...>|版本管理命令[/command]
 * [command]nsm plugin <...>|插件管理命令[/command]
 * [command]nsm world <...>|世界管理命令[/command]
 * [command]nsm server <...>|服务器控制命令[/command]
 * [command]nsm help|帮助命令[/command]
 * [Permission]nsm.admin|最高管理员权限[/Permission]
 * [Permission]nsm.operator|操作员权限[/Permission]
 * [Permission]nsm.plugin_manager|插件管理权限[/Permission]
 * [Permission]nsm.world_manager|世界管理权限[/Permission]
 * [Permission]nsm.backup_manager|备份管理权限[/Permission]
 * [Permission]nsm.viewer|只读查看权限[/Permission]
 */
public class NSM extends JavaPlugin {

    public static NSM INSTANCE;

    private Logger logger;
    private ConfigManager configManager;
    private PermissionManager permissionManager;
    private EncryptManager encryptManager;
    private PluginManager pluginManager;
    private WorldManager worldManager;
    private VersionManager versionManager;
    private MonitorManager monitorManager;
    private HTTPServer httpServer;
    private TCPServer tcpServer;
    private HelpManager helpManager;

    @Override
    public void onEnable() {
        INSTANCE = this;
        logger = getLogger();

        // Initialize modules
        configManager = new ConfigManager(this);
        permissionManager = new PermissionManager(configManager);
        encryptManager = new EncryptManager(configManager, logger);
        pluginManager = new PluginManager(this, permissionManager, logger);
        worldManager = new WorldManager(this, permissionManager, logger);
        versionManager = new VersionManager(this, logger, configManager, permissionManager);
        monitorManager = new MonitorManager(this, logger);

        // Help system
        helpManager = new HelpManager();

        // Start HTTP and TCP Servers (both can be disabled via config)
        if (configManager.isHTTPEnabled()) {
            httpServer = new HTTPServer(configManager, encryptManager, permissionManager, pluginManager, worldManager, versionManager, monitorManager, helpManager, logger);
            httpServer.start();
        }
        if (configManager.isTCPEnabled()) {
            tcpServer = new TCPServer(configManager, encryptManager, permissionManager, pluginManager, worldManager, versionManager, monitorManager, helpManager, logger);
            tcpServer.start();
        }

        logger.info("NSM: All modules loaded. Version: 1.0");

        // Register Bukkit commands if needed (handled via plugin.yml emulation)
    }

    @Override
    public void onDisable() {
        if (httpServer != null) httpServer.stop();
        if (tcpServer != null) tcpServer.stop();
        logger.info("NSM: Network Server Management plugin disabled.");
    }

    /**
     * 命令处理主入口
     */
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        // 权限检查
        if (!sender.hasPermission("nsm.viewer")) {
            sender.sendMessage("§c[NSM] 权限不足!");
            return true;
        }
        if (args.length < 1) {
            sender.sendMessage("§e使用 /nsm help 获取所有命令。");
            return true;
        }
        String sub = args[0].toLowerCase();
        switch (sub) {
            case "version":
                // version [check|install|rollback|list]
                return versionManager.handleCommand(sender, Arrays.copyOfRange(args, 1, args.length));
            case "plugin":
                return pluginManager.handleCommand(sender, Arrays.copyOfRange(args, 1, args.length));
            case "world":
                return worldManager.handleCommand(sender, Arrays.copyOfRange(args, 1, args.length));
            case "server":
                return handleServerCmd(sender, Arrays.copyOfRange(args, 1, args.length));
            case "help":
            case "?":
                sender.sendMessage(helpManager.getHelp(args.length > 1 ? args[1] : null));
                return true;
            case "reload":
                configManager.reload();
                permissionManager.reload();
                encryptManager.reload();
                sender.sendMessage("§a[NSM] 配置已重载。");
                return true;
            case "status":
                sender.sendMessage(monitorManager.getStatusMessage());
                return true;
            default:
                sender.sendMessage("§c未知命令,使用 /nsm help 查看全部命令。");
                return true;
        }
    }

    private boolean handleServerCmd(CommandSender sender, String[] args) {
        if (args.length < 1) {
            sender.sendMessage("§e/server start|stop|restart|send-command <cmd>");
            return true;
        }

        String action = args[0].toLowerCase();
        switch (action) {
            case "start":
                sender.sendMessage("§a[NSM] 已启动(若支持)");
                return true;
            case "stop":
                if (sender.hasPermission("nsm.admin")) {
                    Bukkit.shutdown();
                    sender.sendMessage("§a[NSM] 服务器关闭中...");
                } else {
                    sender.sendMessage("§c权限不足。仅限 nsm.admin 使用!");
                }
                return true;
            case "restart":
                // 需要支持restart动作,可使用安全重启或计划任务完成(略)
                sender.sendMessage("§a[NSM] 服务器重启(请在主服务器配置支持此命令)");
                return true;
            case "send-command":
                if (args.length > 1 && sender.hasPermission("nsm.operator")) {
                    String cmdLine = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
                    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmdLine);
                    sender.sendMessage("§a[NSM] 服务器已执行命令:" + cmdLine);
                } else {
                    sender.sendMessage("§e语法:/nsm server send-command <cmd>");
                }
                return true;
            default:
                sender.sendMessage("§c未知服务器控制命令。");
                return true;
        }
    }
}
上一篇: SubwayPlugin下一篇: ServerRemoteControl

举报内容

意见反馈