@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.
@@ -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;WAkElE,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"}
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 this.calculateSHA1(destPath);
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
- this.logger.success('SHA1 verified');
89
+ Downloader.logger.success('SHA1 verified');
82
90
  }
83
- if (info.size) {
84
- const stats = await fs.stat(destPath);
85
- if (stats.size !== info.size) {
86
- await fs.remove(destPath);
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
- const stats = await fs.stat(destPath);
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
- this.logger.error(`Failed to get Paper info: ${error}`);
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/standalone`,
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
- this.logger.error(`Failed to get Geyser info: ${error}`);
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
- this.logger.error(`Failed to get Floodgate info: ${error}`);
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":"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"}
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;IAwC7C,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwChF,IAAI,IAAI,IAAI;CAOtB"}
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
- // Download langsung ke pluginsDir dengan nama geyser.jar
57
- await Downloader_1.Downloader.downloadFile(geyserInfo, pluginsDir);
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
- // Download langsung ke pluginsDir dengan nama floodgate.jar
67
- await Downloader_1.Downloader.downloadFile(floodgateInfo, pluginsDir);
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
- // Download langsung ke folder geyser-standalone
81
- await Downloader_1.Downloader.downloadFile(geyserInfo, geyserDir);
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":"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"}
1
+ {"version":3,"file":"GeyserBridge.js","sourceRoot":"","sources":["../../src/platforms/GeyserBridge.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dimzxzzx07/mc-headless",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "Minecraft Headless Server Manager - Run Java/Bedrock/Crossplay servers easily via Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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 this.calculateSHA1(destPath);
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
- this.logger.success('SHA1 verified');
67
+ Downloader.logger.success('SHA1 verified');
57
68
  }
58
69
 
59
- if (info.size) {
60
- const stats = await fs.stat(destPath);
61
- if (stats.size !== info.size) {
62
- await fs.remove(destPath);
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
- const stats = await fs.stat(destPath);
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
- this.logger.error(`Failed to get Paper info: ${error}`);
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
- try {
97
- const res = await axios.get('https://download.geysermc.org/v2/projects/geyser/versions/latest');
98
- const latestBuild = res.data.builds[res.data.builds.length - 1];
99
-
100
- return {
101
- url: `https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/${latestBuild}/downloads/standalone`,
102
- fileName: 'geyser.jar'
103
- };
104
- } catch (error) {
105
- this.logger.error(`Failed to get Geyser info: ${error}`);
106
- throw error;
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
- this.logger.error(`Failed to get Floodgate info: ${error}`);
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
- // Download langsung ke pluginsDir dengan nama geyser.jar
29
- await Downloader.downloadFile(geyserInfo, pluginsDir);
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
- // Download langsung ke pluginsDir dengan nama floodgate.jar
44
- await Downloader.downloadFile(floodgateInfo, pluginsDir);
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
- // Download langsung ke folder geyser-standalone
65
- await Downloader.downloadFile(geyserInfo, geyserDir);
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
  }