const decompress = require('decompress'); const fs = require('fs'); const jsonfile = require('jsonfile') const file = 'blocks.json' let blocks; jsonfile.readFile(file, function (err, obj) { if (err) console.error(err) // console.dir(obj) blocks = obj; }) extract("1.8") // extract("1.20.1") function extract(string) { const extractedPath = `out/assets/minecraft/textures/` decompress(`test/${string}.zip`, `out/`).then(files => { try { // fs.renameSync(`out/${string}/assets/minecraft/textures/blocks`, `out/${string}/assets/minecraft/textures/block`) // fs.renameSync(`out/${string}/assets/minecraft/textures/items`, `out/${string}/assets/minecraft/textures/item`) // fs.renameSync(`out/assets/minecraft/textures/blocks`, `out/assets/minecraft/textures/block`) // fs.renameSync(`out/assets/minecraft/textures/items`, `out/assets/minecraft/textures/item`) } catch (error) { console.log(error); } files.forEach(element => { if (!element.path.includes("assets/minecraft/textures/")) { return; } let texture = element.path.match(/(?:[A-Za-z]*\/)*([A-za-z]*)\/([A-Za-z_]*).png/); // console.log(files) // console.log(texture) /* [ 'assets/minecraft/textures/particle/particles.png', [0] (path) 'particle', [1] (group) 'particles', [2] (name) index: 0, [3] input: 'assets/minecraft/textures/particle/particles.png', [4] groups: undefined [5] ] */ if (texture) { let path = texture[0] let group = texture[1] let name = texture[2] let rename = blocks[name] const poggers = `${extractedPath}${group}/` // console.log(texture) // console.log(type) if (group == "blocks" && rename) { // console.log(rename) try { // TODO: fix trying to rename file twice because of png.mcmeta fs.renameSync(`${poggers}${name}.png`, `${poggers}${rename}.png`) console.log(`renamed ${poggers}${rename}`) // fs.existsSync(poggers) // console.log(poggers) } catch (error) { console.log(error) } } } }) }) }