@dimzxzzx07/mc-headless 2.2.2 → 2.2.3
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 +652 -776
- package/dist/core/MinecraftServer.d.ts +13 -38
- package/dist/core/MinecraftServer.d.ts.map +1 -1
- package/dist/core/MinecraftServer.js +417 -333
- package/dist/core/MinecraftServer.js.map +1 -1
- package/dist/index.d.ts +19 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -18
- package/dist/index.js.map +1 -1
- package/dist/platforms/GeyserBridge.d.ts +21 -3
- package/dist/platforms/GeyserBridge.d.ts.map +1 -1
- package/dist/platforms/GeyserBridge.js +160 -60
- package/dist/platforms/GeyserBridge.js.map +1 -1
- package/dist/platforms/PluginManager.d.ts +16 -0
- package/dist/platforms/PluginManager.d.ts.map +1 -0
- package/dist/platforms/PluginManager.js +208 -0
- package/dist/platforms/PluginManager.js.map +1 -0
- package/dist/platforms/ViaVersion.d.ts +1 -7
- package/dist/platforms/ViaVersion.d.ts.map +1 -1
- package/dist/platforms/ViaVersion.js +23 -87
- package/dist/platforms/ViaVersion.js.map +1 -1
- package/dist/types/index.d.ts +189 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/core/MinecraftServer.ts +496 -411
- package/src/index.ts +19 -19
- package/src/platforms/GeyserBridge.ts +196 -80
- package/src/platforms/PluginManager.ts +206 -0
- package/src/platforms/ViaVersion.ts +26 -107
- package/src/types/index.ts +206 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeyserBridge.js","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"GeyserBridge.js","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class PluginManager {
|
|
2
|
+
private logger;
|
|
3
|
+
installPlugin(name: string, url: string, pluginsDir: string): Promise<void>;
|
|
4
|
+
installMultiple(plugins: Array<{
|
|
5
|
+
name: string;
|
|
6
|
+
url: string;
|
|
7
|
+
}>, pluginsDir: string): Promise<void>;
|
|
8
|
+
installFromGithub(repo: string, assetName: string, pluginsDir: string): Promise<void>;
|
|
9
|
+
updatePlugin(name: string, url: string, pluginsDir: string): Promise<void>;
|
|
10
|
+
removePlugin(name: string, pluginsDir: string): Promise<void>;
|
|
11
|
+
listPlugins(pluginsDir: string): Promise<string[]>;
|
|
12
|
+
getPluginInfo(pluginName: string, pluginsDir: string): Promise<any>;
|
|
13
|
+
verifyPlugin(pluginName: string, pluginsDir: string): Promise<boolean>;
|
|
14
|
+
cleanupCorruptPlugins(pluginsDir: string): Promise<number>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=PluginManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/platforms/PluginManager.ts"],"names":[],"mappings":"AAWA,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAwB;IAEzB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C3E,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/F,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASlD,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBnE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBtE,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwC1E"}
|
|
@@ -0,0 +1,208 @@
|
|
|
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.PluginManager = void 0;
|
|
40
|
+
const FileUtils_1 = require("../utils/FileUtils");
|
|
41
|
+
const Logger_1 = require("../utils/Logger");
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const axios_1 = __importDefault(require("axios"));
|
|
44
|
+
const fs = __importStar(require("fs-extra"));
|
|
45
|
+
const stream = __importStar(require("stream"));
|
|
46
|
+
const util = __importStar(require("util"));
|
|
47
|
+
const pipeline = util.promisify(stream.pipeline);
|
|
48
|
+
const finished = util.promisify(stream.finished);
|
|
49
|
+
class PluginManager {
|
|
50
|
+
logger = Logger_1.Logger.getInstance();
|
|
51
|
+
async installPlugin(name, url, pluginsDir) {
|
|
52
|
+
const pluginJar = path.join(pluginsDir, `${name}.jar`);
|
|
53
|
+
if (await FileUtils_1.FileUtils.fileExists(pluginJar)) {
|
|
54
|
+
this.logger.info(`${name} already exists, skipping download`);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.logger.info(`Downloading ${name}...`);
|
|
58
|
+
try {
|
|
59
|
+
const response = await (0, axios_1.default)({
|
|
60
|
+
method: 'GET',
|
|
61
|
+
url: url,
|
|
62
|
+
responseType: 'stream',
|
|
63
|
+
timeout: 60000,
|
|
64
|
+
headers: {
|
|
65
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
66
|
+
'Accept': 'application/octet-stream'
|
|
67
|
+
},
|
|
68
|
+
maxRedirects: 5
|
|
69
|
+
});
|
|
70
|
+
if (response.status !== 200) {
|
|
71
|
+
throw new Error(`HTTP ${response.status}`);
|
|
72
|
+
}
|
|
73
|
+
const writer = fs.createWriteStream(pluginJar);
|
|
74
|
+
await pipeline(response.data, writer);
|
|
75
|
+
await finished(writer);
|
|
76
|
+
const stats = await fs.stat(pluginJar);
|
|
77
|
+
if (stats.size < 100000) {
|
|
78
|
+
await fs.remove(pluginJar);
|
|
79
|
+
throw new Error(`File too small: ${stats.size} bytes`);
|
|
80
|
+
}
|
|
81
|
+
this.logger.success(`${name} downloaded (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
85
|
+
this.logger.error(`Failed to download ${name}: ${errorMessage}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async installMultiple(plugins, pluginsDir) {
|
|
89
|
+
for (let i = 0; i < plugins.length; i++) {
|
|
90
|
+
const plugin = plugins[i];
|
|
91
|
+
await this.installPlugin(plugin.name, plugin.url, pluginsDir);
|
|
92
|
+
if (i < plugins.length - 1) {
|
|
93
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async installFromGithub(repo, assetName, pluginsDir) {
|
|
98
|
+
const apiUrl = `https://api.github.com/repos/${repo}/releases/latest`;
|
|
99
|
+
try {
|
|
100
|
+
const response = await axios_1.default.get(apiUrl, {
|
|
101
|
+
headers: {
|
|
102
|
+
'User-Agent': 'Mozilla/5.0'
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
const asset = response.data.assets.find((a) => a.name.includes(assetName));
|
|
106
|
+
if (!asset) {
|
|
107
|
+
throw new Error(`Asset ${assetName} not found in latest release`);
|
|
108
|
+
}
|
|
109
|
+
await this.installPlugin(asset.name.replace('.jar', ''), asset.browser_download_url, pluginsDir);
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
113
|
+
this.logger.error(`Failed to install from GitHub ${repo}: ${errorMessage}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async updatePlugin(name, url, pluginsDir) {
|
|
117
|
+
const pluginJar = path.join(pluginsDir, `${name}.jar`);
|
|
118
|
+
if (await FileUtils_1.FileUtils.fileExists(pluginJar)) {
|
|
119
|
+
await fs.remove(pluginJar);
|
|
120
|
+
}
|
|
121
|
+
await this.installPlugin(name, url, pluginsDir);
|
|
122
|
+
}
|
|
123
|
+
async removePlugin(name, pluginsDir) {
|
|
124
|
+
const pluginJar = path.join(pluginsDir, `${name}.jar`);
|
|
125
|
+
if (await FileUtils_1.FileUtils.fileExists(pluginJar)) {
|
|
126
|
+
await fs.remove(pluginJar);
|
|
127
|
+
this.logger.info(`${name} removed`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async listPlugins(pluginsDir) {
|
|
131
|
+
if (!await FileUtils_1.FileUtils.fileExists(pluginsDir)) {
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
const files = await fs.readdir(pluginsDir);
|
|
135
|
+
return files.filter(f => f.endsWith('.jar')).map(f => f.replace('.jar', ''));
|
|
136
|
+
}
|
|
137
|
+
async getPluginInfo(pluginName, pluginsDir) {
|
|
138
|
+
const pluginJar = path.join(pluginsDir, `${pluginName}.jar`);
|
|
139
|
+
if (!await FileUtils_1.FileUtils.fileExists(pluginJar)) {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
const stats = await fs.stat(pluginJar);
|
|
143
|
+
return {
|
|
144
|
+
name: pluginName,
|
|
145
|
+
size: stats.size,
|
|
146
|
+
modified: stats.mtime,
|
|
147
|
+
path: pluginJar
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
async verifyPlugin(pluginName, pluginsDir) {
|
|
151
|
+
const pluginJar = path.join(pluginsDir, `${pluginName}.jar`);
|
|
152
|
+
if (!await FileUtils_1.FileUtils.fileExists(pluginJar)) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
const stats = await fs.stat(pluginJar);
|
|
156
|
+
if (stats.size < 100000) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
const buffer = await fs.readFile(pluginJar);
|
|
161
|
+
if (buffer[0] !== 0x50 || buffer[1] !== 0x4B) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
async cleanupCorruptPlugins(pluginsDir) {
|
|
171
|
+
if (!await FileUtils_1.FileUtils.fileExists(pluginsDir)) {
|
|
172
|
+
return 0;
|
|
173
|
+
}
|
|
174
|
+
let cleaned = 0;
|
|
175
|
+
const files = await fs.readdir(pluginsDir);
|
|
176
|
+
for (const file of files) {
|
|
177
|
+
if (!file.endsWith('.jar'))
|
|
178
|
+
continue;
|
|
179
|
+
const filePath = path.join(pluginsDir, file);
|
|
180
|
+
try {
|
|
181
|
+
const stats = await fs.stat(filePath);
|
|
182
|
+
if (stats.size < 100000) {
|
|
183
|
+
await fs.remove(filePath);
|
|
184
|
+
this.logger.warning(`Removed corrupt plugin: ${file}`);
|
|
185
|
+
cleaned++;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const buffer = await fs.readFile(filePath);
|
|
189
|
+
if (buffer[0] !== 0x50 || buffer[1] !== 0x4B) {
|
|
190
|
+
await fs.remove(filePath);
|
|
191
|
+
this.logger.warning(`Removed invalid ZIP: ${file}`);
|
|
192
|
+
cleaned++;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
await fs.remove(filePath);
|
|
197
|
+
this.logger.warning(`Removed inaccessible plugin: ${file}`);
|
|
198
|
+
cleaned++;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (cleaned > 0) {
|
|
202
|
+
this.logger.info(`Cleaned up ${cleaned} corrupt plugins`);
|
|
203
|
+
}
|
|
204
|
+
return cleaned;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.PluginManager = PluginManager;
|
|
208
|
+
//# sourceMappingURL=PluginManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/platforms/PluginManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
import { MinecraftConfig } from '../types';
|
|
2
|
-
export interface ViaVersionInfo {
|
|
3
|
-
version: string;
|
|
4
|
-
downloadUrl: string;
|
|
5
|
-
fileName: string;
|
|
6
|
-
}
|
|
7
2
|
export declare class ViaVersionManager {
|
|
8
3
|
private logger;
|
|
9
4
|
private readonly VIAVERSION_URL;
|
|
10
5
|
private readonly VIABACKWARDS_URL;
|
|
11
6
|
private readonly VIAREWIND_URL;
|
|
12
7
|
setup(config: MinecraftConfig): Promise<void>;
|
|
13
|
-
private
|
|
8
|
+
private cleanupRemappedFolders;
|
|
14
9
|
private downloadFile;
|
|
15
10
|
private downloadViaVersion;
|
|
16
11
|
private downloadViaBackwards;
|
|
17
12
|
private downloadViaRewind;
|
|
18
|
-
private verifyAllPlugins;
|
|
19
13
|
configureViaVersion(config: MinecraftConfig): Promise<void>;
|
|
20
14
|
}
|
|
21
15
|
//# sourceMappingURL=ViaVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViaVersion.d.ts","sourceRoot":"","sources":["../../src/platforms/ViaVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ViaVersion.d.ts","sourceRoot":"","sources":["../../src/platforms/ViaVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAY3C,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAwB;IAEtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2F;IAC1H,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+F;IAChI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2F;IAE5G,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAiB5C,sBAAsB;YAgBtB,YAAY;YAoCZ,kBAAkB;YAKlB,oBAAoB;YAKpB,iBAAiB;IAKlB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CA6B3E"}
|
|
@@ -42,6 +42,10 @@ const Logger_1 = require("../utils/Logger");
|
|
|
42
42
|
const path = __importStar(require("path"));
|
|
43
43
|
const axios_1 = __importDefault(require("axios"));
|
|
44
44
|
const fs = __importStar(require("fs-extra"));
|
|
45
|
+
const stream = __importStar(require("stream"));
|
|
46
|
+
const util = __importStar(require("util"));
|
|
47
|
+
const pipeline = util.promisify(stream.pipeline);
|
|
48
|
+
const finished = util.promisify(stream.finished);
|
|
45
49
|
class ViaVersionManager {
|
|
46
50
|
logger = Logger_1.Logger.getInstance();
|
|
47
51
|
VIAVERSION_URL = 'https://github.com/ViaVersion/ViaVersion/releases/download/5.7.2/ViaVersion-5.7.2.jar';
|
|
@@ -51,48 +55,33 @@ class ViaVersionManager {
|
|
|
51
55
|
const pluginsDir = config.folders.plugins;
|
|
52
56
|
await FileUtils_1.FileUtils.ensureDir(pluginsDir);
|
|
53
57
|
this.logger.info('Setting up ViaVersion, ViaBackwards, ViaRewind...');
|
|
54
|
-
await this.
|
|
58
|
+
await this.cleanupRemappedFolders(pluginsDir);
|
|
55
59
|
await this.downloadViaVersion(pluginsDir);
|
|
60
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
56
61
|
await this.downloadViaBackwards(pluginsDir);
|
|
57
62
|
await this.downloadViaRewind(pluginsDir);
|
|
58
|
-
await this.verifyAllPlugins(pluginsDir);
|
|
59
63
|
this.logger.success('ViaVersion suite installed successfully');
|
|
60
|
-
this.logger.info('Players from older versions can now connect to your server');
|
|
61
64
|
}
|
|
62
|
-
async
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
const stats = await fs.stat(filePath);
|
|
73
|
-
if (stats.size < 100000) {
|
|
74
|
-
this.logger.warning(`Corrupt ${file.name} detected (${stats.size} bytes), removing...`);
|
|
75
|
-
await fs.remove(filePath);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
const buffer = await fs.readFile(filePath);
|
|
79
|
-
if (buffer[0] !== 0x50 || buffer[1] !== 0x4B) {
|
|
80
|
-
this.logger.warning(`Invalid ZIP header in ${file.name}, removing...`);
|
|
81
|
-
await fs.remove(filePath);
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this.logger.info(`${file.name} is valid, keeping it`);
|
|
85
|
-
}
|
|
65
|
+
async cleanupRemappedFolders(pluginsDir) {
|
|
66
|
+
try {
|
|
67
|
+
const files = await fs.readdir(pluginsDir);
|
|
68
|
+
for (const file of files) {
|
|
69
|
+
if (file.includes('.paper-remapped')) {
|
|
70
|
+
const remappedPath = path.join(pluginsDir, file);
|
|
71
|
+
const stat = await fs.stat(remappedPath);
|
|
72
|
+
if (stat.isDirectory()) {
|
|
73
|
+
await fs.remove(remappedPath);
|
|
86
74
|
}
|
|
87
75
|
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
this.logger.warning(`Error checking ${file.name}, removing...`);
|
|
90
|
-
await fs.remove(filePath);
|
|
91
|
-
}
|
|
92
76
|
}
|
|
93
77
|
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
}
|
|
94
80
|
}
|
|
95
81
|
async downloadFile(url, destPath, fileName) {
|
|
82
|
+
if (await FileUtils_1.FileUtils.fileExists(destPath)) {
|
|
83
|
+
await fs.remove(destPath);
|
|
84
|
+
}
|
|
96
85
|
this.logger.info(`Downloading ${fileName}...`);
|
|
97
86
|
try {
|
|
98
87
|
const response = await (0, axios_1.default)({
|
|
@@ -105,20 +94,13 @@ class ViaVersionManager {
|
|
|
105
94
|
}
|
|
106
95
|
});
|
|
107
96
|
const writer = fs.createWriteStream(destPath);
|
|
108
|
-
response.data
|
|
109
|
-
await
|
|
110
|
-
writer.on('finish', () => resolve());
|
|
111
|
-
writer.on('error', (err) => reject(err));
|
|
112
|
-
});
|
|
97
|
+
await pipeline(response.data, writer);
|
|
98
|
+
await finished(writer);
|
|
113
99
|
const stats = await fs.stat(destPath);
|
|
114
100
|
if (stats.size < 100000) {
|
|
115
101
|
throw new Error(`Downloaded file too small: ${stats.size} bytes`);
|
|
116
102
|
}
|
|
117
|
-
|
|
118
|
-
if (buffer[0] !== 0x50 || buffer[1] !== 0x4B) {
|
|
119
|
-
throw new Error('Invalid ZIP header');
|
|
120
|
-
}
|
|
121
|
-
this.logger.success(`Downloaded: ${fileName} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
103
|
+
this.logger.success(`Downloaded ${fileName} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
122
104
|
}
|
|
123
105
|
catch (error) {
|
|
124
106
|
this.logger.error(`Failed to download ${fileName}:`, error);
|
|
@@ -127,67 +109,22 @@ class ViaVersionManager {
|
|
|
127
109
|
}
|
|
128
110
|
async downloadViaVersion(pluginsDir) {
|
|
129
111
|
const destPath = path.join(pluginsDir, 'ViaVersion.jar');
|
|
130
|
-
if (await FileUtils_1.FileUtils.fileExists(destPath)) {
|
|
131
|
-
await fs.remove(destPath);
|
|
132
|
-
}
|
|
133
112
|
await this.downloadFile(this.VIAVERSION_URL, destPath, 'ViaVersion.jar');
|
|
134
113
|
}
|
|
135
114
|
async downloadViaBackwards(pluginsDir) {
|
|
136
115
|
const destPath = path.join(pluginsDir, 'ViaBackwards.jar');
|
|
137
|
-
if (await FileUtils_1.FileUtils.fileExists(destPath)) {
|
|
138
|
-
await fs.remove(destPath);
|
|
139
|
-
}
|
|
140
116
|
await this.downloadFile(this.VIABACKWARDS_URL, destPath, 'ViaBackwards.jar');
|
|
141
117
|
}
|
|
142
118
|
async downloadViaRewind(pluginsDir) {
|
|
143
119
|
const destPath = path.join(pluginsDir, 'ViaRewind.jar');
|
|
144
|
-
if (await FileUtils_1.FileUtils.fileExists(destPath)) {
|
|
145
|
-
await fs.remove(destPath);
|
|
146
|
-
}
|
|
147
120
|
await this.downloadFile(this.VIAREWIND_URL, destPath, 'ViaRewind.jar');
|
|
148
121
|
}
|
|
149
|
-
async verifyAllPlugins(pluginsDir) {
|
|
150
|
-
const files = ['ViaVersion.jar', 'ViaBackwards.jar', 'ViaRewind.jar'];
|
|
151
|
-
let allValid = true;
|
|
152
|
-
for (const file of files) {
|
|
153
|
-
const filePath = path.join(pluginsDir, file);
|
|
154
|
-
if (!await FileUtils_1.FileUtils.fileExists(filePath)) {
|
|
155
|
-
this.logger.error(`${file} is missing!`);
|
|
156
|
-
allValid = false;
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
try {
|
|
160
|
-
const stats = await fs.stat(filePath);
|
|
161
|
-
if (stats.size < 100000) {
|
|
162
|
-
this.logger.error(`${file} is too small: ${stats.size} bytes`);
|
|
163
|
-
allValid = false;
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
const buffer = await fs.readFile(filePath);
|
|
167
|
-
if (buffer[0] !== 0x50 || buffer[1] !== 0x4B) {
|
|
168
|
-
this.logger.error(`${file} has invalid ZIP header`);
|
|
169
|
-
allValid = false;
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
this.logger.debug(`${file} verified OK (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
this.logger.error(`Failed to verify ${file}:`, error);
|
|
176
|
-
allValid = false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (!allValid) {
|
|
180
|
-
throw new Error('Some ViaVersion plugins are corrupt or missing');
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
122
|
async configureViaVersion(config) {
|
|
184
123
|
const pluginsDir = config.folders.plugins;
|
|
185
124
|
const viaConfigDir = path.join(pluginsDir, 'ViaVersion');
|
|
186
125
|
await FileUtils_1.FileUtils.ensureDir(viaConfigDir);
|
|
187
126
|
const configFile = path.join(viaConfigDir, 'config.yml');
|
|
188
127
|
const configContent = `# ViaVersion Configuration
|
|
189
|
-
# Auto-generated by mc-headless
|
|
190
|
-
|
|
191
128
|
enable-client-side-block-updates: true
|
|
192
129
|
prevent-collision: true
|
|
193
130
|
auto-team: true
|
|
@@ -207,7 +144,6 @@ force-json-transform: false
|
|
|
207
144
|
use-natives: true
|
|
208
145
|
`;
|
|
209
146
|
await FileUtils_1.FileUtils.writeFile(configFile, configContent);
|
|
210
|
-
this.logger.debug('ViaVersion configuration created');
|
|
211
147
|
}
|
|
212
148
|
}
|
|
213
149
|
exports.ViaVersionManager = ViaVersionManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViaVersion.js","sourceRoot":"","sources":["../../src/platforms/ViaVersion.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,4CAAyC;AACzC,2CAA6B;AAC7B,kDAA0B;AAC1B,6CAA+B;
|
|
1
|
+
{"version":3,"file":"ViaVersion.js","sourceRoot":"","sources":["../../src/platforms/ViaVersion.ts"],"names":[],"mappings":"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"}
|