@dimzxzzx07/mc-headless 1.7.0 → 1.9.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 (38) hide show
  1. package/README.md +317 -703
  2. package/dist/core/JavaChecker.d.ts +16 -3
  3. package/dist/core/JavaChecker.d.ts.map +1 -1
  4. package/dist/core/JavaChecker.js +179 -31
  5. package/dist/core/JavaChecker.js.map +1 -1
  6. package/dist/core/MinecraftServer.d.ts +61 -0
  7. package/dist/core/MinecraftServer.d.ts.map +1 -1
  8. package/dist/core/MinecraftServer.js +742 -60
  9. package/dist/core/MinecraftServer.js.map +1 -1
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +31 -16
  13. package/dist/index.js.map +1 -1
  14. package/dist/platforms/BedrockServer.d.ts.map +1 -1
  15. package/dist/platforms/BedrockServer.js +2 -0
  16. package/dist/platforms/BedrockServer.js.map +1 -1
  17. package/dist/platforms/JavaServer.d.ts.map +1 -1
  18. package/dist/platforms/JavaServer.js +2 -0
  19. package/dist/platforms/JavaServer.js.map +1 -1
  20. package/dist/platforms/SkinRestorer.d.ts +14 -0
  21. package/dist/platforms/SkinRestorer.d.ts.map +1 -0
  22. package/dist/platforms/SkinRestorer.js +145 -0
  23. package/dist/platforms/SkinRestorer.js.map +1 -0
  24. package/dist/platforms/SkinsRestorer.d.ts +14 -0
  25. package/dist/platforms/SkinsRestorer.d.ts.map +1 -0
  26. package/dist/platforms/SkinsRestorer.js +145 -0
  27. package/dist/platforms/SkinsRestorer.js.map +1 -0
  28. package/dist/types/index.d.ts +2 -0
  29. package/dist/types/index.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/core/JavaChecker.ts +170 -34
  32. package/src/core/MinecraftServer.ts +854 -64
  33. package/src/index.ts +33 -17
  34. package/src/platforms/BedrockServer.ts +2 -0
  35. package/src/platforms/JavaServer.ts +2 -0
  36. package/src/platforms/SkinRestorer.ts +127 -0
  37. package/src/scripts/install-java.sh +97 -32
  38. package/src/types/index.ts +2 -0
@@ -1,8 +1,21 @@
1
+ export interface JavaInfo {
2
+ path: string;
3
+ version: string;
4
+ type: 'system' | 'portable';
5
+ }
1
6
  export declare class JavaChecker {
2
7
  private static logger;
8
+ private static readonly JAVA_DIR;
9
+ private static readonly JAVA_17_URL;
10
+ private static readonly JAVA_21_URL;
11
+ private static readonly JAVA_11_URL;
12
+ private static readonly JAVA_8_URL;
3
13
  static checkJava(): Promise<boolean>;
4
- static ensureJava(): Promise<void>;
5
- static getJavaVersion(): string | null;
6
- static installJava(): Promise<void>;
14
+ static getSystemJavaPath(): string | null;
15
+ static getSystemJavaVersion(): string | null;
16
+ static getOrDownloadPortableJava(version?: '17' | '21' | '11' | '8'): Promise<JavaInfo>;
17
+ private static downloadFile;
18
+ static ensureJava(version?: '17' | '21' | 'auto', usePortable?: boolean): Promise<JavaInfo>;
19
+ static cleanupOldJava(): void;
7
20
  }
8
21
  //# sourceMappingURL=JavaChecker.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"JavaChecker.d.ts","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC/B;AAED,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwB;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IAC1E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAwI;IAC3K,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAwI;IAC3K,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAwI;IAC3K,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAkI;WAEhJ,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;WAenC,iBAAiB,IAAI,MAAM,GAAG,IAAI;WASlC,oBAAoB,IAAI,MAAM,GAAG,IAAI;WAc/B,yBAAyB,CAAC,OAAO,GAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmE1G,OAAO,CAAC,MAAM,CAAC,YAAY;WAyCP,UAAU,CAAC,OAAO,GAAE,IAAI,GAAG,IAAI,GAAG,MAAe,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;WAqBxG,cAAc,IAAI,IAAI;CAkBvC"}
@@ -1,39 +1,87 @@
1
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.JavaChecker = void 0;
4
37
  const child_process_1 = require("child_process");
38
+ const fs = __importStar(require("fs-extra"));
39
+ const path = __importStar(require("path"));
40
+ const https = __importStar(require("https"));
41
+ const tar = __importStar(require("tar"));
5
42
  const Logger_1 = require("../utils/Logger");
6
- const SystemDetector_1 = require("../utils/SystemDetector");
7
43
  class JavaChecker {
8
44
  static logger = Logger_1.Logger.getInstance();
9
- static checkJava() {
45
+ static JAVA_DIR = path.join('/tmp', '.mc-headless-java');
46
+ static JAVA_17_URL = 'https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.10%2B7/OpenJDK17U-jre_x64_linux_hotspot_17.0.10_7.tar.gz';
47
+ static JAVA_21_URL = 'https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.2%2B13/OpenJDK21U-jre_x64_linux_hotspot_21.0.2_13.tar.gz';
48
+ static JAVA_11_URL = 'https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.22%2B7/OpenJDK11U-jre_x64_linux_hotspot_11.0.22_7.tar.gz';
49
+ static JAVA_8_URL = 'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u402-b06/OpenJDK8U-jre_x64_linux_hotspot_8u402b06.tar.gz';
50
+ static async checkJava() {
10
51
  return new Promise((resolve) => {
11
- (0, child_process_1.exec)('java -version', (error) => {
12
- if (error) {
13
- this.logger.warning('Java is not installed');
52
+ (0, child_process_1.exec)('which java', (error, stdout) => {
53
+ if (error || !stdout.trim()) {
54
+ this.logger.warning('Java is not installed in system');
14
55
  resolve(false);
15
56
  }
16
57
  else {
17
- this.logger.success('Java is installed');
58
+ const javaPath = stdout.trim();
59
+ this.logger.success(`System Java found at: ${javaPath}`);
18
60
  resolve(true);
19
61
  }
20
62
  });
21
63
  });
22
64
  }
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();
65
+ static getSystemJavaPath() {
66
+ try {
67
+ const stdout = (0, child_process_1.execSync)('which java').toString().trim();
68
+ return stdout || null;
28
69
  }
29
- const version = this.getJavaVersion();
30
- if (version) {
31
- this.logger.success(`Java version: ${version}`);
70
+ catch {
71
+ return null;
32
72
  }
33
73
  }
34
- static getJavaVersion() {
74
+ static getSystemJavaVersion() {
35
75
  try {
36
76
  const output = (0, child_process_1.execSync)('java -version 2>&1').toString();
77
+ if (output.includes('version "21'))
78
+ return '21';
79
+ if (output.includes('version "17'))
80
+ return '17';
81
+ if (output.includes('version "11'))
82
+ return '11';
83
+ if (output.includes('version "1.8'))
84
+ return '8';
37
85
  const match = output.match(/version "([^"]+)"/);
38
86
  return match ? match[1] : null;
39
87
  }
@@ -41,28 +89,128 @@ class JavaChecker {
41
89
  return null;
42
90
  }
43
91
  }
44
- static async installJava() {
45
- const command = SystemDetector_1.SystemDetector.getJavaInstallCommand();
46
- this.logger.info(`Installing Java with: ${command}`);
92
+ static async getOrDownloadPortableJava(version = '17') {
93
+ await fs.ensureDir(this.JAVA_DIR);
94
+ const javaHome = path.join(this.JAVA_DIR, `jre-${version}`);
95
+ const javaBin = path.join(javaHome, 'bin', 'java');
96
+ if (await fs.pathExists(javaBin)) {
97
+ this.logger.info(`Portable Java ${version} already exists at ${javaBin}`);
98
+ const versionOutput = (0, child_process_1.execSync)(`"${javaBin}" -version 2>&1`).toString();
99
+ this.logger.debug(`Portable Java version: ${versionOutput.split('\n')[0]}`);
100
+ return {
101
+ path: javaBin,
102
+ version: version,
103
+ type: 'portable'
104
+ };
105
+ }
106
+ this.logger.info(`Downloading portable Java ${version} JRE...`);
107
+ let downloadUrl = '';
108
+ switch (version) {
109
+ case '21':
110
+ downloadUrl = this.JAVA_21_URL;
111
+ break;
112
+ case '17':
113
+ downloadUrl = this.JAVA_17_URL;
114
+ break;
115
+ case '11':
116
+ downloadUrl = this.JAVA_11_URL;
117
+ break;
118
+ case '8':
119
+ downloadUrl = this.JAVA_8_URL;
120
+ break;
121
+ default:
122
+ downloadUrl = this.JAVA_17_URL;
123
+ }
124
+ const tarPath = path.join(this.JAVA_DIR, `jre-${version}.tar.gz`);
125
+ await this.downloadFile(downloadUrl, tarPath);
126
+ this.logger.info(`Extracting Java ${version}...`);
127
+ await fs.ensureDir(javaHome);
128
+ await tar.extract({
129
+ file: tarPath,
130
+ cwd: javaHome,
131
+ strip: 1
132
+ });
133
+ await fs.remove(tarPath);
134
+ await fs.chmod(javaBin, 0o755);
135
+ this.logger.success(`Portable Java ${version} installed at ${javaBin}`);
136
+ const versionOutput = (0, child_process_1.execSync)(`"${javaBin}" -version 2>&1`).toString();
137
+ this.logger.debug(`Portable Java version: ${versionOutput.split('\n')[0]}`);
138
+ return {
139
+ path: javaBin,
140
+ version: version,
141
+ type: 'portable'
142
+ };
143
+ }
144
+ static downloadFile(url, destPath) {
47
145
  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);
146
+ this.logger.info(`Downloading from ${url}`);
147
+ const file = fs.createWriteStream(destPath);
148
+ https.get(url, (response) => {
149
+ if (response.statusCode !== 200) {
150
+ reject(new Error(`Download failed: ${response.statusCode}`));
151
+ return;
52
152
  }
53
- else {
54
- this.logger.success('Java installed successfully');
153
+ const totalSize = parseInt(response.headers['content-length'] || '0');
154
+ let downloadedSize = 0;
155
+ response.on('data', (chunk) => {
156
+ downloadedSize += chunk.length;
157
+ if (totalSize > 0) {
158
+ const percent = ((downloadedSize / totalSize) * 100).toFixed(1);
159
+ process.stdout.write(`\rDownloading Java: ${percent}% (${(downloadedSize / 1024 / 1024).toFixed(1)} MB / ${(totalSize / 1024 / 1024).toFixed(1)} MB)`);
160
+ }
161
+ });
162
+ response.pipe(file);
163
+ file.on('finish', () => {
164
+ process.stdout.write('\n');
165
+ file.close();
55
166
  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);
167
+ });
168
+ file.on('error', (err) => {
169
+ fs.unlink(destPath).catch(() => { });
170
+ reject(err);
171
+ });
172
+ }).on('error', (err) => {
173
+ fs.unlink(destPath).catch(() => { });
174
+ reject(err);
63
175
  });
64
176
  });
65
177
  }
178
+ static async ensureJava(version = 'auto', usePortable = true) {
179
+ const targetVersion = version === 'auto' ? '17' : version;
180
+ if (!usePortable) {
181
+ const systemJava = this.getSystemJavaPath();
182
+ if (systemJava) {
183
+ const systemVersion = this.getSystemJavaVersion();
184
+ if (systemVersion === targetVersion || (targetVersion === '17' && systemVersion === '21')) {
185
+ this.logger.success(`Using system Java ${systemVersion} at ${systemJava}`);
186
+ return {
187
+ path: systemJava,
188
+ version: systemVersion || targetVersion,
189
+ type: 'system'
190
+ };
191
+ }
192
+ }
193
+ }
194
+ return this.getOrDownloadPortableJava(targetVersion);
195
+ }
196
+ static cleanupOldJava() {
197
+ try {
198
+ const files = fs.readdirSync(this.JAVA_DIR);
199
+ const now = Date.now();
200
+ const oneDay = 24 * 60 * 60 * 1000;
201
+ files.forEach(file => {
202
+ const filePath = path.join(this.JAVA_DIR, file);
203
+ const stats = fs.statSync(filePath);
204
+ if (now - stats.mtimeMs > oneDay) {
205
+ fs.removeSync(filePath);
206
+ this.logger.debug(`Cleaned up old Java: ${file}`);
207
+ }
208
+ });
209
+ }
210
+ catch (error) {
211
+ this.logger.debug('No old Java to cleanup');
212
+ }
213
+ }
66
214
  }
67
215
  exports.JavaChecker = JavaChecker;
68
216
  //# sourceMappingURL=JavaChecker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JavaChecker.js","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JavaChecker.js","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,30 @@ export interface MinecraftServerOptions extends Partial<MinecraftConfig> {
4
4
  enableViaVersion?: boolean;
5
5
  enableViaBackwards?: boolean;
6
6
  enableViaRewind?: boolean;
7
+ enableSkinRestorer?: boolean;
7
8
  enableProtocolSupport?: boolean;
9
+ customJavaArgs?: string[];
10
+ javaVersion?: '17' | '21' | 'auto';
11
+ usePortableJava?: boolean;
12
+ memoryMonitor?: {
13
+ enabled: boolean;
14
+ threshold: number;
15
+ interval: number;
16
+ action: 'restart' | 'warn' | 'stop';
17
+ };
18
+ autoInstallJava?: boolean;
19
+ networkOptimization?: {
20
+ tcpFastOpen: boolean;
21
+ bungeeMode: boolean;
22
+ proxyProtocol: boolean;
23
+ };
24
+ owners?: string[];
25
+ ownerCommands?: {
26
+ prefix: string;
27
+ enabled: boolean;
28
+ };
29
+ silentMode?: boolean;
30
+ statsInterval?: number;
8
31
  }
9
32
  export declare class MinecraftServer extends EventEmitter {
10
33
  private config;
@@ -13,14 +36,52 @@ export declare class MinecraftServer extends EventEmitter {
13
36
  private engine;
14
37
  private geyser;
15
38
  private viaVersion;
39
+ private skinRestorer;
16
40
  private process;
17
41
  private serverInfo;
18
42
  private players;
19
43
  private backupCron;
20
44
  private startTime;
45
+ private memoryMonitorInterval;
46
+ private statsInterval;
47
+ private memoryUsageHistory;
48
+ private worldSize;
49
+ private playerCount;
50
+ private javaCommand;
51
+ private javaInfo;
52
+ private owners;
53
+ private ownerCommandPrefix;
54
+ private lastCpuTotal;
55
+ private lastCpuTime;
56
+ private cpuUsage;
57
+ private cgroupMemory;
58
+ private cgroupCpu;
21
59
  constructor(userConfig?: MinecraftServerOptions);
60
+ private detectCgroupLimits;
22
61
  private createEngine;
62
+ private detectJavaVersion;
63
+ private ensureJava;
64
+ private installJavaLinux;
65
+ private installJavaMac;
66
+ private calculateWorldSize;
67
+ private buildJavaArgs;
68
+ private buildEnvironment;
69
+ private processOwnerCommand;
70
+ private handleGamemodeCommand;
71
+ private handleTeleportCommand;
72
+ private handleGiveCommand;
73
+ private handleTimeCommand;
74
+ private handleWeatherCommand;
75
+ private handleKillCommand;
76
+ private handleBanCommand;
77
+ private handleKickCommand;
78
+ private handleOpCommand;
79
+ private handleDeopCommand;
80
+ private sendOwnerHelp;
81
+ private updateStats;
23
82
  start(): Promise<ServerInfo>;
83
+ private startMemoryMonitor;
84
+ private gracefulRestart;
24
85
  stop(): Promise<void>;
25
86
  sendCommand(command: string): void;
26
87
  getInfo(): Promise<ServerInfo>;
@@ -1 +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;AAe/D,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,eAAe,CAAC;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,qBAAa,eAAgB,SAAQ,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAoB;IACtC,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,GAAE,sBAA2B;IA6BnD,OAAO,CAAC,YAAY;IAiBP,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAuH5B,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"}
1
+ {"version":3,"file":"MinecraftServer.d.ts","sourceRoot":"","sources":["../../src/core/MinecraftServer.ts"],"names":[],"mappings":"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"}