horizon

horizon-rustMIT活跃维护

用 Rust 从零重写的 Minecraft Java 版,靠 281 个差分测试与官方原版逐项比对行为,配 Horizon 启动器直接开玩。

Minecraft: Java Edition 26.3 rewritten from scratch in Rust, checked against vanilla with 281 differential harnesses. Get it with the Horizon launcher.

[email protected]发布于 2026-11-09 10:08 UTC8,589star +670 / 7 天1,378fork同步于 2026-11-10 23:32 UTC

怎么上手

由 README 提炼,执行前请确认
从 playhorizon.dev 下载 Horizon 启动器安装包(如 horizon-launcher-setup.exe),在启动器中用拥有 Minecraft: Java Edition 的微软账号登录
硬件要求按 README 说明

Windows 10/11 需支持 Vulkan 或 DirectX 12 的 GPU;macOS 12+(Apple Silicon 或 Intel);Linux 需支持 Vulkan 或 OpenGL 3.3 的 GPU。README 未给出具体显存要求。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 Rust 重写的 Minecraft Java 版 26.3,无需 Java 即可原生运行,并兼容原版存档与服务器

用 Rust 从零重写的 Minecraft Java 版,靠 281 个差分测试与官方原版逐项比对行为,配 Horizon 启动器直接开玩。

核心能力

  • 用 Rust 原生实现游戏,不依赖 Java 运行时
  • 通过数百个差分测试逐项对照原版行为
  • 支持原版存档直接打开,并升级 1.8 到 26.2 的世界
  • 可加入原版服务器,也能从启动器开服或联机
  • 支持资源包、数据包、光影包和 Rust 原生模组

容易踩的坑

必须使用拥有 Minecraft: Java Edition 的微软账号登录,启动器只允许拥有该游戏的账号游玩;Horizon 不含 Minecraft 代码或资源,需复用已有安装,否则启动器会从 Mojang 下载 26.3;Java 版 Fabric/NeoForge/Forge 模组无法运行,只能导入其中的数据与资源。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本[email protected]
  1. [email protected]Horizon launcher 0.2.58最新正式版2026-11-09 · 2026-11-09 10:08 UTC

    New

    • Launcher: the 155 strings Kazakh still shows in English (#13525, fixes #13374)
    • Launcher: the 131 strings Venetian still shows in English (#13520, fixes #13518)
    • Launcher: the 210 strings West Frisian still shows in English (#13519, fixes #13375)
    • Launcher: the 119 strings Azerbaijani still shows in English (#13515, fixes #13422)
    • Launcher: the 117 strings Mongolian still shows in English (#13509, fixes #13323)
    • Launcher: the 116 strings Slovenian still shows in English (#13508, fixes #13373)
    • Launcher: the 118 strings Icelandic still shows in English (#13507, fixes #13378)
    • Launcher: the 115 strings Basque still shows in English (#13506, fixes #13502)
    • Launcher: the 109 strings Tamil still shows in English (#13505, fixes #13324)
    • Launcher: the 136 strings Hawaiian still shows in English (#13503, fixes #13359)
    • Launcher: the 204 strings Latin still shows in English (#13501, fixes #13498)
    • Launcher: the 164 strings Luxembourgish still shows in English (#13500, fixes #13495)
    • Launcher: the 111 strings Macedonian still shows in English (#13452, fixes #13442)
    • Launcher: the 162 strings Maltese still shows in English (#13433, fixes #13345)
    • Launcher: the 117 strings Silesian still shows in English (#13430, fixes #13409)
    • Launcher: the 108 strings Serbian (Cyrillic) still shows in English (#13429, fixes #13405)
    • Launcher: the 124 strings Scottish Gaelic still shows in English (#13426, fixes #13399)
    • Launcher: the 109 strings Bashkir still shows in English (#13425, fixes #13400)
    • Launcher: the 125 strings Northern Sami still shows in English (#13424, fixes #13386)
    • Launcher: the 221 strings Turkish still shows in English (#13416, fixes #13394)
    • Launcher: the 110 strings Urdu still shows in English (#13414, fixes #13392)
    • Launcher: the 113 strings Tatar still shows in English (#13412, fixes #13390)
    • Launcher: the 131 strings Igbo still shows in English (#13472, fixes #13367)
    • Launcher: the 137 strings Dutch still shows in English (#13470, fixes #13435)
    • Launcher: the 172 strings Filipino still shows in English (#13466, fixes #13326)
    • Launcher: the 122 strings Irish still shows in English (#13458, fixes #13444)
    • Launcher: the 120 strings Zulu still shows in English (#13456, fixes #13443)
    • Launcher: the 128 strings Croatian still shows in English (#13454, fixes #13350)
    • Launcher: the 122 strings Estonian still shows in English (#13451, fixes #13352)
    • Launcher: the 166 strings Polish still shows in English (#13438, fixes #13417)
    • Launcher: the 114 strings Armenian still shows in English (#13436, fixes #13404)
    • Launcher: the 117 strings Lao still shows in English (#13308, fixes #13304)
    • Launcher: the 192 strings Indonesian still shows in English (#13301, fixes #13296)
    • Launcher: the 121 strings Hungarian still shows in English (#13300, fixes #13291)
    • Launcher: the 141 strings Afrikaans still shows in English (#13297, fixes #13286)
    • Launcher: the 120 strings Esperanto still shows in English (#13295, fixes #13284)
    • Launcher: the 111 strings Chuvash still shows in English (#13294, fixes #13282)
    • Launcher: the 109 strings Persian still shows in English (#13293, fixes #13283)
    • Launcher: the 211 strings Japanese still shows in English (#13292, fixes #13259)
    • Launcher: the 123 strings Lombard still shows in English (#13290, fixes #13279)
    • Launcher: the 126 strings Kyrgyz still shows in English (#13403, fixes #13357)
    • Launcher: the 150 strings Hebrew still shows in English (#13388, fixes #13372)
    • Launcher: the 185 strings Portuguese (Portugal) still shows in English (#13380, fixes #13327)
    • Launcher: the 132 strings Somali still shows in English (#13369, fixes #13348)
    • Launcher: the 111 strings Yiddish still shows in English (#13365, fixes #13344)
    • Launcher: the 135 strings Slovak still shows in English (#13364, fixes #13331)
    • Launcher: the 158 strings Ukrainian still shows in English (#13362, fixes #13332)
    • Launcher: the 116 strings Breton still shows in English (#13361, fixes #13338)
    • Lau
  2. [email protected]Horizon launcher 0.2.572026-11-09 · 2026-11-09 05:35 UTC
    查看更新说明

    New

    • Portuguese (Brazil): the 137 launcher strings still in English (remote servers, mods, installs) (#12772, fixes #12766)
    • German: the 213 launcher strings still in English (remote servers, mods, installs) (#12776, fixes #12767)
    • Italian: the 142 launcher strings still in English (remote servers, mods, installs) (#12777, fixes #12768)
    • French: the 55 launcher strings still in English (remote servers, editions, tags) (#12771, fixes #12765)
    • Mod API: typed inventory hooks and change events (split 8/9 of #12409) (#12890)
    • Launcher: let a bundle package depend on the bundle's own crates (split 9/9 of #12409) (#12891)
    • Content mods declare fluids, with network ids after vanilla's (#12967, fixes #5553)
    • Launcher: the 124 strings Friulian still shows in English (#13530, fixes #13363)

    Fixed

    • Port pack: carried mod features get 26.3's shape (config unwrapped), so mod ores generate (#12829, fixes #12828)

    Contributors

    Thanks to @Detimes, @RINNECODER, @iseaprojects, @k3yh.

    Your launcher updates itself. New here? On Linux take the .AppImage below, make it executable and run it; on Windows and macOS download the archive, extract it and run horizon-launcher (Horizon.app on macOS). Website: https://playhorizon.dev


    Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

  3. [email protected]Horizon launcher 0.2.562026-11-08 · 2026-11-08 21:54 UTC
    查看更新说明

    New

    • Content mods: choose light emission per block state (#11068, fixes #11063)
    • Launcher: a registry project's GitHub stars as a star, in the list and the card (#12670, fixes #12665)
    • Port pack: Lithostitched add_features/remove_features modifiers become NeoForge biome modifiers (#12695, fixes #12694)
    • Port pack: Lithostitched weighted_selector features become 26.3's weighted_random_selector (#12700, fixes #12698)

    Fixed

    • Launcher: native mod version follow-ups (kept versions, build fallback, changelogs) (#12535, fixes #12534)
    • Launcher Shop: draw the items on its pictures, no Buy on an owned pack (#12675, fixes #12674)
    • datafix: prepare the 1.13 data fixer tables from the player's jar (#12756, fixes #12745)
    • Prepare: find Prism Launcher's flat meta/net.minecraft/<version>.json (#12601, fixes #12582)
    • launcher: let the wheel reach the page when an inner list cannot scroll that way (#12658, fixes #12650)
    • launcher: the sidebar's update card and Discord button wrap long translations (#12646, fixes #12645)
    • Launcher on Windows: a program running from a version keeps it in use (#12596, fixes #12588)
    • Fix Czech translation (typos, grammar, terminology) (#12635, fixes #12585)
    • Registry: a new icon is a new address (#12667, fixes #12663)
    • Launcher: find a Java installed on the Windows PATH (#12692, fixes #12688)
    • Port pack: block state variants take 1.21.1's string booleans and numbers ("uvlock": "true") (#12697, fixes #12696)
    • Launcher: Find mods lists what works on the instance; builds start on its Horizon (#12710, fixes #12709)
    • servers: prevent child pipes hanging on Windows and use REST API for server controls (#12567)

    Contributors

    Thanks to @Art34222, @Delete228, @ItzKubass, @Joansitoh, @RINNECODER, @devtalh, @hildlabs, @iseaprojects, @oloion, @umbx-dot.

    Your launcher updates itself. New here? On Linux take the .AppImage below, make it executable and run it; on Windows and macOS download the archive, extract it and run horizon-launcher (Horizon.app on macOS). Website: https://playhorizon.dev


    Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

  4. [email protected]Horizon launcher 0.2.552026-11-08 · 2026-11-08 14:50 UTC
    查看更新说明

    New

    • Native hook: fishing_medium, a bobber that floats and fishes outside water (#12326, fixes #12300)
    • Port pack: food items carry over, as 26.3's food, consumable and use_remainder (#12426, fixes #12425)

    Fixed

    • launcher: a native mod's Versions tab shows which version fits, and picks one (#12357, fixes #12356)
    • Port pack: tags alone claim no namespace (#12412, fixes #12411)
    • Port pack: recipes with NeoForge conditions are upgraded when NeoForge loaded them (#12414, fixes #12413)
    • Port pack: carried models on 1.21.1's farmland template use 26.3's indented cube (#12416, fixes #12415)
    • upgrade-datapack: nether_forest_vegetation becomes 26.3's spread simple_block (#12422, fixes #12421)
    • upgrade-datapack: weird_scaled_sampler becomes 26.3's interval_select of scaled noises (#12424, fixes #12423)
    • Content mods: copy the files the build doesn't parse instead of reading and rewriting them (#12443, fixes #12442)
    • Port pack: an item that places a block of another name (seeds) binds that block (#12418, fixes #12417)
    • upgrade-datapack: 1.21.1 biomes upgrade their effects to 26.3 attributes and their carvers to a list (#12483, fixes #12482)
    • upgrade-datapack: surface rules drop the biomes nothing defines, as 1.21.1 never matched them (#12481, fixes #12480)
    • Port pack: without the oracle, armour the vanilla armour tags name is worn in its slot (#12516, fixes #12515)

    Contributors

    Thanks to @J5Casey, @RINNECODER, @umbx-dot.

    Your launcher updates itself. New here? On Linux take the .AppImage below, make it executable and run it; on Windows and macOS download the archive, extract it and run horizon-launcher (Horizon.app on macOS). Website: https://playhorizon.dev


    Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

  5. [email protected]Horizon launcher 0.2.542026-11-08 · 2026-11-08 07:56 UTC
    查看更新说明

    New

    • Port pack: carry 1.20 jars' data under 1.21's folder names (#12162)
    • Mod menu types: a crafting grid that crafts as the crafting table (#12233)
    • Mod menu types: linked slots that show other containers' slots (native_menu_links) (#12267)

    Fixed

    • Modpack import: don't report an empty shaderpacks/ folder as a shader pack (#12164, fixes #12163)
    • Find CurseForge instances when --folder names the Instances folder (#12080, fixes #12079)
    • launcher: give up on a keyring that never answers instead of hanging Play (#12179) (#12227, fixes #12179)
    • Translate remaining Russian strings in launcher and game (#11870)
    • Launcher: say what a data pack does in Horizon today, and install packs that only have recipes or worldgen (#12166, fixes #12165)
    • launcher: Home's patch log and console logs no longer scroll the page (#11860, fixes #11853)
    • Explain preparation failures caused by missing Java timezone data (#12285)

    Contributors

    Thanks to @IwantHappiness, @J5Casey, @Joansitoh, @KBroneZ, @voidsipp.

    Your launcher updates itself. New here? On Linux take the .AppImage below, make it executable and run it; on Windows and macOS download the archive, extract it and run horizon-launcher (Horizon.app on macOS). Website: https://playhorizon.dev


    Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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.

    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.

    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.

    Performance

    Horizon draws more frames per second than Java Edition, and loads faster, on the same machine, world and path. tools/perf_bench.py runs each game in turn, from a fresh world (seed 1234), waiting for the terrain and then flying it over a village, a forest, an ocean and a mountain. Measured on 2026-10-29/30 on an idle Windows 11 machine (Ryzen 7 9800X3D, RTX 5080), Horizon v0.2.97 as the launcher installs it, 1280x720 in a window, VSync off, three games per figure. Frames per second, mean of the four scenes, with the slowest 1% of frames in brackets:

    Render distanceHorizon v0.2.97Vanilla 26.3Vanilla + mods
    8 chunks3,289 (1,327)2,437 (640)2,375 (709)
    16 chunks2,074 (598)1,661 (375)1,586 (432)
    32 chunks1,207 (333)1,031 (176)879 (264)

    "Vanilla + mods" is Sodium, Lithium, FerriteCore and ImmediatelyFast. Horizon reaches the title screen in 2.9–3.2 s against vanilla's 7.5–7.7 s (the modded client's 10.8–11.1 s), loads a scene's chunks 2.9–3.8 times faster, and playing holds a steady working set of 1.1–1.7 GB against 1.9–2.9 GB. Every scene with its confidence interval and the run's load log: the 2026-10-29 reports. Method, and how to measure your own machine: docs/benchmark.md. playhorizon.dev/benchmarks puts these runs beside a 2016 laptop, a Mac mini and a gaming desktop.

    Download

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

    PlatformFileNeeds
    Windows x64horizon-launcher-setup.exeWindows 10 or 11, a GPU with Vulkan or DirectX 12
    Windows on Armhorizon-launcher-setup-arm64.exeWindows 11 on Arm
    macOS, Apple Siliconhorizon-launcher-macos-arm64.dmgmacOS 12 or later
    macOS, Intelhorizon-launcher-macos-x64.dmgmacOS 12 or later
    Linux x86-64horizon-launcher-linux-x86_64.AppImage or .tar.gza 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.

    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 table below says what the harnesses compare.

    The table is the project's own audit of what the harnesses compare, subsystem by subsystem: a score says how much of that subsystem the harnesses cover and pass, not that nothing else differs from vanilla. What players still run into: known issues.

    What the harnesses compare

    Scores: 0 (absent), 0.25 (started), 0.5 (playable, major features missing), 0.75 (mostly complete) or 1 (its harnesses cover the subsystem and pass). 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.

    SubsystemScoreMain gaps
    Window, input and game loop1None: game loop, options, camera, auto-jump, toggle sprint/sneak and frame limiter match
    Assets and resources1None: item models match over 196,290 stacks; the resource pack screen over 3,000 sessions
    Network protocol and multiplayer1None: 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 palettes1None: client and saves share paletted containers, identical to vanilla over 266 scenarios
    Section meshing1None: 112 scenes and over a million quads identical to vanilla
    Rendering1None: 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
    Lighting1None: saved and relit light matches vanilla, slabs and stairs included
    World generation1None: 2,352 whole chunks over 225 structure sites, in all three dimensions, identical to vanilla
    Region files and saves1None: saves round-trip with vanilla; worlds from 1.8 to 26.2 upgrade as vanilla's DataFixers do
    Entities and physics1None: attributes, spawn rules, natural spawning (15,500 cases), raids and patrols (1,900), finalizeSpawn (24,000) and mob AI (92 scenarios) match
    Interaction and inventory1None: 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 chat1None: 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
    Audio1None: the sound engine, sound events, music, situational music, ambience and subtitles match vanilla
    Block behaviours and ticking1None: 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.