3 days ago
- The core idea is to convert any file into a Minecraft world by mapping each byte to a block.
- A palette maps 256 byte values to blocks, excluding blocks with age/level states (like crops) and multi-block entities (beds, chests).
- Blocks are placed in a 16x16x16 section, filling a full chunk column (24 sections) from Y=-64 to Y=320, then moving to the next chunk horizontally.
- A region file (.mca) can store up to ~96 MiB of data from 32x32 chunks.
- Encoding reads the file, writes a header (magic + original size), then places each byte's block at calculated coordinates.
- Decoding reads the header to get the original size, then reads the blocks and converts them back to bytes.
- Initial mistakes included a flat slab layout that only used 16 blocks of height (reducing capacity), misreading the .mca header causing a 2.3 exabyte size error, and invisible blocks from beds/chests.
- Future plans include adding creeper/TNT protection and supporting multi-region worlds for arbitrarily large files.