Initial
This commit is contained in:
commit
48f1b43d28
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
node_modules/
|
||||
out/
|
||||
schematics/
|
||||
.git/
|
||||
package-lock.json
|
73
index.js
Normal file
73
index.js
Normal file
|
@ -0,0 +1,73 @@
|
|||
/* _ _ ____ ___ _ _ ____ _ _
|
||||
( \/ )/ ___) / __)/ )( \( __)( \/ )
|
||||
) ( \___ \( (__ ) __ ( ) _) / \/ \
|
||||
(_/\_)(____/ \___)\_)(_/(____)\_)(_/ */
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
if (!fs.existsSync('out')) fs.mkdirSync('out');
|
||||
if (!fs.existsSync('schematics')) fs.mkdirSync('schematics');
|
||||
|
||||
const { Schematic } = require('prismarine-schematic');
|
||||
const { Vec3 } = require('vec3');
|
||||
|
||||
const fileList = fs.readdirSync('schematics');
|
||||
|
||||
if (fileList.length == 0) {
|
||||
console.error('No files to be converted found in ./schematics/');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const f = () => {
|
||||
|
||||
if (fileList.length == 0) {
|
||||
console.log('All done!');
|
||||
return;
|
||||
}
|
||||
|
||||
const schemFile = fileList[0];
|
||||
const schemFilePath = path.join('schematics', schemFile);
|
||||
const blockMap = new Map();
|
||||
|
||||
console.log(`Converting ${schemFile}`);
|
||||
|
||||
Schematic.read(fs.readFileSync(schemFilePath)).then((schem) => {
|
||||
|
||||
schem.makeWithCommands(new Vec3(-3, 0, 0)).then((commands) => {
|
||||
|
||||
for (const cmd of commands) {
|
||||
|
||||
const pts = cmd.split(' ');
|
||||
|
||||
const x = parseInt(pts[1]);
|
||||
const y = parseInt(pts[2]);
|
||||
const z = parseInt(pts[3]);
|
||||
|
||||
const blockData = pts.slice(4).join(' ');
|
||||
//.replace('persistent="true"', 'persistent="false"')
|
||||
//.replace('distance="7"', 'distance="1"')
|
||||
|
||||
if (blockData == 'air') continue;
|
||||
if (!blockMap.has(blockData)) blockMap.set(blockData, []);
|
||||
|
||||
blockMap.get(blockData).push(...[x, y, z]);
|
||||
|
||||
}
|
||||
|
||||
fs.writeFileSync(path.join('out', schemFile.replace('.schem', '.json')), JSON.stringify([...blockMap]), 'utf8');
|
||||
console.log(`${schemFile} done`);
|
||||
|
||||
fileList.splice(0, 1);
|
||||
setTimeout(f, 0);
|
||||
|
||||
}).catch(console.error);
|
||||
|
||||
}).catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
f();
|
14
package.json
Normal file
14
package.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"name": "xschem",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"prismarine-schematic": "^1.2.1"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user