overdrive_that_matters/shapenator.js

50 lines
1.3 KiB
JavaScript

const models = [
'android_station',
'battery_bank',
'matter_scanner',
'pattern_storage',
'matter_replicator',
// 'matter_panel',
'matter_decomposer',
];
const fs = require('fs')
const root = './src/main/resources/assets/overdrive_that_matters/models/block/'
const handle = fs.openSync('./src/main/java/ru/dbotthepony/mc/otm/shapes/BlockShapes.java', 'w')
fs.writeSync(handle, 'package ru.dbotthepony.mc.otm.shapes;\n\n\n')
fs.writeSync(handle, `// Auto generated at ${new Date().toUTCString()}\n`)
fs.writeSync(handle, 'public class BlockShapes {\n')
for (const model of models) {
fs.writeSync(handle, '\tpublic static final BlockShape ' + model.toUpperCase() + ' = new BlockShape(\n')
const obj = JSON.parse(fs.readFileSync(root + model + '.json', {encoding: 'utf-8'}))
let first = true
for (const elementID in obj.elements) {
const element = obj.elements[elementID]
if (element.rotation)
continue;
const from = element.from
const to = element.to
if (first) {
first = false
} else {
fs.writeSync(handle, ',\n')
}
fs.writeSync(handle, `\t\tnew SimpleCuboid(${from[0] / 16}d, ${from[1] / 16}d, ${from[2] / 16}d, ${to[0] / 16}d, ${to[1] / 16}d, ${to[2] / 16}d)`)
}
fs.writeSync(handle, '\n\t);\n\n')
}
fs.writeSync(handle, '}')
fs.closeSync(handle)