MSE-MC/packgen.js
2024-04-01 20:48:59 +13:00

77 lines
3.2 KiB
JavaScript

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();
});
});
});
});
});