-
Notifications
You must be signed in to change notification settings - Fork 77
/
Copy pathprerender.js
31 lines (25 loc) · 1.27 KB
/
prerender.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const path = require('path')
const { makeTextureAtlas } = require('./lib/atlas')
const { prepareBlocksStates } = require('./lib/modelsBuilder')
const mcAssets = require('minecraft-assets')
const fs = require('fs-extra')
const texturesPath = path.resolve(__dirname, '../public/textures')
if (fs.existsSync(texturesPath) && !process.argv.includes('-f')) {
console.log('textures folder already exists, skipping...')
process.exit(0)
}
fs.mkdirSync(texturesPath, { recursive: true })
const blockStatesPath = path.resolve(__dirname, '../public/blocksStates')
fs.mkdirSync(blockStatesPath, { recursive: true })
const supportedVersions = require('./lib/version').supportedVersions
for (const version of supportedVersions) {
const assets = mcAssets(version)
const atlas = makeTextureAtlas(assets)
const out = fs.createWriteStream(path.resolve(texturesPath, version + '.png'))
const stream = atlas.canvas.pngStream()
stream.on('data', (chunk) => out.write(chunk))
stream.on('end', () => console.log('Generated textures/' + version + '.png'))
const blocksStates = JSON.stringify(prepareBlocksStates(assets, atlas))
fs.writeFileSync(path.resolve(blockStatesPath, version + '.json'), blocksStates)
fs.copySync(assets.directory, path.resolve(texturesPath, version), { overwrite: true })
}