Моды, которым можно доверять
Ядро модов для Horizon — Minecraft: Java Edition, переписанного на Rust. Каждый мод живёт в песочнице WebAssembly, ставится одним файлом и перезагружается за секунду, не выходя из мира.
Сделать первый мод → Документация.hmod — весь модЗачем
То, чего нет у привычных загрузчиков
Forge и Fabric запускают моды как обычный Java-код с полным доступом к компьютеру. Здесь мод — гость.
Мод не видит ваши файлы и сеть. Что ему можно, написано рядом с его переключателем.
Пересобрали — игра подхватила. Для установленных модов есть /hmod reload.
Положили .hmod в папку и включили. Ничего не компилируется на вашей машине.
Упавший или зависший мод останавливается сам. Игра и остальные моды работают дальше.
Блоки, предметы, мобы, механизмы с энергией и жидкостями, окна, события, генерация мира.
cargo horizon-mod test гоняет сценарии в той же песочнице, без окна и без мира.
Для игроков
Вы решаете, что можно моду
- Новые моды выключены. Включаете сами, увидев, что им разрешено.
- Разрешения — простыми словами: «видит вашу позицию», «рисует текст на экране».
- Нативные платы помечены красным
[UNSAFE]: их включают, только если доверяют автору.
Для авторов
Мод — это обычный Rust
Манифест говорит, что моду нужно, код говорит, что он делает. Вот мод целиком: алмазный блок не сломать.
use horizon_mod_sdk::server::{BlockPos, Player, Registration, ServerMod, players}; struct BlockGuard; impl ServerMod for BlockGuard { fn init() -> Result<(Self, Registration), String> { Ok((BlockGuard, Registration::new().on_blocks())) } // true — блок остаётся на месте fn break_block(&mut self, player: &Player, _pos: BlockPos, state: &str) -> bool { let guarded = state == "minecraft:diamond_block"; if guarded { players::tell(&player.id, "This block is guarded"); } guarded } } horizon_mod_sdk::export_server_mod!(BlockGuard);
id = "block_guard" name = "Block Guard" version = "0.1.0" api = "0.3" side = "server" # всё, что моду можно; остального он не получит capabilities = ["players"]
Начать
Первый мод за десять минут
Нужны Rust и собранный Horizon.
rustup target add wasm32-unknown-unknown, затем cargo install --git https://github.com/artemspt/horizon-hammer-core cargo-horizon-mod
cargo horizon-mod new my-mod — манифест, код и пример теста.
cargo horizon-mod run. После каждой правки — build, игра перезагрузит мод сама.
Ядро растёт вместе с модами
Напишите мод, расскажите, чего не хватает API, или пришлите правку.
Открыть на GitHub Предложить идею