NSM.java v1.0
网络服务器管理插件,支持多版本自动化、远程加密接口、权限控制、实时监控和高级管理命令
命令列表
- nsmNSM主命令前缀,支持子命令
- nsm version <...>版本管理命令
- nsm plugin <...>插件管理命令
- nsm world <...>世界管理命令
- nsm server <...>服务器控制命令
- nsm help帮助命令
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;
}
}
}