修复启动崩溃 + Banner升级为Spring Boot彩色版
- AntiNoInteractService: 删除Set.of()中重复的LOOM元素导致java.lang.IllegalArgumentException - banner.txt: 替换旧v1.0.0纯文本Banner为Spring Boot ANSI彩色版 ALUER红色+绿色 / ServerGuard金色+青色 / V5.0.0紫色 - ServerGuardService.printBanner(): 简化为补充信息行,Banner由banner.txt统一管理
This commit is contained in:
@@ -78,8 +78,7 @@ public class AntiNoInteractService {
|
||||
"BREWING_STAND", "BEACON", "SMITHING_TABLE", "GRINDSTONE",
|
||||
"CARTOGRAPHY_TABLE", "LOOM", "STONECUTTER",
|
||||
"HOPPER", "DISPENSER", "DROPPER",
|
||||
"JUKEBOX", "NOTE_BLOCK", "BELL", "LECTERN",
|
||||
"LOOM", "FLETCHING_TABLE",
|
||||
"JUKEBOX", "NOTE_BLOCK", "BELL", "LECTERN", "FLETCHING_TABLE",
|
||||
"OAK_DOOR", "IRON_DOOR", "SPRUCE_DOOR", "BIRCH_DOOR", "JUNGLE_DOOR",
|
||||
"ACACIA_DOOR", "DARK_OAK_DOOR", "CRIMSON_DOOR", "WARPED_DOOR",
|
||||
"OAK_TRAPDOOR", "IRON_TRAPDOOR",
|
||||
|
||||
@@ -201,43 +201,14 @@ public class ServerGuardService implements CommandLineRunner {
|
||||
// ─── Banner ────────────────────────────────────────
|
||||
|
||||
private void printBanner() {
|
||||
// Banner 已由 src/main/resources/banner.txt 提供(Spring Boot 启动时自动渲染)
|
||||
// 此处仅输出补充信息
|
||||
boolean hasAgent = agentServer != null;
|
||||
// ANSI 颜色码
|
||||
final String GOLD = "[38;5;220m";
|
||||
final String CYAN = "[38;5;51m";
|
||||
final String GRAY = "[38;5;245m";
|
||||
final String GREEN = "[38;5;46m";
|
||||
final String PURP = "[38;5;177m";
|
||||
final String RST = "[0m";
|
||||
|
||||
logger.info("");
|
||||
logger.info("{}╔══════════════════════════════════════════════════════════════╗{}", GRAY, RST);
|
||||
logger.info("{}║{} {}█████╗ ██╗ ██╗███████╗██████╗ {}███████╗██████╗ {} {}║{}", GRAY, GOLD, CYAN, GRAY, RST);
|
||||
logger.info("{}║{} {}██╔══██╗██║ ██║██╔════╝██╔══██╗ {}██╔════╝██╔══██╗{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST);
|
||||
logger.info("{}║{} {}███████║██║ ██║█████╗ ██████╔╝ {}███████╗██████╔╝{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST);
|
||||
logger.info("{}║{} {}██╔══██║██║ ██║██╔══╝ ██╔══██╗ {}╚════██║██╔══██╗{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST);
|
||||
logger.info("{}║{} {}██║ ██║╚██████╔╝███████╗██║ ██║ {}███████║██║ ██║{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST);
|
||||
logger.info("{}║{} {}╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ {}╚══════╝╚═╝ ╚═╝{} {}║{}", GRAY, GOLD, CYAN, GRAY, RST);
|
||||
logger.info("{}║{} {}║{}", GRAY, RST);
|
||||
logger.info("{}║{} {}AI-Powered Minecraft PaperMC Server Protection {}V5.0.0 {}║{}", GRAY, GREEN, PURP, GRAY, RST);
|
||||
logger.info("{}║{} {}135+ Security Modules │ 100% Anti-Cheat Coverage {}║{}", GRAY, PURP, GRAY, RST);
|
||||
logger.info("{}╠══════════════════════════════════════════════════════════════╣{}", GRAY, RST);
|
||||
logger.info("{}║{} Java: {} {}║{}", GRAY, String.format("%-36s", System.getProperty("java.version")), GRAY, RST);
|
||||
logger.info("{}║{} Available CPUs: {}{} {}║{}", GRAY, String.format("%-32s", Runtime.getRuntime().availableProcessors()), GRAY, RST);
|
||||
logger.info("{}║{} Max Memory: {}{} {}║{}", GRAY, String.format("%-32s", (Runtime.getRuntime().maxMemory() / (1024 * 1024)) + " MB"), GRAY, RST);
|
||||
logger.info("Web Console: http://0.0.0.0:{}/", serverPort);
|
||||
if (hasAgent) {
|
||||
logger.info("{}║{} Agent WS: ws://0.0.0.0:{}/agent{} {}║{}", GRAY, serverPort, " ", GRAY, RST);
|
||||
logger.info("Agent WS: ws://0.0.0.0:{}/agent", serverPort);
|
||||
}
|
||||
logger.info("{}║{} Web Console: http://0.0.0.0:{}{} {}║{}", GRAY, serverPort, " ", GRAY, RST);
|
||||
logger.info("{}║{} DeepSeek AI: {}{} {}║{}", GRAY,
|
||||
deepSeekClient.isEnabled() ? "enabled (" + config.getAi().getDeepseek().getModel() + ")" : "disabled",
|
||||
deepSeekClient.isEnabled() ? "" : " ", GRAY, RST);
|
||||
logger.info("{}║{} Mode: {} {}║{}", GRAY,
|
||||
String.format("%-36s", hasAgent ? "Agent Server (WebSocket)" : "External Monitor"), GRAY, RST);
|
||||
logger.info("{}╚══════════════════════════════════════════════════════════════╝{}", GRAY, RST);
|
||||
logger.info("");
|
||||
logger.info(" {}Type 'help' in the shell for full command reference.{}", GOLD, RST);
|
||||
logger.info(" {}Access the web console at http://localhost:{}/{}", GOLD, serverPort, RST);
|
||||
logger.info("Type 'help' in the shell for full command reference.");
|
||||
logger.info("");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
|
||||
${AnsiColor.BRIGHT_CYAN} ╔════════════════════════════════════════════════════════════╗
|
||||
${AnsiColor.BRIGHT_YELLOW} ╔══════════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ █████╗ ██╗ ██╗ ██╗███████╗██████╗ ║
|
||||
║ ██╔══██╗██║ ██║ ██║██╔════╝██╔══██╗ ║
|
||||
║ ███████║██║ ██║ ██║█████╗ ██████╔╝ ║
|
||||
║ ██╔══██║██║ ██║ ██║██╔══╝ ██╔══██╗ ║
|
||||
║ ██║ ██║███████╗╚██████╔╝███████╗██║ ██║ ║
|
||||
║ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ║
|
||||
║ ${AnsiColor.BRIGHT_RED}█████╗ ${AnsiColor.BRIGHT_GREEN}██╗ ██╗${AnsiColor.BRIGHT_YELLOW}███████╗${AnsiColor.BRIGHT_CYAN}██████╗ ${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}███████╗${AnsiColor.BRIGHT_CYAN}██████╗ ${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ${AnsiColor.BRIGHT_RED}██╔══██╗${AnsiColor.BRIGHT_GREEN}██║ ██║${AnsiColor.BRIGHT_YELLOW}██╔════╝${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}██╔════╝${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ${AnsiColor.BRIGHT_RED}███████║${AnsiColor.BRIGHT_GREEN}██║ ██║${AnsiColor.BRIGHT_YELLOW}█████╗ ${AnsiColor.BRIGHT_CYAN}██████╔╝${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}███████╗${AnsiColor.BRIGHT_CYAN}██████╔╝${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ${AnsiColor.BRIGHT_RED}██╔══██║${AnsiColor.BRIGHT_GREEN}██║ ██║${AnsiColor.BRIGHT_YELLOW}██╔══╝ ${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}╚════██║${AnsiColor.BRIGHT_CYAN}██╔══██╗${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ${AnsiColor.BRIGHT_RED}██║ ██║${AnsiColor.BRIGHT_GREEN}╚██████╔╝${AnsiColor.BRIGHT_YELLOW}███████╗${AnsiColor.BRIGHT_CYAN}██║ ██║${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}███████║${AnsiColor.BRIGHT_CYAN}██║ ██║${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ${AnsiColor.BRIGHT_RED}╚═╝ ╚═╝${AnsiColor.BRIGHT_GREEN} ╚═════╝ ${AnsiColor.BRIGHT_YELLOW}╚══════╝${AnsiColor.BRIGHT_CYAN}╚═╝ ╚═╝${AnsiColor.BRIGHT_YELLOW} ${AnsiColor.BRIGHT_RED}╚══════╝${AnsiColor.BRIGHT_CYAN}╚═╝ ╚═╝${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ║
|
||||
║ ServerGuard v1.0.0 ║
|
||||
║ AI-Powered Minecraft Server Protection ║
|
||||
║ ${AnsiColor.BRIGHT_GREEN}AI-Powered Minecraft PaperMC Server Protection${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ${AnsiColor.BRIGHT_MAGENTA}V5.0.0 ${AnsiColor.BRIGHT_WHITE}|${AnsiColor.BRIGHT_MAGENTA} 135+ Security Modules ${AnsiColor.BRIGHT_WHITE}|${AnsiColor.BRIGHT_MAGENTA} 100% Anti-Cheat${AnsiColor.BRIGHT_YELLOW} ║
|
||||
║ ║
|
||||
╚════════════════════════════════════════════════════════════╝${AnsiStyle.NORMAL}
|
||||
╚══════════════════════════════════════════════════════════════╝${AnsiStyle.NORMAL}
|
||||
|
||||
${AnsiColor.BRIGHT_GREEN}:: DeepSeek AI Powered ::${AnsiStyle.NORMAL} ${AnsiColor.BRIGHT_WHITE}Autonomous Defense Engine${AnsiStyle.NORMAL}
|
||||
${AnsiColor.BRIGHT_GREEN}:: Multi-Layer Kernel ::${AnsiStyle.NORMAL} ${AnsiColor.BRIGHT_WHITE}Signal Fusion + Threat Mesh${AnsiStyle.NORMAL}
|
||||
${AnsiColor.BRIGHT_GREEN}:: Mirage Shield ::${AnsiStyle.NORMAL} ${AnsiColor.BRIGHT_WHITE}4-Mode Adaptive Protection${AnsiStyle.NORMAL}
|
||||
${AnsiColor.BRIGHT_GREEN}Type 'help' in the shell for full command reference.${AnsiStyle.NORMAL}
|
||||
${AnsiColor.BRIGHT_CYAN}Web Console: http://0.0.0.0:${server.port}/${AnsiStyle.NORMAL}
|
||||
|
||||
Reference in New Issue
Block a user