Renderoo ← Back to the site

For AI agents, and anyone setting it up

Renderoo in one page

Renderoo is a free Discord bot by Quarterturn that draws Minecraft builds. Send it a .litematic, .schem or .nbt and it replies with a picture made from the game's own block textures, lit like a shader pack, with buttons to turn it, zoom in and count every block.

Everything here is also plain Markdown at /agents.md, with a short index at /llms.txt.

01Set it up

Renderoo is a hosted bot. Setting it up means adding it to a Discord server: there is no API key, account or install.

  1. Open the invite link while signed in to Discord as someone with Manage Server on the server.
    https://discord.com/oauth2/authorize?client_id=1556078318548164668&scope=bot+applications.commands&permissions=117760
  2. Pick the server and approve.
  3. In any channel the bot can see, type /render and attach a build file.

Permissions asked for (117760): View Channels, Send Messages, Embed Links, Attach Files, Read Message History. No privileged intents, and it never reads ordinary messages: it only answers its own slash commands and buttons.

02Commands

CommandWhat it does
/renderDraws the build from file: or id:. Buttons: ← → turn it a quarter, 🔍 🔎 zoom in up to 4x, ☀️ Shaders switches the lighting off for the game's plain look, Material List counts it.
/materialsEvery block in the build from file: or id:, the most used first, in stacks and shulkers, with the whole list as .txt and .csv. No picture, so it takes builds of any size.
/craftAn item's recipe drawn on a crafting table, e.g. result: iron_axe. Fill item1 to item9 (row by row, empty is air) to draw your own grid.
/helpWhat it does and how to use it.
/inviteA button to add Renderoo to another server.

03Files and limits

FormatsLitematica .litematic (every region), Sponge .schem, vanilla structure .nbt
File sizeUp to 8 MB
Render sizeUp to 8,000,000 blocks of space (width × height × length). /materials takes any size.
ButtonsA render stays turnable and zoomable for 30 minutes
id:A build sent from the Spawner Sync website's Send to Discord, by its id or page link, for a week after it was sent

Each upload is read in a process of its own (unzipped with a 128 MB cap, a 2 GB heap, stopped after 60 seconds, two at once and sixteen waiting), so a broken or hostile file can only stop its own read, never the bot.

04Running your own copy

The source is private for now. With access to Joystiick/renderoo, on Node 18 or newer:

git clone https://github.com/Joystiick/renderoo
cd renderoo
npm install
cp .env.example .env    # TOKEN and CLIENT_ID from the Discord developer portal; SITE_URL for /render id:
npm start
npm test

05Under the hood

Measured from the code, not estimated.

LanguagePlain JavaScript (Node 18+, ES modules). No TypeScript, no build step.
Code32 files, 4,064 lines: 22 files (2,943 lines) of bot and renderer, 10 files (1,121 lines) of tests
Renderer and file reader8 files, 1,749 lines: render.js 655, schematic.js 350, nbt.js 298, models.js 182, shapes.js 83, textures.js 82, png.js 57, kinds.js 42
How it drawsA software rasteriser on the CPU, written for Renderoo. No GPU, no canvas, no image library. The PNG is written by hand; Node's built-in zlib does the compression.
LightingSunlight traced through the block grid for soft shadows, a sky, and a filmic colour grade
Runtime dependencies2: discord.js (Discord), dotenv (settings)
Third-party code in the rendererNone. The NBT reader (nbt.js) is our own too.
Game assetsTaken from the Minecraft client (data version 5023): 3,022 blocks, 794 with block states, 2,102 models, 3,090 distinct 16×16 textures
RecipesEvery crafting table recipe, from the same client
Tests10 test files, plain assert, run by npm test

On speed: Renderoo has not been benchmarked against other renderers, so it makes no claim about being faster than any of them.