Shacraft Core
Самостоятельный открытый воксельный движок на Rust и работающий локальный MVP: сервер с несколькими мирами, собственный WebGL2-клиент, Spleef, отдельный MCP, каталог Java 26.2, пакеты расширений и конвертер миров. Приоритет — измеренное потребление серверной RAM.
Запустить
Требуются Rust 1.96+, C-компилятор для SQLite и браузер с WebGL2. Java и Node для игры не нужны. Первый запуск скачает Cargo-зависимости и соберёт release; следующие используют готовый бинарный файл.
bash scripts/run.sh --data data --listen 127.0.0.1:4000
Открыть http://127.0.0.1:4000. WASD — движение, пробел — прыжок, мышь — обзор, ЛКМ/ПКМ — убрать/поставить блок, E — библиотека, T — чат, F3 — диагностика. Если браузер не даёт захват мыши, обзор работает перетаскиванием. Мир выбирается слева сверху. Для Spleef два игрока входят в одну арену и запускают матч через меню. Лобби, галерея всех типов блоков и две арены создаются автоматически.
Вся работа хранится в --data. Для остановки используйте Ctrl+C. Подтверждённые правки сохраняются до ответа сервера; проверены аварийные остановки и восстановление.
Что входит
shacraft-core: компактные секции 16³, общий ограниченный кэш, SQLite/WAL/FULL, неизменяемые снимки, независимые изменения миров, ревизии, идемпотентные правки, undo/reset. Без графики и сети.shacraft-server: авторитетные движение, формы столкновений и взаимодействия, WebSocket/HTTP, сохраняемые сущности и настройки, законченный цикл Spleef.client/: собственный рендерер, библиотека материалов, игроки и сущности, чат, переключение миров, переподключение, загрузка и проверка пакетов.shacraft-mcp: настоящий отдельный stdio MCP с 17 инструментами, ресурсами и prompt; строительство по плану, чтение, отмена, сущности, арены, метрики и PNG результата.shacraft-content: 1 196 блоков, 32 366 состояний, 158 типов сущностей Java 26.2, DataVersion 4903. Официальные идентификаторы и измеренные коллизии, авторские модели. Плюс блок trampoline.shacraft-compat: Anvil и Sponge.schemv3 в обе стороны, типизированный NBT, сохранение оригинала, отчёты о преобразованиях и перенос правок сущностей.packages/: собственные текстуры, звук, шейдер и исполняемый WASM-модуль прыжка с ограничениями памяти и fuel.
Ванильные AI, redstone, инвентари и симуляция жидкостей не входят в этот MVP. Контекстные формы отмечены отдельно. Конвертер после правок использует явный best-effort; неизменённый оригинал может вернуть побайтно. Это не обещание полной совместимости с механиками Minecraft или модами NeoForge. Оригинальные ресурсы и код Minecraft не распространяются.
MCP и конвертация
cargo build --release --locked --workspace
# В конфигурации MCP-клиента запускается этот процесс:
target/release/shacraft-mcp --server http://127.0.0.1:4000 --data data
# Импорт в новый каталог, затем запуск сервера с --data data/imported:
target/release/shacraft-compat import-anvil /path/to/java-world data/imported
# Экспорт выполняется при остановленном сервере, в отсутствующий каталог:
target/release/shacraft-compat export-anvil data/imported artifacts/java-export --mode best-effort
Токен Control API создаётся в data/control.token (0600 на Unix) и не передаётся браузеру. MCP, форматы и команды конвертера, сервер и протокол, расширение пакетами.
Проверить
# Rust, Clippy, аварийное восстановление, JS и реальные HTTP/WebSocket-клиенты:
bash scripts/verify.sh
# Release-стенд с заранее заданными бюджетами:
cargo build --release --workspace --locked
node scripts/benchmark_server.mjs --output artifacts/server-benchmark.json
Node 22+ нужен для сетевых/JS-проверок, Python 3 — для проверки аварийного хранения. Настоящий MCP SDK и независимая Java/NBT-проверка описаны в VERIFICATION. Проверенные числа и ограничения находятся там; сравнение с Paper не заявляется без сопоставимого стенда.
Контекст
Требования · исходный план · решения · контракты ядра · состояние и ограничения · контент.
Проект заново реализован локально после зависания прежней среды. План сохранён до кода отдельным коммитом. Лицензия кода и собственных ресурсов — MIT или Apache-2.0 на выбор. Существующий лаунчер и продакшен-серверы не изменяются этой поставкой.