Ludovic Marie a93c0e1f11 Merge pull request #11687 from horizon-rust/fix/say-capture-broadcast
🤖 Agent: #10015's early return dropped /say from chat_capture, so command_exec lost 26 announcement lines; the broadcast now skips only the acting guest (lan_acting), whose copy stays in the capture in order. Console and command-block paths are unchanged. command_exec PASS fresh on the desktop; the control on main 004a39be0 FAILs 16320/16346.
2026-11-07 10:16:35 +01:00

Horizon: the game you know, rebuilt in Rust

Website · Download · Docs · Discord · Roadmap · Contributing

Vanilla parity 100% Player-visible gaps open

Horizon

Minecraft: Java Edition 26.3, rewritten in Rust. Your worlds, the same rules and the same terrain as the Java game, checked against it by hundreds of differential tests, in one native program with no Java. Free, open source (MIT) and unofficial: you play it with your own copy of Java Edition.

A river valley with a plains village, savanna hills and a cherry grove, seen from above with a long view distance

What works today

Everything below is in the current release.

  • The game. Survival, creative, hardcore and spectator; vanilla world generation in all three dimensions, mobs, villagers, raids, redstone, every command, the HUD and the recipe book. Vanilla saves open as they are, and worlds from 1.8 to 26.2 are upgraded.
  • Multiplayer. Join vanilla and Horizon servers (online mode included), open a world to LAN, or invite friends with a code from the launcher's Home page.
  • Graphics. Distant terrain up to 1,024 chunks, graphics presets, HDR and controllers, all off by default where they would change the vanilla look (settings).
  • Packs. Resource packs, data packs and shader packs (below).
  • Mods. Content mods and native Rust mods, installed from the launcher (below).
  • Servers. Host one from the launcher, or run horizon-server on a VPS (below).
  • The launcher. It installs and updates the game, prepares its files from your copy of Minecraft, and updates itself.
Sunset behind a cherry grove on a hill, with a river below A crimson forest in the Nether, with a piglin among the fungi
Survival in a village square: two villagers, flowers, the hotbar, health and hunger Two players in a LAN world: the other player's name tag and the player list

Nightly 2026-11-05 on a Mac mini (Apple M4 Pro, Metal): vanilla's textures, no mods or shader packs, render distance 32 with distant terrain on.

Download

Get the Horizon launcher from playhorizon.dev, or from the launcher releases:

Platform File Needs
Windows x64 horizon-launcher-setup.exe Windows 10 or 11, a GPU with Vulkan or DirectX 12
Windows on Arm horizon-launcher-setup-arm64.exe Windows 11 on Arm
macOS, Apple Silicon horizon-launcher-macos-arm64.dmg macOS 12 or later
macOS, Intel horizon-launcher-macos-x64.dmg macOS 12 or later
Linux x86-64 horizon-launcher-linux-x86_64.AppImage or .tar.gz a glibc distribution, X11 or Wayland, a GPU with Vulkan or OpenGL 3.3

You also need a Microsoft account that owns Minecraft: Java Edition. You sign in with it in the launcher, which plays only with an account that owns the game (why). Horizon contains no Minecraft code or assets: an existing install (official launcher, Prism, MultiMC...) is reused, and without one the launcher downloads 26.3 from Mojang for your account. Step by step: Install and first launch.

The launcher's Home page: the Horizon instance, Play, the version picker, the friend invite field, screenshots and the patch log The launcher's Mods page: Horizon's mod registry with Zoom selected, and tabs for modpacks, resource packs, shader packs and data packs

Mods and shader packs

  • Content mods (.hmod): blocks, items, recipes, loot, models and textures, with no code.
  • Native mods (.hnmod): Rust that the launcher compiles into the game for you, with nothing to install.
  • Java mods (Fabric, NeoForge, Forge) don't run: Horizon has no Java. The launcher carries over the data and assets inside their jars, and imports modpacks (.mrpack, CurseForge zips, Prism instances) the same way (modpacks).
  • Shader packs: Iris/OptiFine-format packs (shaders/ folders) and Horizon's own WGSL packs, under Video Settings → Shader Packs (pack format).

Mods are off by default: a fresh install plays exactly like vanilla 26.3. The launcher's Mods page browses Horizon's registry and Modrinth. Mods · make a mod.

Host a server

The launcher's Servers page creates, starts, backs up and updates a server, and invites friends. On a VPS, horizon-server installs with one command, needs no Java, and takes vanilla 26.3 and Horizon players alike. Host a server (reference).

Agent control

AI agents and scripts can play Horizon. horizon-ctl, shipped with the game, reads its state as JSON and acts like a player; horizon-ctl mcp serves the same commands over MCP.

horizon-ctl launch --world Survival --seed 5 --wait   # finds the version the launcher installed
horizon-ctl state                                       # position, health, food, target, screen...
horizon-ctl goto -0.5 65 -2.5 --near 2.5                # walks there along a path
horizon-ctl break -1 65 -3                              # mines it; replies with the drops

horizon-ctl help lists every command. Agent control.

Build from source

Needs Rust 1.90+, Python 3.10+, JDK 25, and on Linux libasound2-dev libudev-dev. horizon-prepare builds the game's resources from your own copy of Java Edition 26.3 (checked against research-lock.json) and never downloads it:

  1. Client: play 26.3 once in the official launcher. Horizon reads ~/.minecraft (or --minecraft-dir / HORIZON_MINECRAFT_DIR).
  2. Server jar: the 26.3 server jar (downloads.server.url in versions/26.3/26.3.json), passed once with --server-jar or HORIZON_SERVER_JAR.
git clone https://github.com/horizon-rust/horizon.git
cd horizon
cargo run --release -p horizon-prepare -- --prepare --server-jar ~/Downloads/server.jar   # needs JDK 25
cargo run --release -p horizon-prepare -- sounds   # optional: sounds from your launcher install
cargo run --release -p horizon-client

Prepared files land in the gitignored .local/: never commit or share them. Options, controls and architecture: the native client guide; all developer docs: docs/README.md.

Contributing

Issues and pull requests are welcome: read CONTRIBUTING.md (vanilla first, small pull requests), and see ROADMAP.md or playhorizon.dev/hub for what's next. Questions: Discord. Before a pull request, run the self-check and paste its output:

git config core.hooksPath .githooks
python3 tools/pr_ready.py

It runs rustfmt, clippy, the touched crates' tests, the Python tests, the public-tree check and the vanilla harnesses your change affects. Never commit game files, decompiled source or prepared resources.

Project status

Player-visible gaps: 0 open of the 833 the port ledger found, reading every vanilla 26.3 method against Horizon's code: vanilla behaviour a player would notice that Horizon doesn't have yet. By area: Animals 0; Monsters and bosses 0; Entities, projectiles, vehicles and decorations 0; Items, enchantments and inventories 0; Blocks, redstone and fluids 0; World, world generation and saves 0; Screens, HUD and client packets 0; Entity and block rendering, models 0; Server and players on the server 0; Mob AI, villagers and raids 0. This number goes down as gaps close (tools/parity_gaps.py); the harness results below say that what is tested matches.

The table is the project's own audit: every subsystem matches vanilla in every harness that compares it. 100% means 100% of what the harnesses compare, not that nothing else differs. What players still run into: known issues.

Java parity: 100%

Scores: 0 (absent), 0.25 (started), 0.5 (playable, major features missing), 0.75 (mostly complete) or 1 (complete and verified by differential tests); the percentage is their average. Last audited 2026-10-13: the harnesses pass on Linux and macOS. The port ledger adds a method-by-method view of what is ported.

Subsystem Score Main gaps
Window, input and game loop 1 None: game loop, options, camera, auto-jump, toggle sprint/sneak and frame limiter match
Assets and resources 1 None: item models match over 196,290 stacks; the resource pack screen over 3,000 sessions
Network protocol and multiplayer 1 None: joins vanilla servers; the dedicated server matches vanilla's files, login, configuration, play and command tree; LAN discovery over 462 cases (offline mode only)
Chunk storage and palettes 1 None: client and saves share paletted containers, identical to vanilla over 266 scenarios
Section meshing 1 None: 112 scenes and over a million quads identical to vanilla
Rendering 1 None: entity models, block entity renderers (407 cases) and animations (296), HUD overlays (2,200 states), the recipe book (600), player list, subtitles and world border match
Lighting 1 None: saved and relit light matches vanilla, slabs and stairs included
World generation 1 None: 2,352 whole chunks over 225 structure sites, in all three dimensions, identical to vanilla
Region files and saves 1 None: saves round-trip with vanilla; worlds from 1.8 to 26.2 upgrade as vanilla's DataFixers do
Entities and physics 1 None: attributes, spawn rules, natural spawning (15,500 cases), raids and patrols (1,900), finalizeSpawn (24,000) and mob AI (92 scenarios) match
Interaction and inventory 1 None: menu clicks over 8,000 sequences; recipe book placement (6,000), buttons (1,200), saved book (1,500), loom and crafter screens (1,600)
Menus, HUD and chat 1 None: every command (758 over 39,685 inputs), scoreboards (81,000 operations), the player list (872,000 draw calls), chat and its suggestions (3,000 sessions) match
Audio 1 None: the sound engine, sound events, music, situational music, ambience and subtitles match vanilla
Block behaviours and ticking 1 None: block updates, random ticks, redstone, dispensers (6,000 cases), crafters (4,000), container spills (4,000), copper golems and the sculk family (435 scenarios) match

Licence

MIT, for the project's original work; dependencies keep their own licences (notices). Horizon is made by Ludovic Marie (@ludovic111) and its contributors; support it on GitHub Sponsors.

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT. Minecraft is a trademark of Mojang Synergies AB; its code and assets belong to Mojang and Microsoft under the Minecraft EULA.

S
Description
Minecraft: Java Edition 26.3 rewritten from scratch in Rust, checked against vanilla with 281 differential harnesses. Get it with the Horizon launcher.
Readme MIT
555 MiB
0 Stars 1 Watchers 0 Forks
2026-11-06 17:31:20 -10:00
Languages
Rust 81.2%
Python 12.7%
Java 5.4%
WGSL 0.4%
Shell 0.1%