Разработчик запихал фильм по Minecraft в саму игру — буквально. Он написал утилиту sulfur, которая берёт любой файл и превращает его в мир из блоков.
Сначала каждому байту от 0 до 255 нужен свой уникальный блок. Автор вытащил данные блоков версии 1.21.11 через крейт mcdata_rs, выкинул всё с изменяемыми состояниями вроде age и level, а также кровати, сундуки, двери и прочую нечисть из NAUGHTY_LIST. Оставшиеся 256 блоков зашиты в массив PALETTE. Функции byte_to_block и block_to_byte просто ищут блок по индексу и обратно.
Дальше — геометрия. Данные укладываются слоями 16×16, начиная с Y = -64. Когда пол забит, слой поднимается, и так пока не заполнится секция 16×16×16 — 4096 блоков. Одна колонна чанка вмещает 24 такие секции (до Y = 320), а регион — это решётка 32×32 чанка, всего около 96 мегабайт. Логику раскладки считает функция cube_coords.
Кодирование простое: читаем файл, создаём пустой регион, в начало ставим собственный заголовок Header с магическими байтами SULF и размером файла, а затем каждый байт полезной нагрузки превращаем в блок и ставим по координатам. Декодер идёт обратно: вытаскивает заголовок, узнаёт длину, собирает блоки и записывает байты на диск.
По пути случилось несколько забавных ошибок. Первая версия cube_coords никогда не поднимала Y выше 15, из-за чего любой файл превращался в плоскую плиту 512×512 высотой 16 блоков — всего на ~4 MiB. Вторая попытка считывать размер напрямую из заголовка .mca-файла выдала 2.3 эксабайта, потому что код принял служебные байты формата за длину. Исправили добавлением собственного заголовка с префиксом SULF. А кровати и двойные сундуки оказывались невидимыми — они составные, и хотя декодер не ломался, выглядело уродливо, так что их занесли в NAUGHTY_LIST.
В итоге даже фильм «Minecraft» уместился, пусть и с дичайшим даунсэмплингом. Автор планирует добавить защиту от криперов и TNT, а поддержку мультирегионных миров — чтобы кодировать файлы любого размера. Код лежит на Codeberg, проект называется sulfur.