Added types to download status. changed downloadasyc params

This commit is contained in:
Pierce 2019-08-28 10:21:48 -04:00
parent b1f59bf3ab
commit 69985e3d04
4 changed files with 19 additions and 16 deletions

View file

@ -166,7 +166,7 @@ You'll need to provide the folder created in the versions if you're running the
| `download` | String | Emitted when a file successfully downloads | | `download` | String | Emitted when a file successfully downloads |
| `download-status` | Object | Emitted when data is received while downloading | | `download-status` | Object | Emitted when data is received while downloading |
| `debug` | String | Emitted when functions occur, made to help debug if errors occur | | `debug` | String | Emitted when functions occur, made to help debug if errors occur |
| `progress` | Object | Emitted when files are being downloaded in order. (Assets, Forge Deps, Natives, Classes)| | `progress` | Object | Emitted when files are being downloaded in order. (Assets, Forge, Natives, Classes) |
#### What should it look like running from console? #### What should it look like running from console?

View file

@ -39,7 +39,7 @@ class Handler {
}); });
} }
downloadAsync(url, directory, name, retry = true) { downloadAsync(url, directory, name, retry, type) {
return new Promise(resolve => { return new Promise(resolve => {
shelljs.mkdir('-p', directory); shelljs.mkdir('-p', directory);
@ -55,7 +55,7 @@ class Handler {
_request.on('error', async (error) => { _request.on('error', async (error) => {
this.client.emit('debug', `[MCLC]: Failed to download asset to ${path.join(directory, name)} due to\n${error}.` + this.client.emit('debug', `[MCLC]: Failed to download asset to ${path.join(directory, name)} due to\n${error}.` +
` Retrying... ${retry}`); ` Retrying... ${retry}`);
if (retry) await this.downloadAsync(url, directory, name, false); if (retry) await this.downloadAsync(url, directory, name, false, type);
resolve(); resolve();
}); });
@ -63,6 +63,7 @@ class Handler {
received_bytes += data.length; received_bytes += data.length;
this.client.emit('download-status', { this.client.emit('download-status', {
"name": name, "name": name,
"type": type,
"current": received_bytes, "current": received_bytes,
"total": total_bytes "total": total_bytes
}) })
@ -83,7 +84,7 @@ class Handler {
this.client.emit('debug', `[MCLC]: Failed to download asset to ${path.join(directory, name)} due to\n${e}.` + this.client.emit('debug', `[MCLC]: Failed to download asset to ${path.join(directory, name)} due to\n${e}.` +
` Retrying... ${retry}`); ` Retrying... ${retry}`);
if (fs.existsSync(path.join(directory, name))) shelljs.rm(path.join(directory, name)); if (fs.existsSync(path.join(directory, name))) shelljs.rm(path.join(directory, name));
if (retry) await this.downloadAsync(url, directory, name, false); if (retry) await this.downloadAsync(url, directory, name, false, type);
resolve(); resolve();
}); });
}); });
@ -127,7 +128,7 @@ class Handler {
getJar() { getJar() {
return new Promise(async (resolve) => { return new Promise(async (resolve) => {
await this.downloadAsync(this.version.downloads.client.url, this.options.directory, `${this.options.version.number}.jar`); await this.downloadAsync(this.version.downloads.client.url, this.options.directory, `${this.options.version.number}.jar`, true, 'version-jar');
fs.writeFileSync(path.join(this.options.directory, `${this.options.version.number}.json`), JSON.stringify(this.version, null, 4)); fs.writeFileSync(path.join(this.options.directory, `${this.options.version.number}.json`), JSON.stringify(this.version, null, 4));
@ -140,7 +141,8 @@ class Handler {
getAssets() { getAssets() {
return new Promise(async(resolve) => { return new Promise(async(resolve) => {
if(!fs.existsSync(path.join(this.options.root, 'assets', 'indexes', `${this.version.assetIndex.id}.json`))) { if(!fs.existsSync(path.join(this.options.root, 'assets', 'indexes', `${this.version.assetIndex.id}.json`))) {
await this.downloadAsync(this.version.assetIndex.url, path.join(this.options.root, 'assets', 'indexes'), `${this.version.assetIndex.id}.json`); await this.downloadAsync(this.version.assetIndex.url, path.join(this.options.root, 'assets', 'indexes'),
`${this.version.assetIndex.id}.json`, true, 'asset-json');
} }
const index = require(path.join(this.options.root, 'assets', 'indexes',`${this.version.assetIndex.id}.json`)); const index = require(path.join(this.options.root, 'assets', 'indexes',`${this.version.assetIndex.id}.json`));
@ -158,7 +160,8 @@ class Handler {
const subAsset = path.join(assetDirectory, 'objects', subhash); const subAsset = path.join(assetDirectory, 'objects', subhash);
if(!fs.existsSync(path.join(subAsset, hash)) || !await this.checkSum(hash, path.join(subAsset, hash))) { if(!fs.existsSync(path.join(subAsset, hash)) || !await this.checkSum(hash, path.join(subAsset, hash))) {
await this.downloadAsync(`${this.options.overrides.url.resource}/${subhash}/${hash}`, subAsset, hash); await this.downloadAsync(`${this.options.overrides.url.resource}/${subhash}/${hash}`, subAsset, hash,
true, 'assets');
counter = counter + 1; counter = counter + 1;
this.client.emit('progress', { this.client.emit('progress', {
type: 'assets', type: 'assets',
@ -261,9 +264,9 @@ class Handler {
await Promise.all(stat.map(async (native) => { await Promise.all(stat.map(async (native) => {
const name = native.path.split('/').pop(); const name = native.path.split('/').pop();
await this.downloadAsync(native.url, nativeDirectory, name); await this.downloadAsync(native.url, nativeDirectory, name, true, 'natives');
if (!await this.checkSum(native.sha1, path.join(nativeDirectory, name))) { if (!await this.checkSum(native.sha1, path.join(nativeDirectory, name))) {
await this.downloadAsync(native.url, nativeDirectory, name); await this.downloadAsync(native.url, nativeDirectory, name, true, 'natives');
} }
try { try {
new zip(path.join(nativeDirectory, name)).extractAllTo(nativeDirectory, true); new zip(path.join(nativeDirectory, name)).extractAllTo(nativeDirectory, true);
@ -332,7 +335,7 @@ class Handler {
} }
if(!fs.existsSync(jarPath)) shelljs.mkdir('-p', jarPath); if(!fs.existsSync(jarPath)) shelljs.mkdir('-p', jarPath);
await this.downloadAsync(downloadLink, jarPath, name); await this.downloadAsync(downloadLink, jarPath, name, true, 'forge');
paths.push(`${jarPath}${path.sep}${name}`); paths.push(`${jarPath}${path.sep}${name}`);
counter = counter + 1; counter = counter + 1;
@ -378,7 +381,7 @@ class Handler {
if(!fs.existsSync(path.join(jarPath, name))) { if(!fs.existsSync(path.join(jarPath, name))) {
if(library.url) { if(library.url) {
const url = `${library.url}${lib[0].replace(/\./g, '/')}/${lib[1]}/${lib[2]}/${lib[1]}-${lib[2]}.jar`; const url = `${library.url}${lib[0].replace(/\./g, '/')}/${lib[1]}/${lib[2]}/${lib[1]}-${lib[2]}.jar`;
await this.downloadAsync(url, jarPath, name); await this.downloadAsync(url, jarPath, name, true, 'classes-custom');
} }
} }
counter = counter + 1; counter = counter + 1;
@ -423,7 +426,7 @@ class Handler {
const name = directory.pop(); const name = directory.pop();
directory = directory.join(path.sep); directory = directory.join(path.sep);
await this.downloadAsync(libraryUrl, directory, name); await this.downloadAsync(libraryUrl, directory, name, true, 'classes');
} }
counter = counter + 1; counter = counter + 1;
this.client.emit('progress', { this.client.emit('progress', {

View file

@ -5,7 +5,7 @@ const shelljs = require('shelljs');
module.exports.extractPackage = function(e) { module.exports.extractPackage = function(e) {
return new Promise(async resolve => { return new Promise(async resolve => {
if(e.options.clientPackage.startsWith('http')) { if(e.options.clientPackage.startsWith('http')) {
await e.handler.downloadAsync(e.options.clientPackage, e.options.root, "clientPackage.zip"); await e.handler.downloadAsync(e.options.clientPackage, e.options.root, "clientPackage.zip", true, 'client-package');
e.options.clientPackage = path.join(e.options.root, "clientPackage.zip") e.options.clientPackage = path.join(e.options.root, "clientPackage.zip")
} }
new zip(e.options.clientPackage).extractAllTo(e.options.root, true); new zip(e.options.clientPackage).extractAllTo(e.options.root, true);

View file

@ -1,6 +1,6 @@
{ {
"name": "minecraft-launcher-core", "name": "minecraft-launcher-core",
"version": "3.10.1", "version": "3.10.2",
"description": "Lightweight module that downloads and runs Minecraft using javascript / NodeJS", "description": "Lightweight module that downloads and runs Minecraft using javascript / NodeJS",
"main": "index.js", "main": "index.js",
"dependencies": { "dependencies": {