Renders minecraft block models from .jar file using THREE.js
.
Default output format is PNG 1000x1000
.
You can find pre-rendered assets on Github Actions artifacts. By clicking the badge down below, you can access action list.
Basic usage;
npx minecraft-render
Usage: minecraft-render <jar> [output]
Options:
-w, --width [width] output image width (default: 1000)
-t, --height [height] output image height (default: 1000)
-d, --distance [distance] distance between camera and block (default: 20)
-v, --verbose increases logging level (default: 3)
-p, --plane debugging plane and axis (default: 0)
-A, --no-animation disables apng generation
-f, --filter <regex> regex pattern to filter blocks by name
-V, --version output the version number
-h, --help display help for command
npx minecraft-render minecraft-version.1.17.1.jar output-folder/
...
[0168 / 1710] observer rendered to output-folder\observer.png
[0169 / 1710] comparator_on_subtract skipped due to "no gui"
[0170 / 1710] template_trapdoor_open skipped due to "no gui"
...
Filtering and rendering options
npx minecraft-render minecraft-version.1.17.1.jar --filter "soul_campfire" --no-animation --width 100 --height 100 output/ --verbose
[1 / 1] soul_campfire rendered to output-folder\soul_campfire.png
import { Minecraft } from 'minecraft-render';
import fs from 'fs';
async function main() {
const minecraft = Minecraft.open('./minecraft-version.1.17.1.jar');
const blocks = await minecraft.getBlockList();
for await (const block of minecraft.render(blocks)) {
if (!block.buffer) {
console.log(`${block.blockName} skipped due to ${block.skip}`);
continue;
}
await fs.promises.writeFile(`./render/${block.blockName}.png`, block.buffer);
}
}
Current test configuration is capable of downloading jar files from mojang servers and execute render sequence. You can trigger tests with;
npm test
If you are automating generation process on github or similar CI environments, make sure you configured display server. xvfb
can be used for this purpose.
sudo apt-get install xvfb
xvfb-run --auto-servernum minecraft-render ...