@dimzxzzx07/mc-headless 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +0 -0
  2. package/dist/core/ConfigHandler.d.ts +12 -0
  3. package/dist/core/ConfigHandler.d.ts.map +1 -0
  4. package/dist/core/ConfigHandler.js +118 -0
  5. package/dist/core/ConfigHandler.js.map +1 -0
  6. package/dist/core/JavaChecker.d.ts +8 -0
  7. package/dist/core/JavaChecker.d.ts.map +1 -0
  8. package/dist/core/JavaChecker.js +68 -0
  9. package/dist/core/JavaChecker.js.map +1 -0
  10. package/dist/core/MinecraftServer.d.ts +28 -0
  11. package/dist/core/MinecraftServer.d.ts.map +1 -0
  12. package/dist/core/MinecraftServer.js +312 -0
  13. package/dist/core/MinecraftServer.js.map +1 -0
  14. package/dist/core/ServerManager.d.ts +30 -0
  15. package/dist/core/ServerManager.d.ts.map +1 -0
  16. package/dist/core/ServerManager.js +203 -0
  17. package/dist/core/ServerManager.js.map +1 -0
  18. package/dist/engines/Downloader.d.ts +16 -0
  19. package/dist/engines/Downloader.d.ts.map +1 -0
  20. package/dist/engines/Downloader.js +159 -0
  21. package/dist/engines/Downloader.js.map +1 -0
  22. package/dist/engines/FabricEngine.d.ts +11 -0
  23. package/dist/engines/FabricEngine.d.ts.map +1 -0
  24. package/dist/engines/FabricEngine.js +70 -0
  25. package/dist/engines/FabricEngine.js.map +1 -0
  26. package/dist/engines/ForgeEngine.d.ts +11 -0
  27. package/dist/engines/ForgeEngine.d.ts.map +1 -0
  28. package/dist/engines/ForgeEngine.js +84 -0
  29. package/dist/engines/ForgeEngine.js.map +1 -0
  30. package/dist/engines/PaperEngine.d.ts +11 -0
  31. package/dist/engines/PaperEngine.d.ts.map +1 -0
  32. package/dist/engines/PaperEngine.js +88 -0
  33. package/dist/engines/PaperEngine.js.map +1 -0
  34. package/dist/engines/ServerEngine.d.ts +10 -0
  35. package/dist/engines/ServerEngine.d.ts.map +1 -0
  36. package/dist/engines/ServerEngine.js +3 -0
  37. package/dist/engines/ServerEngine.js.map +1 -0
  38. package/dist/engines/VanillaEngine.d.ts +11 -0
  39. package/dist/engines/VanillaEngine.d.ts.map +1 -0
  40. package/dist/engines/VanillaEngine.js +70 -0
  41. package/dist/engines/VanillaEngine.js.map +1 -0
  42. package/dist/index.d.ts +20 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +89 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/platforms/BedrockServer.d.ts +30 -0
  47. package/dist/platforms/BedrockServer.d.ts.map +1 -0
  48. package/dist/platforms/BedrockServer.js +301 -0
  49. package/dist/platforms/BedrockServer.js.map +1 -0
  50. package/dist/platforms/GeyserBridge.d.ts +9 -0
  51. package/dist/platforms/GeyserBridge.d.ts.map +1 -0
  52. package/dist/platforms/GeyserBridge.js +98 -0
  53. package/dist/platforms/GeyserBridge.js.map +1 -0
  54. package/dist/platforms/JavaServer.d.ts +27 -0
  55. package/dist/platforms/JavaServer.d.ts.map +1 -0
  56. package/dist/platforms/JavaServer.js +237 -0
  57. package/dist/platforms/JavaServer.js.map +1 -0
  58. package/dist/types/index.d.ts +80 -0
  59. package/dist/types/index.d.ts.map +1 -0
  60. package/dist/types/index.js +3 -0
  61. package/dist/types/index.js.map +1 -0
  62. package/dist/utils/FileUtils.d.ts +20 -0
  63. package/dist/utils/FileUtils.d.ts.map +1 -0
  64. package/dist/utils/FileUtils.js +172 -0
  65. package/dist/utils/FileUtils.js.map +1 -0
  66. package/dist/utils/Logger.d.ts +26 -0
  67. package/dist/utils/Logger.d.ts.map +1 -0
  68. package/dist/utils/Logger.js +91 -0
  69. package/dist/utils/Logger.js.map +1 -0
  70. package/dist/utils/PropertiesParser.d.ts +7 -0
  71. package/dist/utils/PropertiesParser.d.ts.map +1 -0
  72. package/dist/utils/PropertiesParser.js +124 -0
  73. package/dist/utils/PropertiesParser.js.map +1 -0
  74. package/dist/utils/SystemDetector.d.ts +14 -0
  75. package/dist/utils/SystemDetector.d.ts.map +1 -0
  76. package/dist/utils/SystemDetector.js +152 -0
  77. package/dist/utils/SystemDetector.js.map +1 -0
  78. package/package.json +51 -0
  79. package/src/core/ConfigHandler.ts +136 -0
  80. package/src/core/JavaChecker.ts +71 -0
  81. package/src/core/MinecraftServer.ts +326 -0
  82. package/src/core/ServerManager.ts +196 -0
  83. package/src/engines/Downloader.ts +144 -0
  84. package/src/engines/FabricEngine.ts +49 -0
  85. package/src/engines/ForgeEngine.ts +65 -0
  86. package/src/engines/PaperEngine.ts +68 -0
  87. package/src/engines/ServerEngine.ts +10 -0
  88. package/src/engines/VanillaEngine.ts +49 -0
  89. package/src/index.ts +83 -0
  90. package/src/platforms/BedrockServer.ts +311 -0
  91. package/src/platforms/GeyserBridge.ts +83 -0
  92. package/src/platforms/JavaServer.ts +241 -0
  93. package/src/scripts/detect-os.sh +56 -0
  94. package/src/scripts/install-java.sh +38 -0
  95. package/src/types/index.ts +89 -0
  96. package/src/utils/FileUtils.ts +162 -0
  97. package/src/utils/Logger.ts +97 -0
  98. package/src/utils/PropertiesParser.ts +126 -0
  99. package/src/utils/SystemDetector.ts +127 -0
  100. package/tsconfig.json +23 -0
package/README.md ADDED
File without changes
@@ -0,0 +1,12 @@
1
+ import { MinecraftConfig } from '../types';
2
+ export declare class ConfigHandler {
3
+ private config;
4
+ constructor(config: Partial<MinecraftConfig>);
5
+ private validateAndComplete;
6
+ private validateConfig;
7
+ private mergeDeep;
8
+ private isObject;
9
+ getConfig(): MinecraftConfig;
10
+ getServerProperties(): Record<string, any>;
11
+ }
12
+ //# sourceMappingURL=ConfigHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigHandler.d.ts","sourceRoot":"","sources":["../../src/core/ConfigHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC;IAI5C,OAAO,CAAC,mBAAmB;IAoD3B,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,QAAQ;IAIT,SAAS,IAAI,eAAe;IAI5B,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAepD"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigHandler = void 0;
4
+ class ConfigHandler {
5
+ config;
6
+ constructor(config) {
7
+ this.config = this.validateAndComplete(config);
8
+ }
9
+ validateAndComplete(config) {
10
+ const defaultConfig = {
11
+ platform: 'java',
12
+ version: '1.20.1',
13
+ type: 'paper',
14
+ autoAcceptEula: true,
15
+ memory: {
16
+ init: '1G',
17
+ max: '4G',
18
+ useAikarsFlags: true
19
+ },
20
+ network: {
21
+ port: 25565,
22
+ bedrockPort: 19132,
23
+ ip: '0.0.0.0',
24
+ onlineMode: false,
25
+ motd: 'Minecraft Server'
26
+ },
27
+ world: {
28
+ difficulty: 'normal',
29
+ hardcore: false,
30
+ gamemode: 'survival',
31
+ maxPlayers: 20,
32
+ viewDistance: 10,
33
+ levelName: 'world'
34
+ },
35
+ folders: {
36
+ addons: './addons',
37
+ mods: './mods',
38
+ plugins: './plugins',
39
+ world: './world'
40
+ },
41
+ autoRestart: false,
42
+ backup: {
43
+ enabled: false,
44
+ interval: '24h',
45
+ path: './backups'
46
+ }
47
+ };
48
+ const merged = this.mergeDeep(defaultConfig, config);
49
+ this.validateConfig(merged);
50
+ return merged;
51
+ }
52
+ validateConfig(config) {
53
+ if (!['java', 'bedrock', 'all'].includes(config.platform)) {
54
+ throw new Error('Invalid platform. Must be java, bedrock, or all');
55
+ }
56
+ if (!['paper', 'purpur', 'vanilla', 'spigot', 'forge', 'fabric'].includes(config.type)) {
57
+ throw new Error('Invalid server type');
58
+ }
59
+ if (!/^\d+\.\d+(\.\d+)?$/.test(config.version)) {
60
+ throw new Error('Invalid version format');
61
+ }
62
+ const memRegex = /^\d+[MG]$/;
63
+ if (!memRegex.test(config.memory.init) || !memRegex.test(config.memory.max)) {
64
+ throw new Error('Memory must be in format like 1G or 1024M');
65
+ }
66
+ if (config.network.port < 1 || config.network.port > 65535) {
67
+ throw new Error('Invalid port number');
68
+ }
69
+ if (config.world.maxPlayers < 1 || config.world.maxPlayers > 1000) {
70
+ throw new Error('Max players must be between 1 and 1000');
71
+ }
72
+ if (config.world.viewDistance < 3 || config.world.viewDistance > 32) {
73
+ throw new Error('View distance must be between 3 and 32');
74
+ }
75
+ }
76
+ mergeDeep(target, source) {
77
+ const output = { ...target };
78
+ if (this.isObject(target) && this.isObject(source)) {
79
+ Object.keys(source).forEach(key => {
80
+ if (this.isObject(source[key])) {
81
+ if (!(key in target)) {
82
+ output[key] = source[key];
83
+ }
84
+ else {
85
+ output[key] = this.mergeDeep(target[key], source[key]);
86
+ }
87
+ }
88
+ else {
89
+ output[key] = source[key];
90
+ }
91
+ });
92
+ }
93
+ return output;
94
+ }
95
+ isObject(item) {
96
+ return item && typeof item === 'object' && !Array.isArray(item);
97
+ }
98
+ getConfig() {
99
+ return this.config;
100
+ }
101
+ getServerProperties() {
102
+ return {
103
+ 'difficulty': this.config.world.difficulty,
104
+ 'hardcore': this.config.world.hardcore.toString(),
105
+ 'level-seed': this.config.world.seed || '',
106
+ 'gamemode': this.config.world.gamemode,
107
+ 'server-port': this.config.network.port.toString(),
108
+ 'server-ip': this.config.network.ip,
109
+ 'max-players': this.config.world.maxPlayers.toString(),
110
+ 'view-distance': this.config.world.viewDistance.toString(),
111
+ 'level-name': this.config.world.levelName,
112
+ 'motd': this.config.network.motd,
113
+ 'online-mode': this.config.network.onlineMode.toString()
114
+ };
115
+ }
116
+ }
117
+ exports.ConfigHandler = ConfigHandler;
118
+ //# sourceMappingURL=ConfigHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigHandler.js","sourceRoot":"","sources":["../../src/core/ConfigHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare class JavaChecker {
2
+ private static logger;
3
+ static checkJava(): Promise<boolean>;
4
+ static ensureJava(): Promise<void>;
5
+ static getJavaVersion(): string | null;
6
+ static installJava(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=JavaChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaChecker.d.ts","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"AAIA,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwB;WAE/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;WAcvB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;WAcjC,cAAc,IAAI,MAAM,GAAG,IAAI;WAUzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAyBnD"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JavaChecker = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const Logger_1 = require("../utils/Logger");
6
+ const SystemDetector_1 = require("../utils/SystemDetector");
7
+ class JavaChecker {
8
+ static logger = Logger_1.Logger.getInstance();
9
+ static checkJava() {
10
+ return new Promise((resolve) => {
11
+ (0, child_process_1.exec)('java -version', (error) => {
12
+ if (error) {
13
+ this.logger.warning('Java is not installed');
14
+ resolve(false);
15
+ }
16
+ else {
17
+ this.logger.success('Java is installed');
18
+ resolve(true);
19
+ }
20
+ });
21
+ });
22
+ }
23
+ static async ensureJava() {
24
+ const hasJava = await this.checkJava();
25
+ if (!hasJava) {
26
+ this.logger.warning('Java not found. Attempting to install...');
27
+ await this.installJava();
28
+ }
29
+ const version = this.getJavaVersion();
30
+ if (version) {
31
+ this.logger.success(`Java version: ${version}`);
32
+ }
33
+ }
34
+ static getJavaVersion() {
35
+ try {
36
+ const output = (0, child_process_1.execSync)('java -version 2>&1').toString();
37
+ const match = output.match(/version "([^"]+)"/);
38
+ return match ? match[1] : null;
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ static async installJava() {
45
+ const command = SystemDetector_1.SystemDetector.getJavaInstallCommand();
46
+ this.logger.info(`Installing Java with: ${command}`);
47
+ return new Promise((resolve, reject) => {
48
+ const child = (0, child_process_1.exec)(command, (error) => {
49
+ if (error) {
50
+ this.logger.error('Failed to install Java');
51
+ reject(error);
52
+ }
53
+ else {
54
+ this.logger.success('Java installed successfully');
55
+ resolve();
56
+ }
57
+ });
58
+ child.stdout?.on('data', (data) => {
59
+ process.stdout.write(data);
60
+ });
61
+ child.stderr?.on('data', (data) => {
62
+ process.stderr.write(data);
63
+ });
64
+ });
65
+ }
66
+ }
67
+ exports.JavaChecker = JavaChecker;
68
+ //# sourceMappingURL=JavaChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JavaChecker.js","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { EventEmitter } from 'events';
2
+ import { MinecraftConfig, ServerInfo, Player } from '../types';
3
+ export declare class MinecraftServer extends EventEmitter {
4
+ private config;
5
+ private logger;
6
+ private engine;
7
+ private geyser;
8
+ private process;
9
+ private serverInfo;
10
+ private players;
11
+ private backupCron;
12
+ private startTime;
13
+ constructor(userConfig: Partial<MinecraftConfig>);
14
+ private createEngine;
15
+ start(): Promise<ServerInfo>;
16
+ stop(): Promise<void>;
17
+ sendCommand(command: string): void;
18
+ getInfo(): Promise<ServerInfo>;
19
+ getPlayers(): Player[];
20
+ backup(type?: 'full' | 'world' | 'plugins'): Promise<string>;
21
+ private monitorResources;
22
+ private setupBackups;
23
+ private convertIntervalToCron;
24
+ private handlePlayerJoin;
25
+ private handlePlayerLeave;
26
+ private parseMemory;
27
+ }
28
+ //# sourceMappingURL=MinecraftServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinecraftServer.d.ts","sourceRoot":"","sources":["../../src/core/MinecraftServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAc/D,qBAAa,eAAgB,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,SAAS,CAAqB;gBAE1B,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC;IA2BhD,OAAO,CAAC,YAAY;IAiBP,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IA+F5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAS5B,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAepC,UAAU,IAAI,MAAM,EAAE;IAIhB,MAAM,CAAC,IAAI,GAAE,MAAM,GAAG,OAAO,GAAG,SAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBjF,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,WAAW;CAOtB"}
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MinecraftServer = void 0;
40
+ const events_1 = require("events");
41
+ const child_process_1 = require("child_process");
42
+ const pidusage_1 = __importDefault(require("pidusage"));
43
+ const cron = __importStar(require("node-cron"));
44
+ const ConfigHandler_1 = require("./ConfigHandler");
45
+ const JavaChecker_1 = require("./JavaChecker");
46
+ const FileUtils_1 = require("../utils/FileUtils");
47
+ const Logger_1 = require("../utils/Logger");
48
+ const SystemDetector_1 = require("../utils/SystemDetector");
49
+ const PaperEngine_1 = require("../engines/PaperEngine");
50
+ const VanillaEngine_1 = require("../engines/VanillaEngine");
51
+ const ForgeEngine_1 = require("../engines/ForgeEngine");
52
+ const FabricEngine_1 = require("../engines/FabricEngine");
53
+ const GeyserBridge_1 = require("../platforms/GeyserBridge");
54
+ const path = __importStar(require("path"));
55
+ class MinecraftServer extends events_1.EventEmitter {
56
+ config;
57
+ logger;
58
+ engine;
59
+ geyser;
60
+ process = null;
61
+ serverInfo;
62
+ players = new Map();
63
+ backupCron = null;
64
+ startTime = null;
65
+ constructor(userConfig) {
66
+ super();
67
+ this.logger = Logger_1.Logger.getInstance();
68
+ this.logger.banner();
69
+ const handler = new ConfigHandler_1.ConfigHandler(userConfig);
70
+ this.config = handler.getConfig();
71
+ this.engine = this.createEngine();
72
+ this.geyser = new GeyserBridge_1.GeyserBridge();
73
+ this.serverInfo = {
74
+ pid: 0,
75
+ ip: this.config.network.ip,
76
+ port: this.config.network.port,
77
+ bedrockPort: this.config.platform === 'all' ? this.config.network.bedrockPort : undefined,
78
+ version: this.config.version,
79
+ type: this.config.type,
80
+ platform: this.config.platform,
81
+ players: 0,
82
+ maxPlayers: this.config.world.maxPlayers,
83
+ uptime: 0,
84
+ memory: { used: 0, max: 0 },
85
+ status: 'stopped'
86
+ };
87
+ }
88
+ createEngine() {
89
+ switch (this.config.type) {
90
+ case 'paper':
91
+ case 'purpur':
92
+ case 'spigot':
93
+ return new PaperEngine_1.PaperEngine();
94
+ case 'vanilla':
95
+ return new VanillaEngine_1.VanillaEngine();
96
+ case 'forge':
97
+ return new ForgeEngine_1.ForgeEngine();
98
+ case 'fabric':
99
+ return new FabricEngine_1.FabricEngine();
100
+ default:
101
+ throw new Error(`Unsupported server type: ${this.config.type}`);
102
+ }
103
+ }
104
+ async start() {
105
+ this.logger.info(`Starting ${this.config.type} server v${this.config.version}...`);
106
+ await JavaChecker_1.JavaChecker.ensureJava();
107
+ const systemInfo = SystemDetector_1.SystemDetector.getSystemInfo();
108
+ this.logger.debug('System info:', systemInfo);
109
+ const serverDir = process.cwd();
110
+ await FileUtils_1.FileUtils.ensureServerStructure(this.config);
111
+ const jarPath = await this.engine.download(this.config, serverDir);
112
+ if (this.config.type === 'forge') {
113
+ await this.engine.prepare(this.config, serverDir, jarPath);
114
+ }
115
+ else {
116
+ await this.engine.prepare(this.config, serverDir);
117
+ }
118
+ if (this.config.platform === 'all') {
119
+ await this.geyser.setup(this.config);
120
+ }
121
+ const javaArgs = this.engine.getJavaArgs(this.config);
122
+ const serverJar = this.engine.getServerJar(jarPath);
123
+ const serverArgs = this.engine.getServerArgs();
124
+ const fullArgs = [
125
+ ...javaArgs,
126
+ '-jar',
127
+ serverJar,
128
+ ...serverArgs
129
+ ];
130
+ this.logger.info(`Launching: java ${fullArgs.join(' ')}`);
131
+ this.process = (0, child_process_1.spawn)('java', fullArgs, {
132
+ cwd: serverDir,
133
+ stdio: 'pipe'
134
+ });
135
+ this.serverInfo.pid = this.process.pid;
136
+ this.serverInfo.status = 'starting';
137
+ this.startTime = new Date();
138
+ this.process.stdout.on('data', (data) => {
139
+ const output = data.toString();
140
+ process.stdout.write(output);
141
+ if (output.includes('Done') || output.includes('For help, type "help"')) {
142
+ this.serverInfo.status = 'running';
143
+ this.logger.success('Server started successfully!');
144
+ this.emit('ready', this.serverInfo);
145
+ }
146
+ if (output.includes('joined the game')) {
147
+ const match = output.match(/(\w+) joined the game/);
148
+ if (match) {
149
+ this.handlePlayerJoin(match[1]);
150
+ }
151
+ }
152
+ if (output.includes('left the game')) {
153
+ const match = output.match(/(\w+) left the game/);
154
+ if (match) {
155
+ this.handlePlayerLeave(match[1]);
156
+ }
157
+ }
158
+ });
159
+ this.process.stderr.on('data', (data) => {
160
+ process.stderr.write(data.toString());
161
+ });
162
+ this.process.on('exit', (code) => {
163
+ this.serverInfo.status = 'stopped';
164
+ this.logger.warning(`Server stopped with code ${code}`);
165
+ if (this.config.autoRestart && code !== 0) {
166
+ this.logger.info('Auto-restarting...');
167
+ this.start();
168
+ }
169
+ this.emit('stop', { code });
170
+ });
171
+ this.monitorResources();
172
+ if (this.config.backup.enabled) {
173
+ this.setupBackups();
174
+ }
175
+ return this.serverInfo;
176
+ }
177
+ async stop() {
178
+ if (!this.process) {
179
+ this.logger.warning('Server not running');
180
+ return;
181
+ }
182
+ this.logger.info('Stopping server...');
183
+ this.serverInfo.status = 'stopping';
184
+ this.sendCommand('stop');
185
+ await new Promise(resolve => setTimeout(resolve, 5000));
186
+ if (this.process) {
187
+ this.process.kill();
188
+ this.process = null;
189
+ }
190
+ if (this.backupCron) {
191
+ this.backupCron.stop();
192
+ }
193
+ if (this.config.platform === 'all') {
194
+ this.geyser.stop();
195
+ }
196
+ this.logger.success('Server stopped');
197
+ }
198
+ sendCommand(command) {
199
+ if (!this.process || this.serverInfo.status !== 'running') {
200
+ throw new Error('Server not running');
201
+ }
202
+ this.process.stdin.write(command + '\n');
203
+ this.logger.debug(`Command sent: ${command}`);
204
+ }
205
+ async getInfo() {
206
+ if (this.serverInfo.status === 'running' && this.process) {
207
+ try {
208
+ const stats = await (0, pidusage_1.default)(this.process.pid);
209
+ this.serverInfo.memory = {
210
+ used: Math.round(stats.memory / 1024 / 1024),
211
+ max: this.parseMemory(this.config.memory.max)
212
+ };
213
+ this.serverInfo.uptime = Math.floor((Date.now() - (this.startTime?.getTime() || 0)) / 1000);
214
+ }
215
+ catch { }
216
+ }
217
+ return this.serverInfo;
218
+ }
219
+ getPlayers() {
220
+ return Array.from(this.players.values());
221
+ }
222
+ async backup(type = 'full') {
223
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
224
+ const backupName = `backup-${type}-${timestamp}`;
225
+ const backupPath = path.join(this.config.backup.path, backupName);
226
+ this.logger.info(`Creating ${type} backup...`);
227
+ switch (type) {
228
+ case 'full':
229
+ await FileUtils_1.FileUtils.createBackup(process.cwd(), backupPath);
230
+ break;
231
+ case 'world':
232
+ await FileUtils_1.FileUtils.createBackup(this.config.folders.world, backupPath);
233
+ break;
234
+ case 'plugins':
235
+ await FileUtils_1.FileUtils.createBackup(this.config.folders.plugins, backupPath);
236
+ break;
237
+ }
238
+ this.logger.success(`Backup created: ${backupPath}`);
239
+ return backupPath;
240
+ }
241
+ monitorResources() {
242
+ setInterval(async () => {
243
+ if (this.serverInfo.status === 'running' && this.process) {
244
+ try {
245
+ const stats = await (0, pidusage_1.default)(this.process.pid);
246
+ this.serverInfo.memory = {
247
+ used: Math.round(stats.memory / 1024 / 1024),
248
+ max: this.parseMemory(this.config.memory.max)
249
+ };
250
+ this.serverInfo.uptime = Math.floor((Date.now() - (this.startTime?.getTime() || 0)) / 1000);
251
+ if (stats.cpu > 80) {
252
+ this.logger.warning(`High CPU usage: ${stats.cpu}%`);
253
+ }
254
+ this.emit('resource', this.serverInfo);
255
+ }
256
+ catch { }
257
+ }
258
+ }, 5000);
259
+ }
260
+ setupBackups() {
261
+ const cronExpression = this.convertIntervalToCron(this.config.backup.interval);
262
+ if (cronExpression) {
263
+ this.backupCron = cron.schedule(cronExpression, () => {
264
+ this.backup('world');
265
+ });
266
+ this.logger.info(`Backups scheduled: ${this.config.backup.interval}`);
267
+ }
268
+ }
269
+ convertIntervalToCron(interval) {
270
+ const match = interval.match(/(\d+)([hms])/);
271
+ if (!match)
272
+ return null;
273
+ const value = parseInt(match[1]);
274
+ const unit = match[2];
275
+ switch (unit) {
276
+ case 'h':
277
+ return `0 */${value} * * *`;
278
+ case 'm':
279
+ return `*/${value} * * * *`;
280
+ case 's':
281
+ return `*/${value} * * * * *`;
282
+ default:
283
+ return null;
284
+ }
285
+ }
286
+ handlePlayerJoin(name) {
287
+ const player = {
288
+ name,
289
+ uuid: '',
290
+ ip: '',
291
+ ping: 0,
292
+ connectedAt: new Date()
293
+ };
294
+ this.players.set(name, player);
295
+ this.serverInfo.players = this.players.size;
296
+ this.emit('player-join', player);
297
+ }
298
+ handlePlayerLeave(name) {
299
+ this.players.delete(name);
300
+ this.serverInfo.players = this.players.size;
301
+ this.emit('player-leave', name);
302
+ }
303
+ parseMemory(memStr) {
304
+ const value = parseInt(memStr);
305
+ if (memStr.endsWith('G')) {
306
+ return value * 1024;
307
+ }
308
+ return value;
309
+ }
310
+ }
311
+ exports.MinecraftServer = MinecraftServer;
312
+ //# sourceMappingURL=MinecraftServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinecraftServer.js","sourceRoot":"","sources":["../../src/core/MinecraftServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { EventEmitter } from 'events';
2
+ import { MinecraftServer } from './MinecraftServer';
3
+ import { MinecraftConfig, ServerInfo } from '../types';
4
+ export declare class ServerManager extends EventEmitter {
5
+ private servers;
6
+ private logger;
7
+ constructor();
8
+ createServer(name: string, config: Partial<MinecraftConfig>): MinecraftServer;
9
+ getServer(name: string): MinecraftServer | undefined;
10
+ startServer(name: string): Promise<ServerInfo>;
11
+ stopServer(name: string): Promise<void>;
12
+ stopAll(): Promise<void>;
13
+ removeServer(name: string): boolean;
14
+ listServers(): Array<{
15
+ name: string;
16
+ info: ServerInfo;
17
+ }>;
18
+ getServerCount(): number;
19
+ getRunningServers(): Array<{
20
+ name: string;
21
+ info: ServerInfo;
22
+ }>;
23
+ broadcastCommand(command: string): Promise<void>;
24
+ saveAll(): Promise<void>;
25
+ backupAll(type?: 'full' | 'world' | 'plugins'): Promise<Map<string, string>>;
26
+ importServersFromDirectory(dir: string): Promise<void>;
27
+ exportServersToDirectory(dir: string): Promise<void>;
28
+ getStatus(): any;
29
+ }
30
+ //# sourceMappingURL=ServerManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerManager.d.ts","sourceRoot":"","sources":["../../src/core/ServerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAKvD,qBAAa,aAAc,SAAQ,YAAY;IAC3C,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,MAAM,CAAS;;IAOhB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe;IAgC7E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI9C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAU9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAanC,WAAW,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAOxD,cAAc,IAAI,MAAM;IAIxB,iBAAiB,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAMxD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAehD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,SAAS,CAAC,IAAI,GAAE,MAAM,GAAG,OAAO,GAAG,SAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAiBrF,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtD,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,SAAS,IAAI,GAAG;CAO1B"}