diff --git a/packgen.js b/packgen.js index 0282141..bbbb6c9 100644 --- a/packgen.js +++ b/packgen.js @@ -4,102 +4,118 @@ const fs = require('fs'); const archiver = require('archiver'); const urlReq = function (reqUrl, options, cb) { - if (typeof options === 'function') { - cb = options; - options = {}; - } // incase no options passed in - https - .get(reqUrl, (res) => { - let body = ''; - res.on('data', (chunk) => { - body += chunk; - }); - res.on('end', () => { - try { - cb(body, res); - } catch (error) { - console.error(error.message); - } - }); - }) - .on('error', (error) => { - console.error(error.message); - }); + if (typeof options === 'function') { + cb = options; + options = {}; + } // incase no options passed in + https + .get(reqUrl, (res) => { + let body = ''; + res.on('data', (chunk) => { + body += chunk; + }); + res.on('end', () => { + try { + cb(body, res); + } catch (error) { + console.error(error.message); + } + }); + }) + .on('error', (error) => { + console.error(error.message); + }); }; let piston = 'https://piston-meta.mojang.com/mc/game/version_manifest_v2.json'; -let resources = 'https://resources.download.minecraft.net/'; -let baselang = 'en_gb'; urlReq(piston, function (body, res) { - json = JSON.parse(body); - console.log( - `Using base language "${baselang}" from version (${json.versions[0].id})`, - ); + json = JSON.parse(body); + let version = json.versions[0].id; // latest version + let resources = 'https://resources.download.minecraft.net/'; + let baselang = 'en_gb'; + //let filename = `${baselang} v${version} en_MSE` + let filename = `Maoist-Standard-English`; + let mcmeta_template = [ + { + text: `§cen_MSE§r\n`, + }, + { + text: `§8(§f${baselang}§8)-<§f${version}§8>`, + }, + ]; - urlReq(json.versions[1].url, function (body, res) { - json = JSON.parse(body); - urlReq(json.assetIndex.url, function (body, res) { - json = JSON.parse(body); - hash = json.objects[`minecraft/lang/${baselang}.json`].hash; - urlReq( - resources + `${hash.substring(0, 2)}/${hash}`, - function (body, res) { - pack = JSON.parse(body); - var totals = { - total: Object.keys(pack).length, - translated: 0, - }; - console.log(`Translating ${totals.total} strings`); - Object.keys(pack).forEach(function (key) { - var translated = MSE.translate( - pack[key] - .replace(/\%s/gi, '%_') //mc patch - .replace(/\$s/gi, '$_'), - ) - .replace(/\%_/gi, '%s') //mc patch back - .replace(/\$_/gi, '$s'); - if (translated != pack[key]) { - totals.translated = totals.translated + 1; - } - pack[key] = translated; - }); - console.log( - `Translated ${totals.translated} out of ${totals.total} strings`, - ); - fs.writeFile( - __dirname + - '/template/assets/minecraft/lang/en_mse.json', - JSON.stringify(pack, null, 4), - 'utf8', - function (err) { - if (err) throw err; - console.log( - 'en_mse.json generated, creating pack and compressing.', - ); - const output = fs.createWriteStream( - __dirname + '/Maoist-Standard-English.zip', - ); - const archive = archiver('zip', { - zlib: { level: 9 }, // Sets the compression level. - }); - archive.on('error', function (err) { - throw err; - }); - output.on('close', function () { - console.log( - 'language-pack archive generated with a filesize of ' + - archive.pointer() + - ' bytes', - ); - }); - archive.pipe(output); - archive.directory('template/', false); - archive.finalize(); - }, - ); - }, - ); - }); + console.log(`Using base language "${baselang}" from version (${version})`); + + urlReq(json.versions[1].url, function (body, res) { + json = JSON.parse(body); + urlReq(json.assetIndex.url, function (body, res) { + json = JSON.parse(body); + hash = json.objects[`minecraft/lang/${baselang}.json`].hash; + urlReq( + resources + `${hash.substring(0, 2)}/${hash}`, + function (body, res) { + pack = JSON.parse(body); + var totals = { + total: Object.keys(pack).length, + translated: 0, + }; + console.log(`Translating ${totals.total} strings`); + Object.keys(pack).forEach(function (key) { + var translated = MSE.translate( + pack[key] + .replace(/\%s/gi, '%_') //mc patch + .replace(/\$s/gi, '$_'), + ) + .replace(/\%_/gi, '%s') //mc patch back + .replace(/\$_/gi, '$s'); + if (translated != pack[key]) { + totals.translated = totals.translated + 1; + } + pack[key] = translated; + }); + console.log( + `Translated ${totals.translated} out of ${totals.total} strings`, + ); + + var mcmeta = __dirname + '/template/pack.mcmeta'; + var mcmeta_data = JSON.parse(fs.readFileSync(mcmeta)); + mcmeta_data.pack.description = mcmeta_template; + + fs.writeFileSync(mcmeta, JSON.stringify(mcmeta_data)); + fs.writeFile( + __dirname + '/template/assets/minecraft/lang/en_mse.json', + JSON.stringify(pack, null, 4), + 'utf8', + function (err) { + if (err) throw err; + console.log( + 'en_mse.json generated, creating pack and compressing.', + ); + const output = fs.createWriteStream( + __dirname + `/${filename}.zip`, + ); + const archive = archiver('zip', { + zlib: { level: 9 }, // Sets the compression level. + }); + archive.on('error', function (err) { + throw err; + }); + output.on('close', function () { + console.log( + 'language-pack archive generated with a filesize of ' + + archive.pointer() + + ' bytes' + + `\n(./${filename}.zip)`, + ); + }); + archive.pipe(output); + archive.directory('template/', false); + archive.finalize(); + }, + ); + }, + ); }); + }); });