@polymer505/msc 1.3.0 → 1.3.1
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/index.js +126 -114
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -50,84 +50,102 @@ if (!ramMatch) {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// Get vanilla kernel link
|
|
53
|
-
function getVanillaUrl(version) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
.
|
|
53
|
+
async function getVanillaUrl(version) {
|
|
54
|
+
try {
|
|
55
|
+
const response = await fetch(api_link.vanilla);
|
|
56
|
+
const data = await response.json();
|
|
57
|
+
const info = data.versions.find((item) => item.id === version);
|
|
58
|
+
if (!info) {
|
|
59
|
+
console.log(pc.red(`Error: version ${version} not found`));
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
const infoUrl = await fetch(info.url);
|
|
63
|
+
const infoUrlData = await infoUrl.json();
|
|
64
|
+
return infoUrlData.downloads.server.url;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.log(pc.red(error));
|
|
67
|
+
}
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
// Get paper kernel link
|
|
70
|
-
function getPaperUrl(version) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
71
|
+
async function getPaperUrl(version) {
|
|
72
|
+
try {
|
|
73
|
+
const response = await fetch(
|
|
74
|
+
`${api_link.paper}/versions/${version}/builds`,
|
|
75
|
+
);
|
|
76
|
+
const data = await response.json();
|
|
77
|
+
if (data.ok === false) {
|
|
78
|
+
console.log(pc.red(`Error: version ${version} not found`));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
const latestId = data[0].id;
|
|
82
|
+
|
|
83
|
+
const latestBuild = await fetch(
|
|
84
|
+
`${api_link.paper}/versions/${version}/builds/${latestId}`,
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
const dowloadUrlData = await latestBuild.json();
|
|
88
|
+
return dowloadUrlData.downloads["server:default"].url;
|
|
89
|
+
} catch (error) {
|
|
90
|
+
console.log(pc.red(error));
|
|
91
|
+
}
|
|
85
92
|
}
|
|
86
93
|
|
|
87
94
|
// Get purpur kernel link
|
|
88
|
-
function getPurpurUrl(version) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
95
|
+
async function getPurpurUrl(version) {
|
|
96
|
+
try {
|
|
97
|
+
const response = await fetch(`${api_link.purpur}/${version}`);
|
|
98
|
+
const data = await response.json();
|
|
99
|
+
|
|
100
|
+
if (!data.builds) {
|
|
101
|
+
console.log(pc.red(`Error: version ${version} not found`));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
const latestBuild = data.builds.latest;
|
|
105
|
+
return `${api_link.purpur}/${version}/${latestBuild}/download`;
|
|
106
|
+
} catch (error) {
|
|
107
|
+
console.log(pc.red(error));
|
|
108
|
+
}
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
// Get fabric kernel link
|
|
102
|
-
function getFabricUrl(version) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
async function getFabricUrl(version) {
|
|
113
|
+
try {
|
|
114
|
+
const [loaderData, installerData] = await Promise.all([
|
|
115
|
+
fetch(`${api_link.fabric}/loader/${version}`),
|
|
116
|
+
fetch(`${api_link.fabric}/installer`),
|
|
117
|
+
]);
|
|
118
|
+
|
|
119
|
+
const loaderDataObj = await loaderData.json();
|
|
120
|
+
const installerDataObj = await installerData.json();
|
|
121
|
+
|
|
122
|
+
if (!loaderDataObj || loaderDataObj.length === 0) {
|
|
110
123
|
console.log(pc.red(`Error: version ${version} not found`));
|
|
111
124
|
process.exit(1);
|
|
112
125
|
}
|
|
113
|
-
const latestBuild =
|
|
114
|
-
const installerVersion =
|
|
126
|
+
const latestBuild = loaderDataObj[0].loader.version;
|
|
127
|
+
const installerVersion = installerDataObj[0].version;
|
|
115
128
|
return `${api_link.fabric}/loader/${version}/${latestBuild}/${installerVersion}/server/jar`;
|
|
116
|
-
})
|
|
129
|
+
} catch (error) {
|
|
130
|
+
console.log(pc.red(error));
|
|
131
|
+
}
|
|
117
132
|
}
|
|
118
133
|
|
|
119
134
|
// Get forge kernel link
|
|
120
|
-
function getForgeUrl(version) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
135
|
+
async function getForgeUrl(version) {
|
|
136
|
+
try {
|
|
137
|
+
const response = await fetch(`${api_link.forge}/promotions_slim.json`);
|
|
138
|
+
const data = await response.json();
|
|
139
|
+
|
|
140
|
+
const latestBuild = data.promos[`${version}-latest`];
|
|
141
|
+
if (!latestBuild) {
|
|
142
|
+
console.log(pc.red(`Error: version ${version} not found`));
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
return `https://maven.minecraftforge.net/net/minecraftforge/forge/${version}-${latestBuild}/forge-${version}-${latestBuild}-installer.jar`;
|
|
146
|
+
} catch (error) {
|
|
147
|
+
console.log(pc.red(error));
|
|
148
|
+
}
|
|
131
149
|
}
|
|
132
150
|
|
|
133
151
|
// Create start.sh or start.bat
|
|
@@ -137,17 +155,16 @@ function createStartSh(kernelName) {
|
|
|
137
155
|
const ramInMb =
|
|
138
156
|
unit.toUpperCase() === "G" ? parseInt(amount) * 1024 : parseInt(amount);
|
|
139
157
|
|
|
158
|
+
const javaFlags = `java -Xms${ramInMb}M -Xmx${ramInMb}M --add-modules=jdk.incubator.vector -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar ${kernelName}.jar nogui`;
|
|
159
|
+
|
|
140
160
|
if (process.platform === "win32") {
|
|
141
|
-
fs.writeFileSync(
|
|
142
|
-
|
|
143
|
-
`java -Xms${ramInMb}M -Xmx${ramInMb}M --add-modules=jdk.incubator.vector -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar ${kernelName}.jar nogui`,
|
|
144
|
-
);
|
|
145
|
-
console.log("File start.bat created successful");
|
|
161
|
+
fs.writeFileSync("start.bat", `${javaFlags}`);
|
|
162
|
+
console.log(pc.green("File start.bat created successful"));
|
|
146
163
|
} else {
|
|
147
164
|
fs.writeFileSync(
|
|
148
165
|
"start.sh",
|
|
149
166
|
`#!/bin/bash
|
|
150
|
-
|
|
167
|
+
${javaFlags}`,
|
|
151
168
|
);
|
|
152
169
|
fs.chmodSync("start.sh", 0o755);
|
|
153
170
|
console.log(pc.green("File start.sh created successful"));
|
|
@@ -160,55 +177,50 @@ function createEulaTxt() {
|
|
|
160
177
|
console.log(pc.green("File eula.txt created successful"));
|
|
161
178
|
}
|
|
162
179
|
|
|
163
|
-
function downloadKernel(kernelName, version, getUrlFn) {
|
|
164
|
-
|
|
165
|
-
.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
})
|
|
169
|
-
.then((response) => {
|
|
170
|
-
if (response.status !== 200) {
|
|
171
|
-
console.log(
|
|
172
|
-
pc.red(`Error downloading: server return code ${response.status}`),
|
|
173
|
-
);
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
176
|
-
const totalSize =
|
|
177
|
-
parseInt(response.headers.get("content-length"), 10) || 0;
|
|
178
|
-
const progressBar = new cliProgress.SingleBar(
|
|
179
|
-
{},
|
|
180
|
-
cliProgress.Presets.shades_classic,
|
|
181
|
-
);
|
|
182
|
-
progressBar.start(totalSize, 0);
|
|
183
|
-
|
|
184
|
-
const nodeStream = Readable.fromWeb(response.body);
|
|
185
|
-
nodeStream.on("data", (chunk) => {
|
|
186
|
-
progressBar.increment(chunk.length);
|
|
187
|
-
});
|
|
180
|
+
async function downloadKernel(kernelName, version, getUrlFn) {
|
|
181
|
+
try {
|
|
182
|
+
console.log(`Downloading ${kernelName}...`);
|
|
183
|
+
const downloadUrl = await getUrlFn(version);
|
|
184
|
+
const response = await fetch(downloadUrl);
|
|
188
185
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
)
|
|
193
|
-
})
|
|
194
|
-
.then(() => console.log(pc.green(`${kernelName}.jar download successful`)))
|
|
195
|
-
.then(() => {
|
|
196
|
-
if (kernelName === "forge") {
|
|
197
|
-
console.log("Starting the forge installation");
|
|
198
|
-
child_process.execSync("java -jar forge.jar --installServer", {
|
|
199
|
-
stdio: "inherit",
|
|
200
|
-
});
|
|
201
|
-
fs.rmSync("forge.jar");
|
|
202
|
-
fs.rmSync("forge.jar.log", { force: true });
|
|
203
|
-
} else {
|
|
204
|
-
createStartSh(kernelName);
|
|
205
|
-
}
|
|
206
|
-
createEulaTxt();
|
|
207
|
-
})
|
|
208
|
-
.catch((error) => {
|
|
209
|
-
console.error(pc.red("Error downloading:"), error);
|
|
186
|
+
if (response.status !== 200) {
|
|
187
|
+
console.log(
|
|
188
|
+
pc.red(`Error downloading: server return code ${response.status}`),
|
|
189
|
+
);
|
|
210
190
|
process.exit(1);
|
|
191
|
+
}
|
|
192
|
+
const totalSize = parseInt(response.headers.get("content-length"), 10) || 0;
|
|
193
|
+
const progressBar = new cliProgress.SingleBar(
|
|
194
|
+
{},
|
|
195
|
+
cliProgress.Presets.shades_classic,
|
|
196
|
+
);
|
|
197
|
+
progressBar.start(totalSize, 0);
|
|
198
|
+
|
|
199
|
+
const nodeStream = Readable.fromWeb(response.body);
|
|
200
|
+
nodeStream.on("data", (chunk) => {
|
|
201
|
+
progressBar.increment(chunk.length);
|
|
211
202
|
});
|
|
203
|
+
|
|
204
|
+
await pipeline(nodeStream, fs.createWriteStream(`${kernelName}.jar`));
|
|
205
|
+
progressBar.stop();
|
|
206
|
+
|
|
207
|
+
console.log(pc.green(`${kernelName}.jar download successful`));
|
|
208
|
+
|
|
209
|
+
if (kernelName === "forge") {
|
|
210
|
+
console.log("Starting the forge installation");
|
|
211
|
+
child_process.execSync("java -jar forge.jar --installServer", {
|
|
212
|
+
stdio: "inherit",
|
|
213
|
+
});
|
|
214
|
+
fs.rmSync("forge.jar");
|
|
215
|
+
fs.rmSync("forge.jar.log", { force: true });
|
|
216
|
+
} else {
|
|
217
|
+
createStartSh(kernelName);
|
|
218
|
+
}
|
|
219
|
+
createEulaTxt();
|
|
220
|
+
} catch (error) {
|
|
221
|
+
console.error(pc.red("Error downloading:"), error);
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}
|
|
212
224
|
}
|
|
213
225
|
|
|
214
226
|
switch (kernel) {
|