Карта крейтов
mcrs состоит из 122 крейтов в crates/, и брать их можно по одному. Здесь они перечислены по слоям, и у каждого отмечено, собирает ли его CI без Bevy, без std или под wasm32. По этой странице удобно найти нужный крейт и понять, что он тянет за собой.
Как читать таблицы
Заголовок раздела «Как читать таблицы»Крейты разложены по семи слоям из README. Каждый слой должен зависеть только от нижних, поэтому можно взять нижние слои и не платить за то, что выше. Несколько крейтов пока этому не следуют, потому что крейты протокола и сети все еще обращаются к игровым данным. CI проверяет только часть правила, а именно что крейты wire и сети не линкуют игровые данные.
Слой крейта нигде не хранится в коде. Его назначили вручную по таблице из README и описанию крейта, и никакая проверка его не подтверждает, так что считайте его ориентиром.
Во всех таблицах одни и те же пять столбцов. Имя крейта совпадает с именем пакета, а остальные четыре берутся отсюда:
| Столбец | Откуда берется |
|---|---|
| Описание | description из Cargo.toml крейта. У пяти крейтов описания не было или в нем стояло только имя крейта, поэтому для них оно написано по исходникам |
| Без Bevy | NO_BEVY_PACKAGES в checks.rs. CI запускает для этих крейтов cargo check --no-default-features и падает, если какому-то нужен Bevy |
| no_std | NO_STD_PACKAGES в том же файле. CI собирает эти крейты без std |
| wasm32 | WASM32_PACKAGES в том же файле. CI собирает эти крейты под цель wasm32 |
В списке “без Bevy” 100 имен. Шесть из них - инструменты из tools/, поэтому среди 122 крейтов из crates/ таких 94. В списке no_std 9 крейтов, в списке wasm32 - 11. Прочерк значит только, что крейта нет в списке CI. Собраться в таком режиме он все равно может.
С каких крейтов начать
Заголовок раздела «С каких крейтов начать»В таблице ниже названы крейты, с которых стоит начать в пяти видах проектов. Ни один из них не опубликован на crates.io, поэтому в каждой строке нужна git-зависимость, о ней рассказывает страница Использование крейтов в своем проекте. Примеров использования библиотеки пока нет, а первый рабочий пример - разбор SNBT.1
| Что вы пишете | С чего начать | Состояние |
|---|---|---|
| Прокси | mcrs_minecraft_protocol и mcrs_minecraft_network. Оба в списке “без Bevy”, и xtask проверяет, что они не линкуют игровые данные |
Крейты есть. Саму библиотеку прокси с маршрутизацией и пересылкой отслеживает В работе#296, онлайн-режим - В работе#82 |
| Бот | Те же два крейта и mcrs_minecraft_client_world, который хранит состояние мира клиента без окна и рендерера. В списке “без Bevy” его нет |
Состояние клиента отделено от рендеринга (Работает#301). Бота-ходока отслеживает В работе#302 |
| Карта или просмотрщик мира | mcrs_minecraft_anvil для регионов (он есть и в списке wasm32), mcrs_minecraft_chunk и mcrs_minecraft_block для данных, mcrs_minecraft_mesh для мешей |
Крейты есть. Тайлы вида сверху без окна отслеживает В работе#297, просмотрщик моделей - В работе#298 |
| Инструмент для NBT, команд или датапаков | mcrs_minecraft_nbt, mcrs_minecraft_snbt, mcrs_command, mcrs_minecraft_datapack |
Крейты есть. mcrs_command и mcrs_minecraft_snbt читают и пишут то же, что читает и пишет игра |
| Предпросмотр генерации мира | mcrs_minecraft_worldgen_generator и крейты mcrs_minecraft_worldgen_* |
Предпросмотр по сиду через публичный API отслеживает В работе#299. Сам генератор совпадает с ванилью в parity-тестах на эталонных сидах |
“Крейты есть” значит, что они собираются в этом репозитории. Стабильный API ни один из них не обещает, а README есть только у шести крейтов.
Все крейты по слоям
Заголовок раздела «Все крейты по слоям»Слой 1: протокол
Заголовок раздела «Слой 1: протокол»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_command |
Дерево команд, парсер и подсказки, которые совпадают с Brigadier, без аллокаций при разборе | да | да | - |
mcrs_minecraft_chat |
Правила чата, общие для клиента и сервера: допустимые символы сообщения, предел длины и нормальная форма | да | да | - |
mcrs_minecraft_core |
Направления, числовые операции, формы, кодеки и версия | да | - | - |
mcrs_minecraft_game_mode |
Режимы игры игрока, их имена и сетевые формы | да | - | - |
mcrs_minecraft_keys |
Имена ванильных реестров (registry), которые не ключуются типом ни в одном крейте, с их записями и тегами | да | - | да |
mcrs_minecraft_nbt |
Теги и compound NBT, бинарное чтение и запись в big-endian кодировке Java и двух little-endian кодировках Bedrock, кодеки serde | да | - | - |
mcrs_minecraft_numeric |
Побитово точные числовые операции: целочисленное деление, сравнения, интерполяция, оборот угла, таблицы синусов и арктангенс | да | - | - |
mcrs_minecraft_profile |
Игровые профили, их свойства и разрешаемый профиль головы игрока | да | - | - |
mcrs_minecraft_protocol |
Библиотека протокола Minecraft: Java Edition: фрейминг, сжатие и пакеты handshake, status, login и configuration | да | - | да |
mcrs_minecraft_random |
Генераторы случайных чисел игры: legacy, xoroshiro и форки для генерации мира | да | - | - |
mcrs_minecraft_resource |
Resource location, ключи ресурсов, ключи тегов, ключи реестров и идентификаторы реестров | да | - | - |
mcrs_minecraft_snbt |
Чтение и запись stringified NBT так, как это делает игра | да | - | - |
mcrs_minecraft_text |
Текстовые компоненты: содержимое, стиль, события клика и наведения, кодеки JSON и NBT | да | - | - |
mcrs_minecraft_wire |
Трейты encode и decode, целые переменной длины и кодеки примитивов для протокола Minecraft: Java Edition | да | - | да |
mcrs_minecraft_wire_macros |
Derive-макросы для трейтов кодеков из mcrs_minecraft_wire |
да | - | - |
mcrs_molang |
Компилятор Molang, скалярный и пакетный вычислитель, не привязанный к игровому хосту | да | да | - |
mcrs_voxel |
Позиции блока, секции, колонки и локальные позиции, а также id состояния блока вокселного мира | да | да | - |
Слой 2: сеть
Заголовок раздела «Слой 2: сеть»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_minecraft_network |
Сетевая библиотека Minecraft: Java Edition | да | - | - |
Слой 3: игровые данные и правила
Заголовок раздела «Слой 3: игровые данные и правила»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_minecraft_anvil |
Файлы регионов Anvil: чтение и запись чанков, палитры, retrogen | да | - | да |
mcrs_minecraft_assets |
Загрузка датапаков: загрузчики JSON, доступ к реестрам и состояние загрузки | - | - | - |
mcrs_minecraft_biome |
Биомы, климатические параметры и источники биомов | да | - | - |
mcrs_minecraft_biome_file |
Файл биома в том виде, как его пишут датапаки, его встроенный черновик и колонки, в которых он хранится | да | - | да |
mcrs_minecraft_block |
Определения блоков и жидкостей, теги блоков и цвета карты | да | - | - |
mcrs_minecraft_block_entity |
Блочные сущности в типизированной форме, общей для сохранения, пакета чанка и читателя anvil | да | - | - |
mcrs_minecraft_block_predicate |
Состояния блоков, предикаты блоков и поставщики состояний блоков в том виде, как их пишут датапаки | да | - | - |
mcrs_minecraft_brain |
Стадия ИИ мобов без Bevy: реплика снапшота, выдача и отложенное применение решений, ключевые случайные значения, расписание пробуждения и селектор целей | да | да | - |
mcrs_minecraft_chunk |
Секции чанка, палитры, хранилище света и высоты колонок | да | - | - |
mcrs_minecraft_client_jar |
Находит, скачивает и распаковывает ванильный jar клиента | да | - | - |
mcrs_minecraft_collision_table |
Строит таблицу коллизий ядра физики по определениям блоков и тегам блоков | да | - | - |
mcrs_minecraft_command |
Источник команды, права, идентификаторы и тексты ошибок, общие для ванильных семейств аргументов, а также пакеты команд игрока | да | - | - |
mcrs_minecraft_command_argument |
Аргументы: ресурс, ключевое слово, координата, поворот, swizzle и время | да | - | - |
mcrs_minecraft_command_argument_block |
Аргумент-предикат блока и его проверка состояния блока | да | - | - |
mcrs_minecraft_command_argument_entity |
Аргумент-селектор сущностей и поиск сущностей, на которые указывает селектор | да | - | - |
mcrs_minecraft_command_argument_vanilla |
Ванильный набор аргументов, его ошибки, его парсеры в сетевой форме и клиентское дерево команд | да | - | - |
mcrs_minecraft_command_registry |
Реестры и таблица блоков, которые хост одалживает аргументам команд | да | - | - |
mcrs_minecraft_command_tree |
Узлы дерева команд, которые несет пакет команд | да | - | - |
mcrs_minecraft_damage |
Процедура удара по живой сущности без Bevy: перезарядка урона, изменение здоровья, начало смерти и запись об ударе | да | - | - |
mcrs_minecraft_datapack |
Стек датапаков: выбор паков, pack.mcmeta, оверлеи, фильтры и файлы, которые дает каждый пак | - | - | - |
mcrs_minecraft_dimension |
Значения реестров измерений и типов измерений | да | - | - |
mcrs_minecraft_enchantment |
Файл зачарования и ключи реестров зачарований | да | - | да |
mcrs_minecraft_entity |
Простые типы идентичности из реестров домена сущностей и таблица данных типов сущностей | да | - | - |
mcrs_minecraft_entity_key |
Ключи сущности без ядра физики: ее id, ее UUID как ключ порядка, источники нового UUID, ее ключевой поток случайных чисел и тайл, в котором она лежит | да | да | - |
mcrs_minecraft_entity_rows |
Строки серверных сущностей по тайлам с колонкой для горячего состояния мобов: сетка тел, точка слияния, сон и пробуждение тайлов и проход по сущностям поверх ядра физики | да | - | - |
mcrs_minecraft_environment |
Атрибуты окружения, таймлайны и часы мира | да | - | - |
mcrs_minecraft_game_registries |
Словарь ванильных типов блоков и предметов Minecraft и статические реестры | да | - | - |
mcrs_minecraft_game_rule |
Игровые правила, их категории, типы значений, значения по умолчанию и границы | да | - | да |
mcrs_minecraft_goal_world |
Блочный мир целей мобов только для чтения: ячейка земли под позицией блока, высота постройки, линия видимости и прямой маршрут по проходимой земле | да | да | - |
mcrs_minecraft_goals |
Цели пассивных мобов для стадии ИИ: плавание, паника, случайная прогулка, взгляд на игрока и осмотр, поиск случайных позиций, список целей свиньи и мозг каждого типа моба с целями | да | да | - |
mcrs_minecraft_heightmap |
Четыре карты высот колонок, предикаты состояний блоков, которые они проверяют, и спуск, который их строит | да | - | - |
mcrs_minecraft_item |
Предметы, компоненты данных предметов, патч компонентов, постоянный стек предметов, зачарования и отделка брони | да | - | - |
mcrs_minecraft_lang |
Языковой файл игры: паттерны перевода по ключу и подстановка в их плейсхолдеры | да | - | - |
mcrs_minecraft_light_color |
Цвета света состояний блоков и свет, который излучает предмет в руке | да | - | - |
mcrs_minecraft_light_engine |
Распространение блочного и небесного света по секциям без Bevy | да | - | - |
mcrs_minecraft_loot |
Ключи реестров лута | да | - | да |
mcrs_minecraft_mob_control |
Покадровые контроллеры моба без Bevy: следование по прямому маршруту, контроль движения, прыжка, взгляда и поворота тела | да | - | - |
mcrs_minecraft_move_predict |
Проверки движения с миром: предсказание каждого тика клиента игрока по модели физики | да | - | - |
mcrs_minecraft_move_validate |
Проверки движения без мира: один пакет от клиента и поток одного соединения | да | - | - |
mcrs_minecraft_noise |
Шум Перлина, симплекс-шум, нормальный и смешанный шум, а также типы интервалов и сеток, по которым они берутся | да | - | - |
mcrs_minecraft_particle |
Типы частиц и их параметры в том виде, как их пишут датапаки и атрибуты | да | - | - |
mcrs_minecraft_physics |
Ядро физики сущностей: боксы, формы блоков, алгоритм коллизий, шаг на ступеньку и процедура перемещения | да | - | - |
mcrs_minecraft_predicate |
Ключи реестров предикатов сущностей и статистики | да | - | да |
mcrs_minecraft_protocol_game |
Пакеты состояния play в Minecraft: Java Edition, которые несут игровые данные: чанки, сущности, предметы, рецепты и чат | да | - | да |
mcrs_minecraft_registries |
Таблицы реестров, теги и загрузчик реестров | да | - | - |
mcrs_minecraft_registries_derive |
Атрибут registry_value и derive Resolve для mcrs_minecraft_registries |
- | - | - |
mcrs_minecraft_registry_catalog |
Записи каждого статического реестра | да | - | да |
mcrs_minecraft_save |
Файлы сохранения мира, кроме регионов: level, настройки генерации мира и файл каждого игрока | - | - | - |
mcrs_minecraft_simulation |
Ядра симуляции блоков: цепочка шагов и обновлений по объему, их очереди и политики порядка | да | - | - |
mcrs_minecraft_sound |
События звука | да | - | - |
mcrs_minecraft_text_flatten |
Текстовый компонент как ровный ряд отрезков со стилем: переводы заполнены из языкового файла, стили унаследованы, из отрезков собираются простая строка и строка с кодами форматирования | да | - | - |
mcrs_minecraft_value_provider |
Поставщики int, float и высоты и их кодеки | да | - | - |
mcrs_minecraft_volume |
Один API доступа к блокам поверх всех хранилищ данных мира: границы, доступ по секциям, дескрипторы секций и курсоры | да | - | - |
mcrs_minecraft_worldgen |
Генератор мира: реестры генерации, их загрузчики и beardifier | да | - | - |
mcrs_minecraft_worldgen_builtin |
Записи реестров генерации, которые определяют игра и пресет beta, построенные кодом | да | - | - |
mcrs_minecraft_worldgen_carver |
Карверы пещер и каньонов | да | - | - |
mcrs_minecraft_worldgen_density |
Функции плотности, их компилятор и вычислитель, роутер шума и aquifer | да | - | - |
mcrs_minecraft_worldgen_feature |
Настроенные и размещенные фичи, модификаторы размещения, шаблоны структур и генераторы фич | да | - | - |
mcrs_minecraft_worldgen_feature_place |
Генераторы фич: деревья, руды, жеоды, шаблоны и все остальное, что пишет размещенная фича | да | - | - |
mcrs_minecraft_worldgen_generator |
Конвейер колонки генератора чанков на шуме: заполнение, поверхность, карверы, фичи, структуры и чтение из сохранения | да | - | - |
mcrs_minecraft_worldgen_structure |
Структуры, наборы структур, пулы шаблонов, сборка jigsaw и размещение структур | да | - | - |
mcrs_minecraft_worldgen_structure_place |
Что пишут жестко заданные части структур: холст части, художники по семействам и хуки после размещения | да | - | - |
mcrs_minecraft_worldgen_surface |
Правила поверхности: компилятор и вычислитель правил материала | да | - | - |
mcrs_minecraft_worldgen_testing |
Поставляемый корпус ассетов и дампы оракула, которые читаются в тестах | да | - | - |
Слой 4: движок
Заголовок раздела «Слой 4: движок»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_engine_cell |
Миры, которые тикают синхронно: входные данные передаются во владение, выходные тоже, каждый мир стоит прямо в вызове или в собственном потоке | да | - | - |
mcrs_engine_link |
Связь между двумя частями движка: сообщения передаются во владение в обе стороны, а дальний конец стоит прямо в вызове или в собственном потоке | да | - | - |
mcrs_engine_muxer |
Раздает изменения мира его наблюдателям: тайлы и потоки тайлов для сущностей, потоки версий для чанков и байты, закодированные один раз и общие | да | - | - |
mcrs_engine_store |
Слой данных: версионированные чанки по ключу в кеше в памяти поверх дискового хранилища, которое дает игра, доступный как стадия на связи | да | - | - |
mcrs_minecraft_chat_server |
Обработка чата сервером в виде плагина, который пользователь может заменить | - | - | - |
mcrs_minecraft_command_engine |
Дерево команд, регистрация команд и запуск командных строк игроков внутри тика мира каждого измерения | - | - | - |
mcrs_minecraft_dimension_environment |
Типы измерений и слои атрибутов окружения измерения | да | - | - |
mcrs_minecraft_engine |
Шина пакетов, мост между сетью и мирами измерений, сессии, хостовая сторона каналов измерений, состояние игрока, общее для хоста и измерений, часы мира хоста и поддержание карт высот | - | - | - |
mcrs_minecraft_engine_brain |
Стадия ИИ мобов мира измерения: хост, который публикует снапшот строк мобов, запускает стадию по тайлам рядом с проходом по сущностям, применяет решения через контроллеры мобов и управляет строками | - | - | - |
mcrs_minecraft_engine_mob_replication |
Проекция репликации мобов мира измерения в Bevy: читает хранилище строк и изменения мобов за тик и пишет события тайлов мобов для muxer | - | - | - |
mcrs_minecraft_engine_physics |
Проход по сущностям мира измерения в Bevy: хранилище строк как ресурс, обобщенный по колонке мобов, точка слияния, заморозка и проход как системы, предметы только в строках и строки мобов с их жизненным циклом и событиями тайлов | - | - | - |
mcrs_minecraft_engine_registries |
Загружает реестры, блоки и предметы приложения из файлов его паков, проводит его до состояния playing и передает снапшот каждому миру измерения | - | - | - |
mcrs_minecraft_engine_server |
Серверные плагины движка без ванильного поведения: ядро, миры измерений, слушатель с login, configuration, keep-alive и status и серверный цикл | - | - | - |
mcrs_minecraft_engine_world |
Сущности чанков и колонок, измерения, тикеты, область интереса, сессии, серверный цикл, обновления и дропы блоков, игровые правила, а также сид мира, часы рождения и id сущностей, которые берут новые сущности | - | - | - |
mcrs_minecraft_replication |
Сторона Minecraft в репликации сущностей: кодек muxer для игроков и мобов, трекеры мобов, базы дельт для перемещений, пакеты появления, записи профилей и политика списка игроков, в виде закодированных пакетов | да | - | - |
Слой 5: ваниль
Заголовок раздела «Слой 5: ваниль»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_minecraft_command_vanilla |
Ванильные команды execute, gamemode, teleport, locate, summon и time и эффекты команд, которые они пишут | - | - | - |
mcrs_minecraft_command_world |
Команды, которые меняют мир и сервер: fill, forceload, gamerule, weather clear, а также tick query и sprint | - | - | - |
mcrs_minecraft_vanilla_light |
Ванильный свет, подключенный к мирам измерений: таблица света блоков, драйвер светового движка каждого измерения и обновления света, отправляемые игрокам | - | - | - |
mcrs_minecraft_vanilla_worldgen |
Генерация мира, подключенная к мирам измерений: роутеры, карверы, фичи и структуры каждого измерения и планировщик колонок, который генерирует или читает свои колонки | - | - | - |
Слой 6: рендеринг
Заголовок раздела «Слой 6: рендеринг»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_minecraft_entity_animation |
Анимация сущностей на CPU: клипы, ключевые кадры, список воспроизведения клиентской сущности, ее скрипты и поза костей кадра | да | - | - |
mcrs_minecraft_entity_model |
Файлы геометрии сущностей формата Bedrock: чтение, запекание в статическую модель и записи моделей для GPU | да | - | - |
mcrs_minecraft_entity_render |
Рендеринг сущностей под управлением GPU: постоянные слоты, отсечение сущностей, проходы позы и расширения и отрисовка записей граней в gbuffer | - | - | - |
mcrs_minecraft_light_render |
Цветной блочный свет для прохода освещения: постраничный объем света, который распространяется на GPU | - | - | - |
mcrs_minecraft_mesh |
Построение мешей секций: жадные грани кубов, жидкости, модели блоков, упакованная раскладка квадов и арена буферов | да | - | - |
mcrs_minecraft_model |
Модели блоков и предметов, запеченные из ресурспака Minecraft: пак, файлы моделей, атлас спрайтов, каталог блоков и деревья моделей предметов | - | - | - |
mcrs_minecraft_model_file |
Файлы моделей блоков, файлы состояний блоков и запекание граней ресурспака, без Bevy | да | - | - |
mcrs_minecraft_pack_file |
Файлы пака сущностей: нестрогий JSON, файл клиентской сущности, диагностика загрузки и компиляция полей Molang | да | - | - |
mcrs_minecraft_render |
Отложенный рендерер ландшафта и неба: G-buffer, один полноэкранный проход освещения и прямые прозрачные объекты, отрисовываемые по упорядоченным стадиям прохода мира | - | - | - |
mcrs_minecraft_render_controller |
Контроллеры рендера клиентской сущности: слои, их геометрия, текстура и видимые кости в кадре | да | - | - |
mcrs_minecraft_render_probe |
Тайминги проходов GPU, тайминги стадий CPU, счетчики отрисовки и прогрев GPU для рендерера ландшафта | - | - | - |
mcrs_molang_wgsl |
Понижение чистых каналов Molang до WGSL и математическая библиотека WGSL | да | да | - |
Слой 7: приложения
Заголовок раздела «Слой 7: приложения»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_minecraft_chat_client |
Экран чата клиента без рендеринга: поле ввода, история, клиентские подсказки команд, строки подсказок и журнал чата | да | - | - |
mcrs_minecraft_client |
Клиент Minecraft: окно, корпус ассетов, реестры окружения и вокселный рендерер | - | - | - |
mcrs_minecraft_client_entity |
Клиентское состояние сущностей, которые добавляет сервер: движение, интерполяция, рыскание головы и тела, ходьба, удар и смерть, а также значения, которые читает рендерер | - | - | - |
mcrs_minecraft_client_gui |
GUI клиента Minecraft: хотбар, экраны инвентаря и чата, переключатель режимов игры, модели предметов в слотах и экран отладки F3 | - | - | - |
mcrs_minecraft_client_world |
Состояние мира клиента Minecraft без окна и рендерера: реестры сессии, колонки, локальный игрок, режим игры и чат | - | - | - |
mcrs_minecraft_console |
Консоль сервера: командные строки со стандартного ввода выполняются от имени сервера, а ответы идут в лог на английском | - | - | - |
mcrs_minecraft_server |
Серверное приложение: группа плагинов, которая ставит ванильное поведение на сервер движка | - | - | - |
mcrs_minecraft_server_settings |
Настройки запуска сервера, которые задают переменные окружения MCRS_, читаемые в одном месте | да | - | - |
Вспомогательное
Заголовок раздела «Вспомогательное»| Крейт | Описание | Без Bevy | no_std | wasm32 |
|---|---|---|---|---|
mcrs_test_alloc |
Глобальный аллокатор, который считает аллокации вызывающего потока, для тестов | да | - | - |
Зачем некоторым крейтам Bevy
Заголовок раздела «Зачем некоторым крейтам Bevy»Ниже слоя 4 Bevy - необязательная feature, а ниже слоя 2 необязателен и tokio. Начиная со слоя 4 Bevy обязателен, потому что движок, ванильные плагины, клиент и сервер написаны как плагины Bevy. Если нужны только типы данных и кодеки, оставайтесь в слоях с 1 по 3 и собирайте с --no-default-features. Слои 4 и 5 разобраны на странице Слои.
Footnotes
Заголовок раздела «Footnotes»Источники и проверка
Проверено: 26.4-snapshot-7, 3540f457b, 2026-11-10
Переведено с версии 3540f457b