@dimzxzzx07/mc-headless 1.8.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.
- package/README.md +317 -703
- package/dist/core/JavaChecker.d.ts +16 -3
- package/dist/core/JavaChecker.d.ts.map +1 -1
- package/dist/core/JavaChecker.js +171 -65
- package/dist/core/JavaChecker.js.map +1 -1
- package/dist/core/MinecraftServer.d.ts +15 -0
- package/dist/core/MinecraftServer.d.ts.map +1 -1
- package/dist/core/MinecraftServer.js +200 -110
- package/dist/core/MinecraftServer.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -16
- package/dist/index.js.map +1 -1
- package/dist/platforms/BedrockServer.d.ts.map +1 -1
- package/dist/platforms/BedrockServer.js +2 -0
- package/dist/platforms/BedrockServer.js.map +1 -1
- package/dist/platforms/JavaServer.d.ts.map +1 -1
- package/dist/platforms/JavaServer.js +2 -0
- package/dist/platforms/JavaServer.js.map +1 -1
- package/dist/platforms/SkinRestorer.d.ts +14 -0
- package/dist/platforms/SkinRestorer.d.ts.map +1 -0
- package/dist/platforms/SkinRestorer.js +145 -0
- package/dist/platforms/SkinRestorer.js.map +1 -0
- package/dist/platforms/SkinsRestorer.d.ts +14 -0
- package/dist/platforms/SkinsRestorer.d.ts.map +1 -0
- package/dist/platforms/SkinsRestorer.js +145 -0
- package/dist/platforms/SkinsRestorer.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/JavaChecker.ts +162 -61
- package/src/core/MinecraftServer.ts +233 -120
- package/src/index.ts +33 -17
- package/src/platforms/BedrockServer.ts +2 -0
- package/src/platforms/JavaServer.ts +2 -0
- package/src/platforms/SkinRestorer.ts +127 -0
- 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
|
|
5
|
-
static
|
|
6
|
-
static
|
|
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":"
|
|
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"}
|
package/dist/core/JavaChecker.js
CHANGED
|
@@ -1,26 +1,77 @@
|
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
65
|
+
static getSystemJavaPath() {
|
|
66
|
+
try {
|
|
67
|
+
const stdout = (0, child_process_1.execSync)('which java').toString().trim();
|
|
68
|
+
return stdout || null;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
static getSystemJavaVersion() {
|
|
24
75
|
try {
|
|
25
76
|
const output = (0, child_process_1.execSync)('java -version 2>&1').toString();
|
|
26
77
|
if (output.includes('version "21'))
|
|
@@ -38,73 +89,128 @@ class JavaChecker {
|
|
|
38
89
|
return null;
|
|
39
90
|
}
|
|
40
91
|
}
|
|
41
|
-
static async
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
+
};
|
|
47
105
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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;
|
|
55
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
|
+
};
|
|
56
143
|
}
|
|
57
|
-
static
|
|
58
|
-
const osType = SystemDetector_1.SystemDetector.getOS();
|
|
59
|
-
const distro = SystemDetector_1.SystemDetector.getDistro();
|
|
60
|
-
const targetVersion = version === 'auto' ? '17' : version;
|
|
61
|
-
let command = '';
|
|
62
|
-
const javaPackage = targetVersion === '21' ? 'openjdk-21-jre-headless' : 'openjdk-17-jre-headless';
|
|
63
|
-
if (osType === 'linux' || osType === 'android') {
|
|
64
|
-
if (distro === 'ubuntu' || distro === 'debian') {
|
|
65
|
-
command = `apt update && apt install -y ${javaPackage}`;
|
|
66
|
-
}
|
|
67
|
-
else if (distro === 'centos' || distro === 'fedora') {
|
|
68
|
-
command = `yum install -y java-${targetVersion}-openjdk-headless`;
|
|
69
|
-
}
|
|
70
|
-
else if (distro === 'arch') {
|
|
71
|
-
const archPackage = targetVersion === '21' ? 'jre21-openjdk-headless' : 'jre17-openjdk-headless';
|
|
72
|
-
command = `pacman -S --noconfirm ${archPackage}`;
|
|
73
|
-
}
|
|
74
|
-
else if (distro === 'termux') {
|
|
75
|
-
command = 'pkg install -y openjdk-17';
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
command = `curl -s https://raw.githubusercontent.com/Dimzxzzx07/mc-headless/main/scripts/install-java.sh | bash -s ${targetVersion}`;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
else if (osType === 'darwin') {
|
|
82
|
-
command = `brew install openjdk@${targetVersion}`;
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
this.logger.error('Automatic Java installation not supported on this OS');
|
|
86
|
-
throw new Error('Java not installed');
|
|
87
|
-
}
|
|
88
|
-
this.logger.info(`Installing Java ${targetVersion} with: ${command}`);
|
|
144
|
+
static downloadFile(url, destPath) {
|
|
89
145
|
return new Promise((resolve, reject) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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;
|
|
94
152
|
}
|
|
95
|
-
|
|
96
|
-
|
|
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();
|
|
97
166
|
resolve();
|
|
98
|
-
}
|
|
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);
|
|
99
175
|
});
|
|
100
|
-
if (child.stdout) {
|
|
101
|
-
child.stdout.pipe(process.stdout);
|
|
102
|
-
}
|
|
103
|
-
if (child.stderr) {
|
|
104
|
-
child.stderr.pipe(process.stderr);
|
|
105
|
-
}
|
|
106
176
|
});
|
|
107
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
|
+
}
|
|
108
214
|
}
|
|
109
215
|
exports.JavaChecker = JavaChecker;
|
|
110
216
|
//# sourceMappingURL=JavaChecker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JavaChecker.js","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JavaChecker.js","sourceRoot":"","sources":["../../src/core/JavaChecker.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,11 @@ 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;
|
|
8
9
|
customJavaArgs?: string[];
|
|
9
10
|
javaVersion?: '17' | '21' | 'auto';
|
|
11
|
+
usePortableJava?: boolean;
|
|
10
12
|
memoryMonitor?: {
|
|
11
13
|
enabled: boolean;
|
|
12
14
|
threshold: number;
|
|
@@ -24,6 +26,8 @@ export interface MinecraftServerOptions extends Partial<MinecraftConfig> {
|
|
|
24
26
|
prefix: string;
|
|
25
27
|
enabled: boolean;
|
|
26
28
|
};
|
|
29
|
+
silentMode?: boolean;
|
|
30
|
+
statsInterval?: number;
|
|
27
31
|
}
|
|
28
32
|
export declare class MinecraftServer extends EventEmitter {
|
|
29
33
|
private config;
|
|
@@ -32,19 +36,28 @@ export declare class MinecraftServer extends EventEmitter {
|
|
|
32
36
|
private engine;
|
|
33
37
|
private geyser;
|
|
34
38
|
private viaVersion;
|
|
39
|
+
private skinRestorer;
|
|
35
40
|
private process;
|
|
36
41
|
private serverInfo;
|
|
37
42
|
private players;
|
|
38
43
|
private backupCron;
|
|
39
44
|
private startTime;
|
|
40
45
|
private memoryMonitorInterval;
|
|
46
|
+
private statsInterval;
|
|
41
47
|
private memoryUsageHistory;
|
|
42
48
|
private worldSize;
|
|
43
49
|
private playerCount;
|
|
44
50
|
private javaCommand;
|
|
51
|
+
private javaInfo;
|
|
45
52
|
private owners;
|
|
46
53
|
private ownerCommandPrefix;
|
|
54
|
+
private lastCpuTotal;
|
|
55
|
+
private lastCpuTime;
|
|
56
|
+
private cpuUsage;
|
|
57
|
+
private cgroupMemory;
|
|
58
|
+
private cgroupCpu;
|
|
47
59
|
constructor(userConfig?: MinecraftServerOptions);
|
|
60
|
+
private detectCgroupLimits;
|
|
48
61
|
private createEngine;
|
|
49
62
|
private detectJavaVersion;
|
|
50
63
|
private ensureJava;
|
|
@@ -52,6 +65,7 @@ export declare class MinecraftServer extends EventEmitter {
|
|
|
52
65
|
private installJavaMac;
|
|
53
66
|
private calculateWorldSize;
|
|
54
67
|
private buildJavaArgs;
|
|
68
|
+
private buildEnvironment;
|
|
55
69
|
private processOwnerCommand;
|
|
56
70
|
private handleGamemodeCommand;
|
|
57
71
|
private handleTeleportCommand;
|
|
@@ -64,6 +78,7 @@ export declare class MinecraftServer extends EventEmitter {
|
|
|
64
78
|
private handleOpCommand;
|
|
65
79
|
private handleDeopCommand;
|
|
66
80
|
private sendOwnerHelp;
|
|
81
|
+
private updateStats;
|
|
67
82
|
start(): Promise<ServerInfo>;
|
|
68
83
|
private startMemoryMonitor;
|
|
69
84
|
private gracefulRestart;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"MinecraftServer.d.ts","sourceRoot":"","sources":["../../src/core/MinecraftServer.ts"],"names":[],"mappings":"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"}
|