@dimzxzzx07/mc-headless 1.3.0 → 1.5.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/dist/engines/Downloader.d.ts.map +1 -1
- package/dist/engines/Downloader.js +19 -15
- package/dist/engines/Downloader.js.map +1 -1
- package/dist/platforms/GeyserBridge.d.ts.map +1 -1
- package/dist/platforms/GeyserBridge.js +18 -10
- package/dist/platforms/GeyserBridge.js.map +1 -1
- package/package.json +1 -1
- package/src/engines/Downloader.ts +32 -25
- package/src/platforms/GeyserBridge.ts +22 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Downloader.d.ts","sourceRoot":"","sources":["../../src/engines/Downloader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwB;WAEzB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Downloader.d.ts","sourceRoot":"","sources":["../../src/engines/Downloader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,UAAU;IACnB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAwB;WAEzB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAyElE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;WAkBpE,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;WAetC,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;WAe/C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;WAO3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;WAO5C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;WAO3C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;WAO1C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAOzD,OAAO,CAAC,MAAM,CAAC,cAAc;mBAYR,aAAa;CAMrC"}
|
|
@@ -46,6 +46,13 @@ class Downloader {
|
|
|
46
46
|
static logger = Logger_1.Logger.getInstance();
|
|
47
47
|
static async downloadFile(info, destDir) {
|
|
48
48
|
const destPath = path.join(destDir, info.fileName);
|
|
49
|
+
if (destPath.includes('.jar/') || destPath.includes('.jar\\')) {
|
|
50
|
+
throw new Error(`Invalid destination path: ${destPath} - contains .jar as directory`);
|
|
51
|
+
}
|
|
52
|
+
const parentDir = path.dirname(destPath);
|
|
53
|
+
if (parentDir.includes('.jar')) {
|
|
54
|
+
throw new Error(`Invalid parent directory: ${parentDir} - contains .jar in path`);
|
|
55
|
+
}
|
|
49
56
|
if (fs.existsSync(destPath)) {
|
|
50
57
|
this.logger.warning(`File ${destPath} already exists, removing...`);
|
|
51
58
|
await fs.remove(destPath);
|
|
@@ -71,25 +78,22 @@ class Downloader {
|
|
|
71
78
|
return new Promise((resolve, reject) => {
|
|
72
79
|
writer.on('finish', async () => {
|
|
73
80
|
process.stdout.write('\n');
|
|
81
|
+
const stats = await fs.stat(destPath);
|
|
74
82
|
if (info.sha1) {
|
|
75
|
-
const hash = await
|
|
83
|
+
const hash = await Downloader.calculateSHA1(destPath);
|
|
76
84
|
if (hash !== info.sha1) {
|
|
77
85
|
await fs.remove(destPath);
|
|
78
86
|
reject(new Error(`SHA1 mismatch for ${info.fileName}`));
|
|
79
87
|
return;
|
|
80
88
|
}
|
|
81
|
-
|
|
89
|
+
Downloader.logger.success('SHA1 verified');
|
|
82
90
|
}
|
|
83
|
-
if (info.size) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
reject(new Error(`Size mismatch for ${info.fileName}`));
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
91
|
+
if (info.size && stats.size !== info.size) {
|
|
92
|
+
await fs.remove(destPath);
|
|
93
|
+
reject(new Error(`Size mismatch for ${info.fileName}`));
|
|
94
|
+
return;
|
|
90
95
|
}
|
|
91
|
-
|
|
92
|
-
this.logger.success(`Downloaded: ${info.fileName} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
96
|
+
Downloader.logger.success(`Downloaded: ${info.fileName} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
93
97
|
resolve(destPath);
|
|
94
98
|
});
|
|
95
99
|
writer.on('error', reject);
|
|
@@ -108,7 +112,7 @@ class Downloader {
|
|
|
108
112
|
};
|
|
109
113
|
}
|
|
110
114
|
catch (error) {
|
|
111
|
-
|
|
115
|
+
Downloader.logger.error(`Failed to get Paper info: ${error}`);
|
|
112
116
|
throw error;
|
|
113
117
|
}
|
|
114
118
|
}
|
|
@@ -117,12 +121,12 @@ class Downloader {
|
|
|
117
121
|
const res = await axios_1.default.get('https://download.geysermc.org/v2/projects/geyser/versions/latest');
|
|
118
122
|
const latestBuild = res.data.builds[res.data.builds.length - 1];
|
|
119
123
|
return {
|
|
120
|
-
url: `https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/${latestBuild}/downloads/
|
|
124
|
+
url: `https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/${latestBuild}/downloads/spigot`,
|
|
121
125
|
fileName: 'geyser.jar'
|
|
122
126
|
};
|
|
123
127
|
}
|
|
124
128
|
catch (error) {
|
|
125
|
-
|
|
129
|
+
Downloader.logger.error(`Failed to get Geyser info: ${error}`);
|
|
126
130
|
throw error;
|
|
127
131
|
}
|
|
128
132
|
}
|
|
@@ -136,7 +140,7 @@ class Downloader {
|
|
|
136
140
|
};
|
|
137
141
|
}
|
|
138
142
|
catch (error) {
|
|
139
|
-
|
|
143
|
+
Downloader.logger.error(`Failed to get Floodgate info: ${error}`);
|
|
140
144
|
throw error;
|
|
141
145
|
}
|
|
142
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Downloader.js","sourceRoot":"","sources":["../../src/engines/Downloader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,6CAA+B;AAC/B,2CAA6B;AAC7B,mCAAoC;AACpC,4CAAyC;AAGzC,MAAa,UAAU;IACX,MAAM,CAAC,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;IAEtC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAkB,EAAE,OAAe;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,QAAQ,8BAA8B,CAAC,CAAC;YACpE,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,QAAQ,OAAO,OAAO,KAAK,CAAC,CAAC;QAElE,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;YACzB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,YAAY,EAAE,QAAQ;SACzB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEvD,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACvC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;YACjC,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,CAAC,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,CAAC;YACzE,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE3B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,MAAM,IAAI,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"Downloader.js","sourceRoot":"","sources":["../../src/engines/Downloader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeyserBridge.d.ts","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAa;IAEf,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"GeyserBridge.d.ts","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAO3C,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAa;IAEf,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C7C,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ChF,IAAI,IAAI,IAAI;CAOtB"}
|
|
@@ -49,22 +49,26 @@ class GeyserBridge {
|
|
|
49
49
|
const floodgateJar = path.join(pluginsDir, 'floodgate.jar');
|
|
50
50
|
if (!await FileUtils_1.FileUtils.fileExists(geyserJar)) {
|
|
51
51
|
this.logger.info('Downloading Geyser...');
|
|
52
|
-
// Download ke folder plugins langsung, bukan pindah-pindah
|
|
53
52
|
const geyserInfo = await Downloader_1.Downloader.getGeyserInfo();
|
|
54
|
-
// Set fileName jadi geyser.jar langsung
|
|
55
53
|
geyserInfo.fileName = 'geyser.jar';
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const downloadedPath = await Downloader_1.Downloader.downloadFile(geyserInfo, pluginsDir);
|
|
55
|
+
if (downloadedPath && downloadedPath !== geyserJar) {
|
|
56
|
+
if (await FileUtils_1.FileUtils.fileExists(downloadedPath)) {
|
|
57
|
+
await FileUtils_1.FileUtils.moveFile(downloadedPath, geyserJar);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
58
60
|
this.logger.success('Geyser downloaded to plugins folder');
|
|
59
61
|
}
|
|
60
62
|
if (!await FileUtils_1.FileUtils.fileExists(floodgateJar)) {
|
|
61
63
|
this.logger.info('Downloading Floodgate...');
|
|
62
|
-
// Download ke folder plugins langsung
|
|
63
64
|
const floodgateInfo = await Downloader_1.Downloader.getFloodgateInfo();
|
|
64
|
-
// Set fileName jadi floodgate.jar langsung
|
|
65
65
|
floodgateInfo.fileName = 'floodgate.jar';
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
const downloadedPath = await Downloader_1.Downloader.downloadFile(floodgateInfo, pluginsDir);
|
|
67
|
+
if (downloadedPath && downloadedPath !== floodgateJar) {
|
|
68
|
+
if (await FileUtils_1.FileUtils.fileExists(downloadedPath)) {
|
|
69
|
+
await FileUtils_1.FileUtils.moveFile(downloadedPath, floodgateJar);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
68
72
|
this.logger.success('Floodgate downloaded to plugins folder');
|
|
69
73
|
}
|
|
70
74
|
this.logger.success('Geyser & Floodgate installed');
|
|
@@ -77,8 +81,12 @@ class GeyserBridge {
|
|
|
77
81
|
this.logger.info('Downloading Geyser standalone...');
|
|
78
82
|
const geyserInfo = await Downloader_1.Downloader.getGeyserInfo();
|
|
79
83
|
geyserInfo.fileName = 'geyser.jar';
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
const downloadedPath = await Downloader_1.Downloader.downloadFile(geyserInfo, geyserDir);
|
|
85
|
+
if (downloadedPath && downloadedPath !== geyserJar) {
|
|
86
|
+
if (await FileUtils_1.FileUtils.fileExists(downloadedPath)) {
|
|
87
|
+
await FileUtils_1.FileUtils.moveFile(downloadedPath, geyserJar);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
82
90
|
this.logger.success('Geyser standalone downloaded');
|
|
83
91
|
}
|
|
84
92
|
const javaArgs = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeyserBridge.js","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sDAAmD;AACnD,kDAA+C;AAC/C,4CAAyC;AACzC,2CAA6B;AAC7B,iDAAsC;AAEtC,MAAa,YAAY;IACb,MAAM,GAAG,eAAM,CAAC,WAAW,EAAE,CAAC;IAC9B,OAAO,GAAQ,IAAI,CAAC;IAErB,KAAK,CAAC,KAAK,CAAC,MAAuB;QACtC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GeyserBridge.js","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,6 +11,15 @@ export class Downloader {
|
|
|
11
11
|
public static async downloadFile(info: DownloadInfo, destDir: string): Promise<string> {
|
|
12
12
|
const destPath = path.join(destDir, info.fileName);
|
|
13
13
|
|
|
14
|
+
if (destPath.includes('.jar/') || destPath.includes('.jar\\')) {
|
|
15
|
+
throw new Error(`Invalid destination path: ${destPath} - contains .jar as directory`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const parentDir = path.dirname(destPath);
|
|
19
|
+
if (parentDir.includes('.jar')) {
|
|
20
|
+
throw new Error(`Invalid parent directory: ${parentDir} - contains .jar in path`);
|
|
21
|
+
}
|
|
22
|
+
|
|
14
23
|
if (fs.existsSync(destPath)) {
|
|
15
24
|
this.logger.warning(`File ${destPath} already exists, removing...`);
|
|
16
25
|
await fs.remove(destPath);
|
|
@@ -46,27 +55,25 @@ export class Downloader {
|
|
|
46
55
|
writer.on('finish', async () => {
|
|
47
56
|
process.stdout.write('\n');
|
|
48
57
|
|
|
58
|
+
const stats = await fs.stat(destPath);
|
|
59
|
+
|
|
49
60
|
if (info.sha1) {
|
|
50
|
-
const hash = await
|
|
61
|
+
const hash = await Downloader.calculateSHA1(destPath);
|
|
51
62
|
if (hash !== info.sha1) {
|
|
52
63
|
await fs.remove(destPath);
|
|
53
64
|
reject(new Error(`SHA1 mismatch for ${info.fileName}`));
|
|
54
65
|
return;
|
|
55
66
|
}
|
|
56
|
-
|
|
67
|
+
Downloader.logger.success('SHA1 verified');
|
|
57
68
|
}
|
|
58
69
|
|
|
59
|
-
if (info.size) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
reject(new Error(`Size mismatch for ${info.fileName}`));
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
70
|
+
if (info.size && stats.size !== info.size) {
|
|
71
|
+
await fs.remove(destPath);
|
|
72
|
+
reject(new Error(`Size mismatch for ${info.fileName}`));
|
|
73
|
+
return;
|
|
66
74
|
}
|
|
67
75
|
|
|
68
|
-
|
|
69
|
-
this.logger.success(`Downloaded: ${info.fileName} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
76
|
+
Downloader.logger.success(`Downloaded: ${info.fileName} (${(stats.size / 1024 / 1024).toFixed(2)} MB)`);
|
|
70
77
|
resolve(destPath);
|
|
71
78
|
});
|
|
72
79
|
|
|
@@ -87,25 +94,25 @@ export class Downloader {
|
|
|
87
94
|
fileName: `paper-${version}.jar`
|
|
88
95
|
};
|
|
89
96
|
} catch (error) {
|
|
90
|
-
|
|
97
|
+
Downloader.logger.error(`Failed to get Paper info: ${error}`);
|
|
91
98
|
throw error;
|
|
92
99
|
}
|
|
93
100
|
}
|
|
94
101
|
|
|
95
102
|
public static async getGeyserInfo(): Promise<DownloadInfo> {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
103
|
+
try {
|
|
104
|
+
const res = await axios.get('https://download.geysermc.org/v2/projects/geyser/versions/latest');
|
|
105
|
+
const latestBuild = res.data.builds[res.data.builds.length - 1];
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
url: `https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/${latestBuild}/downloads/spigot`,
|
|
109
|
+
fileName: 'geyser.jar'
|
|
110
|
+
};
|
|
111
|
+
} catch (error) {
|
|
112
|
+
Downloader.logger.error(`Failed to get Geyser info: ${error}`);
|
|
113
|
+
throw error;
|
|
108
114
|
}
|
|
115
|
+
}
|
|
109
116
|
|
|
110
117
|
public static async getFloodgateInfo(): Promise<DownloadInfo> {
|
|
111
118
|
try {
|
|
@@ -117,7 +124,7 @@ export class Downloader {
|
|
|
117
124
|
fileName: 'floodgate.jar'
|
|
118
125
|
};
|
|
119
126
|
} catch (error) {
|
|
120
|
-
|
|
127
|
+
Downloader.logger.error(`Failed to get Floodgate info: ${error}`);
|
|
121
128
|
throw error;
|
|
122
129
|
}
|
|
123
130
|
}
|
|
@@ -11,6 +11,7 @@ export class GeyserBridge {
|
|
|
11
11
|
|
|
12
12
|
public async setup(config: MinecraftConfig): Promise<void> {
|
|
13
13
|
const pluginsDir = config.folders.plugins;
|
|
14
|
+
|
|
14
15
|
await FileUtils.ensureDir(pluginsDir);
|
|
15
16
|
|
|
16
17
|
const geyserJar = path.join(pluginsDir, 'geyser.jar');
|
|
@@ -19,14 +20,17 @@ export class GeyserBridge {
|
|
|
19
20
|
if (!await FileUtils.fileExists(geyserJar)) {
|
|
20
21
|
this.logger.info('Downloading Geyser...');
|
|
21
22
|
|
|
22
|
-
// Download ke folder plugins langsung, bukan pindah-pindah
|
|
23
23
|
const geyserInfo = await Downloader.getGeyserInfo();
|
|
24
24
|
|
|
25
|
-
// Set fileName jadi geyser.jar langsung
|
|
26
25
|
geyserInfo.fileName = 'geyser.jar';
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const downloadedPath = await Downloader.downloadFile(geyserInfo, pluginsDir);
|
|
28
|
+
|
|
29
|
+
if (downloadedPath && downloadedPath !== geyserJar) {
|
|
30
|
+
if (await FileUtils.fileExists(downloadedPath)) {
|
|
31
|
+
await FileUtils.moveFile(downloadedPath, geyserJar);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
30
34
|
|
|
31
35
|
this.logger.success('Geyser downloaded to plugins folder');
|
|
32
36
|
}
|
|
@@ -34,14 +38,17 @@ export class GeyserBridge {
|
|
|
34
38
|
if (!await FileUtils.fileExists(floodgateJar)) {
|
|
35
39
|
this.logger.info('Downloading Floodgate...');
|
|
36
40
|
|
|
37
|
-
// Download ke folder plugins langsung
|
|
38
41
|
const floodgateInfo = await Downloader.getFloodgateInfo();
|
|
39
42
|
|
|
40
|
-
// Set fileName jadi floodgate.jar langsung
|
|
41
43
|
floodgateInfo.fileName = 'floodgate.jar';
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
const downloadedPath = await Downloader.downloadFile(floodgateInfo, pluginsDir);
|
|
46
|
+
|
|
47
|
+
if (downloadedPath && downloadedPath !== floodgateJar) {
|
|
48
|
+
if (await FileUtils.fileExists(downloadedPath)) {
|
|
49
|
+
await FileUtils.moveFile(downloadedPath, floodgateJar);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
45
52
|
|
|
46
53
|
this.logger.success('Floodgate downloaded to plugins folder');
|
|
47
54
|
}
|
|
@@ -61,8 +68,13 @@ export class GeyserBridge {
|
|
|
61
68
|
const geyserInfo = await Downloader.getGeyserInfo();
|
|
62
69
|
geyserInfo.fileName = 'geyser.jar';
|
|
63
70
|
|
|
64
|
-
|
|
65
|
-
|
|
71
|
+
const downloadedPath = await Downloader.downloadFile(geyserInfo, geyserDir);
|
|
72
|
+
|
|
73
|
+
if (downloadedPath && downloadedPath !== geyserJar) {
|
|
74
|
+
if (await FileUtils.fileExists(downloadedPath)) {
|
|
75
|
+
await FileUtils.moveFile(downloadedPath, geyserJar);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
66
78
|
|
|
67
79
|
this.logger.success('Geyser standalone downloaded');
|
|
68
80
|
}
|