const MSE = require("mse-translator") const https = require('https'); 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); }); } 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})`) urlReq(json.versions[1].url, function(body, res){ json = JSON.parse(body) //console.log(json.assetIndex) 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) //console.log(body.substring(0,200)) 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`) //console.log(pack) //fs.writeFile('myjsonfile.json', JSON.stringify(pack), 'utf8'); 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(); }); }); }); }); });