HubNow, next and how to help

Where Horizon is going

What is being done, what comes next, what shipped and where you can help. No dates: things are Now, Next or Later. Read it in plain words, or switch to the technical picture.

Horizon is Minecraft: Java Edition 26.3 rewritten from scratch in Rust, so it runs faster on the same computer. Single player, LAN, servers, resource packs and Horizon's own mods work today, on your own copy of the game.

A native Rust and wgpu reimplementation of Java 26.3: the same saves, rules and terrain, checked against the real game by more than 300 differential harnesses (a Java oracle and a Rust probe on the same inputs). Single player runs on its own server thread, like vanilla's integrated server.

Being done now

  1. 01Steady frames at long render distancesMaking Horizon faster than vanilla on every computer, with smooth camera movement even at 32 chunks, by spreading the work better over the processor's cores.Frame pacing at render distance 32 (#678): long frames come from work competing with the render thread. In review: world generation workers build free structure starts instead of queueing them (#1760), the worker pool leaves one core as vanilla does (#1778), and the terrain vertex arena is read as storage where flat draws run (#1742). Still open: far terrain at 48 to 64 chunks (#718) and CPU-bound fields of block entities (#717). Every change shows before and after numbers from tools/perf_bench.py against vanilla 26.3 (docs/benchmark.md).1 pull request in review · 3 issues open
  2. 02Modpacks' world generation, nativelyMaking the world-generation mods of popular modpacks (new structures, YUNG's dungeons and mineshafts, packs built on Lithostitched) generate their worlds in Horizon, natively and fast.horizon-port-pack carries a pack's data-driven content over; structure mods that need code get a native port: YUNG's worldgen as written (#1746), Lithostitched's limited and guaranteed elements with pool and processor modifiers (#1777), its processors as the game's own types (#1765). Proved by the structure blocks and layout harnesses (#1753, #1757). Mods whose Java code does more than world generation don't run (docs/modpacks.md).1 pull request in review · 1 merged
  3. 03Playing on servers: everything shows as it shouldWhen you play on a server, other players, mobs, items and menus look and behave as in vanilla: skins, poses, item names, inventories and server networks.Client-of-a-server fixes in game/remote*.rs and horizon-protocol: mobs' aggressive and item-use flags (#1802, #1798), ghost items after a remote menu (#1795), skins (#1652), cookies and transfer packets for proxy networks (#1650), firework boosts (#1671), living-entity attributes and simulation distance (#1731), styled item names (#1702), primed TNT between updates (#1710).2 in progress
  4. 04Single player as a server: the last differencesSingle player now runs a small server in the background, as vanilla does. We are fixing what still behaves differently there; every fix also works for LAN and server players.Since #1514 single player runs on the server thread (game/integrated.rs) and the window joins it as a client; --in-frame keeps the old path. The open [server-thread] issues list the gaps. In review: a tool that changes a block ends the click (#1797), potions keep their potion over the connection (#1796), mobs' aggression and arm swings (#1802). docs/server-levels.md.
  5. 05Horizon's mod registryOne place for mods, modpacks and resource packs made for Horizon: browse them on the website and install them from the launcher in one click.Merged: the registry index (schema 1, .hpack, checks before install, #1634), cargo horizon-mod check (#1642) and the submission service (crates/horizon-mod-registry, #1659). In review: the website's /mods (#1596) and /mods/submit (#1635), and in the launcher the registry as a source (#1636), install, enable and takedowns (#1637), the Mods page (#1638) and modpacks as their own profiles (#1640).

Next

  1. 01Microsoft sign-in (coming soon)Coming soon: sign in with your Microsoft account to play on online-mode servers. The code is ready; it waits for Microsoft's approval.Device-code sign-in in the launcher and online-mode login in the client (docs/microsoft-account.md). It is turned on by setting the app's client id once Minecraft API access is approved; until then the launcher shows "Coming soon".Launcher
  2. 02CurseForge in the mod browser (coming soon)Coming soon: search and download CurseForge mods and modpacks from the launcher, as you can with Modrinth today.The mod browser lists CurseForge as coming soon (docs/mod-browser.md): it needs CurseForge API access. Meanwhile packs import from a CurseForge zip or instance folder, and jars only CurseForge hosts come from the player's own instance (docs/modpacks.md).Modpacks
  3. 03Fresh benchmarks against vanillaNew public numbers comparing Horizon with vanilla on many kinds of computers, measured the same way every time, with a history that shows what each release changed.Redo the comparison after the current performance work (#1073); reliability, coverage and presentation (#1346); a scene must count as loaded only once its first chunk arrives (#1749). Next: a performance history across releases (an automatic comparison of each release with the last, on a timeline), more report fields (server TPS and MSPT, power, battery drain, temperature, throttling) and more hardware (a MacBook on battery, low-end laptops, community reports). Players' reports come in through --benchmark and horizon-launcher data benchmark (docs/benchmark.md).Performance
  4. 04Pistons push players and mobsPistons and slime blocks will push players, mobs and items as in vanilla. Today moving blocks pass through them.Port PistonMovingBlockEntity.moveCollidedEntities and moveStuckEntities (honey), the slime bounce and Entity.limitPistonMovement for MoverType.PISTON, in single player and for a server's players. Issues #1496, #1609, #1608, #1704, #1758.Gameplay parity
  5. 05Horizon on Intel MacsBuilds of the game and the launcher for Macs with an Intel processor.x86_64 game and launcher builds, picked per processor (#1171). Before it ships it needs a run on a real Intel Mac: Rosetta on Apple Silicon only proves the CPU code. Requests: #1161, #1792.Platforms
  6. 06Faster world creation and entry on small CPUsCreating a world and joining it should be quick even on a four-thread laptop, where a fresh world at 32 chunks can make you wait minutes for the first terrain.Cut the per-column generation cost (noise sampling, surface rules, aquifers) and the lock convoy on structure starts, and leave one core free for the rest of the game as vanilla does (#1760 and #1778, in review, are listed under 'Steady frames at long render distances'). Still to profile on small CPUs: the first seconds of a fresh world deliver no chunk, and fluids remesh for about a minute after loading. Measured with tools/perf_bench.py (docs/benchmark.md, docs/profiling.md).Performance
  7. 07Servers that hold 20 TPS with 50 to 100 playersServers that keep 20 ticks per second with 50 to 100 players. Today Horizon holds it up to 50 bots and drops to about 10 at 100.Measured against vanilla on equal work (docs/server.md, Scale): Horizon is ahead with few players and when exploring, but vanilla's tick is shorter with 25 to 50 players near spawn. Ideas on the list: send entity changes instead of rebuilding every entity each tick (about 15 percent), fewer memory reads in random ticks and collision scans, cheaper item collision checks, mob AI and natural spawning. The bot benchmark (horizon-bots) is the proof.Performance
  8. 08Low-end computers: Steam Deck, old Macs, 8 GBHorizon should run well on small machines: integrated graphics, the Steam Deck, older Macs and 8 GB of memory, with a battery mode that saves power on laptops.Partly done: an opt-in 60 FPS cap with fewer workers on battery, Far Detail Reduced for integrated GPUs and animated textures on the GPU (both shipped). Left: measured targets and fixes per class of machine (memory use, worker counts, startup) on a Steam Deck, old Intel and Apple Silicon Macs and 8 GB computers, reported on the Benchmarks page.Performance
  9. 09Native upscalingDraw the game at a lower resolution and sharpen it to your screen's size, in the way of FSR or DLSS, to gain frames on weaker graphics cards. An optional graphics setting.A render-scale setting below the window size with an upscaler of our own that runs on every wgpu backend. Proof: frame time against native resolution on integrated GPUs, and screenshots for image quality. Issue #1403.Performance
  10. 10A batch of targeted optimisationsSeveral smaller speed-ups, each measured: idle block entities that sleep, cheaper particles, faster structure placement, high-rate mice and very large texture packs.Block entities and hoppers that skip work when idle (the hopper item scan is already skipped when no item is near); a particle frustum test first (also a parity gap), then particle quads built on the GPU; jigsaw shortcuts that skip blocked connectors and pool elements known not to fit, with layouts unchanged (trial chambers and ancient cities first); batched raw mouse input on Windows for 8000 Hz mice; a better atlas packer for huge resource packs (a 64x pack builds a 704 MiB atlas for 452 MiB of textures); sign-heavy scenes (#1461). Profile first, keep what pays, show before and after numbers.Performance
  11. 11A Convert to Rust button for what isn't rewritten yetWhen a mod, shader pack or modpack hasn't been rewritten for Horizon, one button converts what can be converted, so you don't have to wait for the rewrite.Generalise the mod browser's Port step (horizon-port-pack: the data, assets, worldgen and block and item definitions of Java mods, .mrpack and CurseForge zips) to every kind of content: code mods where the API allows it (see 'Mods with code') and shader packs, converting an Iris/OptiFine pack into Horizon's format. The browser says what works before the install. Java code itself does not run (docs/modpacks.md, docs/mod-browser.md).Modpacks
  12. 12Mods with code: machines, magic, mobsMaking mods that add machines, magic and mobs work in Horizon, in steps, starting with machines. They are most of what a big modpack is made of.333 of the 496 mods in a big pack (ATM10) contain code. Issue #1854 ranks the API gaps (ticking block entities, networking, rendering, menus, inventories) that unlock them in tiers, with machines first as the recommended path and a furnace ported tick for tick as proof. The first API step is a draft (#1189, see 'Machines and blocks with inventories'). The path isn't started yet (docs/modpacks.md).Modpacks
  13. 13Data packs in the mod browserSearch and install data packs from the launcher's mod browser, for the world you choose, as you do mods and resource packs.A Datapacks tab beside Mods and Resource packs: install into a chosen world's datapacks folder, with the same checks and 'works in Horizon' notes as the other kinds (docs/mod-browser.md).Modpacks
  14. 14Prepare a version without JavaSet up Horizon, a server first, without Java on your computer: published tables are combined with your own copy of the game.Today horizon-prepare runs Mojang's exporters with Java. Issue #1750 proposes publishing the computed version tables once from CI and assembling the rest locally from the player's own jar and assets, provided the tables hold no Mojang content; a contributor offered a pull request, and it would help phones too. A server-only prepare from server.jar alone is the first step (docs/server.md).Servers and multiplayer
  15. 15Server console, bans and a full admin APIManage a server from a console, ban and pardon players, and drive it from other tools through a full admin API and an MCP server for AI agents.horizon-server console (a text interface), ban, pardon, ban-ip and mcp over stdio. Admin API additions: the player list, kick, ban, op and whitelist, an SSE stream of logs and events, a text metrics endpoint, config GET and PATCH, backup delete and download. The panel's later features (bans, worlds, server.properties import, logs and crash reports, modpacks) and vanilla's management protocol (the JSON-RPC over WebSocket that the management-server-* keys configure), so vanilla's tools can manage a Horizon server. docs/server.md, docs/api/server.md.Servers and multiplayer
  16. 16Hosting polish: Windows service, safe updatesSmoother hosting: a real Windows service, a backup before every update, backups that keep the world and each player's state, and a changed view distance or message without a restart.A Windows service wrapper instead of the logon scheduled task; backups.before_update; hot reload of config for view distance and the message of the day (needs engine support); backups that keep world and player state (#1808, a contributor's draft, in review). docs/hosting.md, docs/server.md.Servers and multiplayer
  17. 17Guided hosting with Tailscale and an invite buttonIn the launcher, a guide and a button to host a server and invite friends over Tailscale, so nobody has to open ports on a router.On the Servers page (create, start, back up, update and invite are shipped) add a Tailscale setup that explains and checks each step, and an invite button that hands friends what they need to join over the tailnet. Buttons first, no docs needed, with the details in an Advanced section. Remote access over Tailscale is already described in docs/server.md.Servers and multiplayer
  18. 18An official Docker image for serversAn official image to run a Horizon dedicated server in Docker with one command, your own copy of the game files mounted in.The repository has the Dockerfile (packaging/server/Dockerfile: a multi-stage build on Debian bookworm-slim, user horizon, volume /data, port 25565, game files mounted read-only, HORIZON_EULA and friends answering the first-start questions), and anyone can build it (docs/hosting.md, section 9). Left: publish the image to a public registry from the release workflow, tagged per release, so it follows the same checks, and update the docs and the launcher. The image never holds Mojang's files.Servers and multiplayer
  19. 19One single-player path: remove the in-frame worldSingle player will have one way to run, the server thread, so every fix works everywhere and there are fewer bugs. The older in-frame mode goes once everything passes without it.--in-frame (also --no-server-thread and HORIZON_SERVER_THREAD=0) still ticks the world inside the window's Game, and most harnesses test that path. Delete it once lan_e2e --server-thread and the parity harnesses pass on the server thread, which also halves the bug surface. See also 'Single player as a server' and docs/server-levels.md.Gameplay parity
  20. 20Villages and combat, exactly as in vanillaVillages and fights behaving as in vanilla: iron golems defending villages, villagers remembering their homes, mace smashes and knockback.Villages: iron golem village goals, villager memories across saves, villager age, job-site claiming on dedicated servers, flower offers (#1639 is one report). Combat: the mobs' attack_knockback attribute, mace smash logic, the hit knockback source on the host, the fire burnout biome tag. Each is checked against vanilla by a harness (docs/rust-parity.md).Gameplay parity
  21. 21Choose the audio output devicePick the speakers or headphones Horizon plays through, in Music & Sounds.An output device list in Music & Sounds, falling back to the system default. #1035 started it: a player on an older Windows computer had no sound at all, and a device choice is how such cases are found and fixed.Gameplay parity
  22. 22Mods that read and change the worldMods that can see and change blocks, read inventories and items, and find and affect entities, all through the server so every player sees the same thing.After server mods: read blocks, states and biomes in loaded chunks and change them through the server's block log, so clients and the parity harnesses see vanilla's updates; the player's inventory, held item, open container and item stacks with components; entity queries near a position, a safe subset of entity data and data-driven mod entity types. Snapshots and batched calls per tick, never per-block host calls in hot paths. docs/api/mods.md ('Not there yet').Mods and API
  23. 23Machines and blocks with inventories (API 0.4)Mods that add machines: blocks that tick, hold items and have their own menus. This unlocks the technology mods of big modpacks.Block entities and menus: ticking machines with slots, server menu logic and the menu protocol to clients, energy, item and fluid transfer, data attachments, accessory slots and custom recipe types, with a typed client and server channel and typed config beside them. A draft (#1189) proves a furnace ported tick for tick and holds the ATM10 code-mods plan; the design is redone through the API policy before it merges (docs/modpacks.md, docs/api/stability.md).Mods and API
  24. 24Lua and other languages for modsWrite mods as Lua scripts, in the style of KubeJS, with no compiler, and later in other languages that pass the tests. Every language runs in the same sandbox.Lua first: Horizon ships a Lua interpreter that is itself a WebAssembly mod, and a script mod's manifest names it and the capabilities it uses, so a script can do exactly what a compiled mod with the same manifest can, with hot reload of main.lua. Then C, C++, Zig, Go (TinyGo), AssemblyScript and JavaScript or TypeScript are measured against Rust on the same tick-heavy example, and each is supported only with a template, an example and a CI test. docs/api/mods.md ('Ways in').Mods and API
  25. 25Well-known shader looks, rewritten for HorizonPopular shader packs rewritten in Horizon's format, so good packs exist from the start. Only packs whose licence is open source and compatible with ours are rewritten, never anything else.The first candidates are Photon, Chocapic13 and MakeUp Ultra Fast, each only after its licence is read and recorded: a pack is rewritten only if it is open source and compatible with Horizon's licence, and the rewrite is written from the shader format's documentation and the look on screen, not from anyone's code. Today only the Golden Hour example exists (crates/horizon-shader-api/packs/golden_hour).Rendering
  26. 26A visible beta labelA clear 'beta' label in the launcher and the game, so nobody is surprised that Horizon is still being built.Show Beta in the launcher's header and about page, on the game's title screen and on the website, beside the version number (docs/versioning.md).Launcher
  27. 27Wayland and Hyprland polishFixes for Linux desktops that use Wayland and Hyprland: fullscreen, the clipboard, the GUI scale after a restart and the like.Open: the GUI Scale is clamped to 2 after a restart under Hyprland, while XWayland keeps it (#1866). Earlier reports covered fullscreen dropping on menu clicks, the clipboard and a white overlay (#1007, closed). Checked on a real Wayland session.Platforms
  28. 28A versioned agent-control protocolA stable, documented way for AI agents and scripts to drive the game and the launcher, with versions and an event stream so tools keep working as Horizon changes.hello answers with the API version, the release and the features; horizon-ctl --api; MCP serverInfo; reply schemas generated into the reference; a test. namespace for hooks; transcript compatibility tests; subscribe as a stream of events on one connection; Horizon option files by key and saved-server commands. Agent control itself (horizon-ctl, both MCP servers, the No AI switch) is done: docs/agent-control.md, docs/api/agent-control.md.AI and agents
  29. 29Port mods with your own AI agentYou can port a mod to Horizon with your own AI agent on your own computer. Horizon documents how and gives you the tools, but provides no hosted agents.A player runs their own agent locally with horizon-ctl and the MCP servers (docs/agent-control.md), cargo horizon-mod, horizon-port-pack and the parity harnesses as the check. Horizon writes the guide (website/docs/agents.md, docs/modpacks.md) and runs no agents, accounts or keys for players. The No AI switch turns all of it off.AI and agents
  30. 30Horizon on X (coming soon)Coming soon: an official Horizon account on X, used to announce releases and the weekly summary.Kira already posts the roadmap items marked announce = true when they ship, and the weekly summary, as soon as the account's credentials exist (roadmap/README.md, 'The journal'). Waiting for the account itself.Community
  31. 31Pipeline protection and a GitHub App for agentsSafer releases: changes to the release machinery need the owner's review, and AI agents use a smaller identity of their own instead of a personal account..github/CODEOWNERS lists the workflows, the release and signing tools, the update-checking code and the installers (#1015); the branch protection that makes it count waits for the horizon-agent GitHub App, which reads and writes code, pull requests and issues but can't change settings, workflows, secrets or members, and whose tokens last an hour. It needs the owner to create the App and switch the protection on (docs/security.md).Code and tools
  32. 32Signed updates everywhere, installers includedEvery download Horizon makes is checked against the project's signature, including the first install with install.sh and install.ps1.Releases carry signed checksums, and the launcher and horizon-server update refuse anything unsigned (#1011, #1014). Left: the first install through install.sh and install.ps1 still trusts only the checksum GitHub publishes, because verifying Ed25519 signatures needs OpenSSL 3, which macOS doesn't ship (docs/security.md).Code and tools
  33. 33A server you install with one commandInstall and run a Horizon dedicated server from a terminal with a single command, no launcher needed, for VPSes and headless machines.A player's idea (#horizon-ideas). horizon-server already runs headless; left: an install script (Linux/macOS shell, Windows PowerShell) that fetches the signed release, checks it, asks for or points at the player's own game files and starts the server, documented in docs/hosting.md.Servers and multiplayer

Recently shipped

  1. 01OpenGL for old computersHorizon now starts on old PCs whose graphics card has no Vulkan or DirectX 12 driver: it switches to OpenGL by itself, and Options > Graphics can pick OpenGL by hand.wgpu's GL backend (WGL on Windows, EGL on Linux) as the last fallback after Vulkan and DirectX 12 (#1917), sprite arrays and CPU sprite animation for drivers without compute (#1920), no indirect draws below GL 4.3 (#1936). Minimum OpenGL 3.3 core. Shader packs don't run on it yet.In v0.2.63
  2. 02Server resource packsServers can send you their resource pack: Horizon asks, downloads it and applies it, like vanilla.The dedicated server offers server.properties' pack (#1562); the client's pack manager, downloads, prompt and Server Resource Packs setting (#1569, #1570).In v0.2.48
  3. 03Single player on its own server threadSingle player runs on a server thread, as vanilla does, so the world keeps ticking smoothly while the window draws.game/integrated.rs runs a second Game with one level per dimension; the window joins it through memory like a LAN guest (#1514).In v0.2.39

How to help

Play it and tell us what differs from vanilla (Discord or GitHub), run the benchmark on your computer, vote for what you want next, or pick one of the Help wanted items.

Read CONTRIBUTING.md, pick a Help wanted item or a To do card, check vanilla's code for the behaviour, and paste the block python3 tools/pr_ready.py prints in your pull request.

ContributeHelp wantedReport a bugSuggest something

Now

Being worked on, with pull requests open or just merged.

Performance

Steady frames at long render distances

Making Horizon faster than vanilla on every computer, with smooth camera movement even at 32 chunks, by spreading the work better over the processor's cores.

Frame pacing at render distance 32 (#678): long frames come from work competing with the render thread. In review: world generation workers build free structure starts instead of queueing them (#1760), the worker pool leaves one core as vanilla does (#1778), and the terrain vertex arena is read as storage where flat draws run (#1742). Still open: far terrain at 48 to 64 chunks (#718) and CPU-bound fields of block entities (#717). Every change shows before and after numbers from tools/perf_bench.py against vanilla 26.3 (docs/benchmark.md).

1 pull request in review · 3 issues open

Performance

Faster block lookups

Speeding up the code that reads and writes the blocks of the world, which almost everything in the game goes through: generation, lighting, meshing and ticking.

PalettedContainer and PackedStorage find an entry's word by multiply and shift instead of an integer division (#1790, #1794); meshing looks up baked models by index, not by name (#1747). Each change keeps the paletted storage harnesses identical and shows its microbenchmark (docs/performance/paletted-container-access-results.md).

1 pull request in review

Modpacks

Modpacks' world generation, natively

Making the world-generation mods of popular modpacks (new structures, YUNG's dungeons and mineshafts, packs built on Lithostitched) generate their worlds in Horizon, natively and fast.

horizon-port-pack carries a pack's data-driven content over; structure mods that need code get a native port: YUNG's worldgen as written (#1746), Lithostitched's limited and guaranteed elements with pool and processor modifiers (#1777), its processors as the game's own types (#1765). Proved by the structure blocks and layout harnesses (#1753, #1757). Mods whose Java code does more than world generation don't run (docs/modpacks.md).

1 pull request in review · 1 merged

Servers and multiplayerOngoing

Playing on servers: everything shows as it should

When you play on a server, other players, mobs, items and menus look and behave as in vanilla: skins, poses, item names, inventories and server networks.

Client-of-a-server fixes in game/remote*.rs and horizon-protocol: mobs' aggressive and item-use flags (#1802, #1798), ghost items after a remote menu (#1795), skins (#1652), cookies and transfer packets for proxy networks (#1650), firework boosts (#1671), living-entity attributes and simulation distance (#1731), styled item names (#1702), primed TNT between updates (#1710).

2 in progress

Servers and multiplayer

Server dialogs and login screens

Servers that show dialogs, such as the register and login screens of AuthMe, will work in Horizon.

26.3's dialog packets and model (#1720), the dialog screen with its buttons and actions (#1734), then text and boolean inputs (#1735).

Servers and multiplayer

Pre-generate an area with /pregen

A /pregen command that builds an area of the world ahead of time, so players don't wait for new terrain when they explore.

Generates, lights and saves an area before anyone walks there (#1805, a contributor's pull request, in review). Useful on servers, and it moves the generation cost away from the first visit; the generation speed-ups are under 'Steady frames at long render distances'.

Mods and API

Horizon's mod registry

One place for mods, modpacks and resource packs made for Horizon: browse them on the website and install them from the launcher in one click.

Merged: the registry index (schema 1, .hpack, checks before install, #1634), cargo horizon-mod check (#1642) and the submission service (crates/horizon-mod-registry, #1659). In review: the website's /mods (#1596) and /mods/submit (#1635), and in the launcher the registry as a source (#1636), install, enable and takedowns (#1637), the Mods page (#1638) and modpacks as their own profiles (#1640).

Mods and API

Mods that run on the server

Mods that run on the server side of a world, so a dedicated server or a LAN world can have mods that react to players joining, chat and blocks being broken or placed, and that add commands.

API 0.3, experimental first (#1833, in review): the same sandboxed component runs on the server thread and the dedicated server, with world events (block broken or placed, entity spawned or killed, player joined or left), game rules and server commands with typed arguments. The world, item and entity interfaces come after (see 'Mods that read and change the world'). docs/api/mods.md, docs/mods.md.

1 merged

Mods and API

Screens, input and drawing for mods

Mods will be able to open their own screens and settings pages and react to keys and item use, so bigger mods, such as the Orbital Laser, can run on the normal game.

Capability ui is in review (#1864): mod-owned screens and a settings page under Options > Mods, built from vanilla's widgets. Still to design: input (an item's use, key binds, the crosshair target), render (a budgeted draw list on the native shader API) and world (changing blocks). Orbital Laser is the acceptance test: it needs all four today through its author's fork (see 'Orbital Laser on the normal game').

Mods and API

Tools for people who make mods

Better tools for mod makers: a test runner that needs no game window, templates for each kind of mod, and clear promises about what keeps working from one version to the next.

cargo horizon-mod test runs a mod's test scripts against a fake game snapshot (#1816) and, for server mods, scripted server events (#1837); the content template and the guides are merged (#1859, #1810, docs/api/stability.md). Left: templates for hud, server and machine mods, typed wrappers in the SDK, a frozen 0.1 compatibility mod that every runtime must load, a CI check that fails when a stable reference entry is removed without a new major version, and the SDK on crates.io once the API is stable.

1 merged

Gameplay parityOngoing

Single player as a server: the last differences

Single player now runs a small server in the background, as vanilla does. We are fixing what still behaves differently there; every fix also works for LAN and server players.

Since #1514 single player runs on the server thread (game/integrated.rs) and the window joins it as a client; --in-frame keeps the old path. The open [server-thread] issues list the gaps. In review: a tool that changes a block ends the click (#1797), potions keep their potion over the connection (#1796), mobs' aggression and arm swings (#1802). docs/server-levels.md.

Gameplay parity

Play in your language

Item names, container titles and server messages follow the language you pick, as in vanilla. Today parts of the game stay in English.

Translatable components resolved through the selected language for items, containers and server text (#1806), on top of the bundled languages the prepared resources carry (#1594). Left: the client's own screens (#1672) and the main menu with zh_cn (#1774).

1 issue open

Gameplay parity

Cooldowns drawn on items

After you throw an ender pearl, its slot should show the cooldown sweeping away, as in vanilla.

Vanilla draws ItemCooldowns' percent as a white overlay over the slot (GuiGraphicsExtractor.itemDecorations and itemCooldown) in the hotbar and in inventories. Issue #1763.

Gameplay parity

Chat settings and team prefixes

The Hidden and Commands Only chat settings should hide chat, and team prefixes should appear before names in chat.

Vanilla checks ChatVisiblity before it delivers chat and system messages (#1376), and chat uses the team-formatted display name (#1378). Both issues have exact steps to reproduce.

1 merged

Gameplay parity

A pointing hand over buttons

The mouse pointer should turn into a pointing hand over menu buttons, as in vanilla 26.3.

26.3's AbstractWidget asks for a cursor from CursorTypes when it is hovered; winit's CursorIcon::Pointer gives the same shape. Issue #1347.

Gameplay parity

Ctrl+Backspace and scroll bars in menus

Ctrl+Backspace should delete a whole word in the creative search, and every list's scroll bar should be draggable.

EditBox deletes by word with Ctrl (#1764); the Game Rules and Statistics lists' scroll bars can't be dragged (#1782, after #978).

Gameplay parity

Chickens flap while they fall

Chickens should flap their wings while they fall, not stand still in the air.

Vanilla's Chicken.aiStep updates flap and flapSpeed when the chicken isn't on the ground, and the model's wings follow them. Issue #1706.

RenderingOngoing

Shader packs, written again from scratch

Shader packs were removed and are being rebuilt from scratch. They come back, off by default, once the best-known packs draw properly.

A clean-room rewrite in horizon-shaderpack, from the packs' public format documentation only: reading packs, the preprocessor and .properties files are merged (#1584, #1585, #1586); translating programs to WGSL through naga, buffers, uniforms and the terrain, entity, sky, weather and hand stages are in review (#1698 to #1801).

Rendering

Horizon's own shader format and kit

Horizon's own way to make shader packs, with tools to write and test them. Every pack is checked before it runs, and the registry will list them.

horizon-shader-api (API 0.1, experimental): WGSL stages with typed inputs inside the renderer's passes, options as WGSL override constants, and the horizon-shader new|check|pack tool with templates and the example pack Golden Hour. Merged: the check every pack passes (#1820) and the tool, templates and guide (#1822). In review: the post stage running in the game with hot reload (#1861), the sky stage (#1863) and registry checks that use the game's own check (#1855). Left: the material, lighting and shadow stages, a last-good fallback on reload, a GPU-time overlay per stage and budgets (docs/shaders.md, docs/api/shaders.md). The Iris/OptiFine loader is a separate item, 'Shader packs, written again from scratch'.

2 merged

Horizon extras

Discord Rich Presence

Your Discord profile can show that you are playing Horizon, with a switch to turn it off.

A Discord IPC client on its own thread (#1787) and the presence with its setting (#1788). Merged: it ships with the next release.

Next

Decided, and up after what is being done now.

Performance

Fresh benchmarks against vanilla

New public numbers comparing Horizon with vanilla on many kinds of computers, measured the same way every time, with a history that shows what each release changed.

Redo the comparison after the current performance work (#1073); reliability, coverage and presentation (#1346); a scene must count as loaded only once its first chunk arrives (#1749). Next: a performance history across releases (an automatic comparison of each release with the last, on a timeline), more report fields (server TPS and MSPT, power, battery drain, temperature, throttling) and more hardware (a MacBook on battery, low-end laptops, community reports). Players' reports come in through --benchmark and horizon-launcher data benchmark (docs/benchmark.md).

3 issues open

Performance

Faster world creation and entry on small CPUs

Creating a world and joining it should be quick even on a four-thread laptop, where a fresh world at 32 chunks can make you wait minutes for the first terrain.

Cut the per-column generation cost (noise sampling, surface rules, aquifers) and the lock convoy on structure starts, and leave one core free for the rest of the game as vanilla does (#1760 and #1778, in review, are listed under 'Steady frames at long render distances'). Still to profile on small CPUs: the first seconds of a fresh world deliver no chunk, and fluids remesh for about a minute after loading. Measured with tools/perf_bench.py (docs/benchmark.md, docs/profiling.md).

Performance

Servers that hold 20 TPS with 50 to 100 players

Servers that keep 20 ticks per second with 50 to 100 players. Today Horizon holds it up to 50 bots and drops to about 10 at 100.

Measured against vanilla on equal work (docs/server.md, Scale): Horizon is ahead with few players and when exploring, but vanilla's tick is shorter with 25 to 50 players near spawn. Ideas on the list: send entity changes instead of rebuilding every entity each tick (about 15 percent), fewer memory reads in random ticks and collision scans, cheaper item collision checks, mob AI and natural spawning. The bot benchmark (horizon-bots) is the proof.

Performance

Low-end computers: Steam Deck, old Macs, 8 GB

Horizon should run well on small machines: integrated graphics, the Steam Deck, older Macs and 8 GB of memory, with a battery mode that saves power on laptops.

Partly done: an opt-in 60 FPS cap with fewer workers on battery, Far Detail Reduced for integrated GPUs and animated textures on the GPU (both shipped). Left: measured targets and fixes per class of machine (memory use, worker counts, startup) on a Steam Deck, old Intel and Apple Silicon Macs and 8 GB computers, reported on the Benchmarks page.

Performance

Native upscaling

Draw the game at a lower resolution and sharpen it to your screen's size, in the way of FSR or DLSS, to gain frames on weaker graphics cards. An optional graphics setting.

A render-scale setting below the window size with an upscaler of our own that runs on every wgpu backend. Proof: frame time against native resolution on integrated GPUs, and screenshots for image quality. Issue #1403.

1 issue open

Performance

A batch of targeted optimisations

Several smaller speed-ups, each measured: idle block entities that sleep, cheaper particles, faster structure placement, high-rate mice and very large texture packs.

Block entities and hoppers that skip work when idle (the hopper item scan is already skipped when no item is near); a particle frustum test first (also a parity gap), then particle quads built on the GPU; jigsaw shortcuts that skip blocked connectors and pool elements known not to fit, with layouts unchanged (trial chambers and ancient cities first); batched raw mouse input on Windows for 8000 Hz mice; a better atlas packer for huge resource packs (a 64x pack builds a 704 MiB atlas for 452 MiB of textures); sign-heavy scenes (#1461). Profile first, keep what pays, show before and after numbers.

1 issue open

Modpacks

CurseForge in the mod browser (coming soon)

Coming soon: search and download CurseForge mods and modpacks from the launcher, as you can with Modrinth today.

The mod browser lists CurseForge as coming soon (docs/mod-browser.md): it needs CurseForge API access. Meanwhile packs import from a CurseForge zip or instance folder, and jars only CurseForge hosts come from the player's own instance (docs/modpacks.md).

Modpacks

A Convert to Rust button for what isn't rewritten yet

When a mod, shader pack or modpack hasn't been rewritten for Horizon, one button converts what can be converted, so you don't have to wait for the rewrite.

Generalise the mod browser's Port step (horizon-port-pack: the data, assets, worldgen and block and item definitions of Java mods, .mrpack and CurseForge zips) to every kind of content: code mods where the API allows it (see 'Mods with code') and shader packs, converting an Iris/OptiFine pack into Horizon's format. The browser says what works before the install. Java code itself does not run (docs/modpacks.md, docs/mod-browser.md).

Modpacks

Mods with code: machines, magic, mobs

Making mods that add machines, magic and mobs work in Horizon, in steps, starting with machines. They are most of what a big modpack is made of.

333 of the 496 mods in a big pack (ATM10) contain code. Issue #1854 ranks the API gaps (ticking block entities, networking, rendering, menus, inventories) that unlock them in tiers, with machines first as the recommended path and a furnace ported tick for tick as proof. The first API step is a draft (#1189, see 'Machines and blocks with inventories'). The path isn't started yet (docs/modpacks.md).

Modpacks

Data packs in the mod browser

Search and install data packs from the launcher's mod browser, for the world you choose, as you do mods and resource packs.

A Datapacks tab beside Mods and Resource packs: install into a chosen world's datapacks folder, with the same checks and 'works in Horizon' notes as the other kinds (docs/mod-browser.md).

Servers and multiplayer

Prepare a version without Java

Set up Horizon, a server first, without Java on your computer: published tables are combined with your own copy of the game.

Today horizon-prepare runs Mojang's exporters with Java. Issue #1750 proposes publishing the computed version tables once from CI and assembling the rest locally from the player's own jar and assets, provided the tables hold no Mojang content; a contributor offered a pull request, and it would help phones too. A server-only prepare from server.jar alone is the first step (docs/server.md).

1 issue open

Servers and multiplayer

Server console, bans and a full admin API

Manage a server from a console, ban and pardon players, and drive it from other tools through a full admin API and an MCP server for AI agents.

horizon-server console (a text interface), ban, pardon, ban-ip and mcp over stdio. Admin API additions: the player list, kick, ban, op and whitelist, an SSE stream of logs and events, a text metrics endpoint, config GET and PATCH, backup delete and download. The panel's later features (bans, worlds, server.properties import, logs and crash reports, modpacks) and vanilla's management protocol (the JSON-RPC over WebSocket that the management-server-* keys configure), so vanilla's tools can manage a Horizon server. docs/server.md, docs/api/server.md.

Servers and multiplayer

Hosting polish: Windows service, safe updates

Smoother hosting: a real Windows service, a backup before every update, backups that keep the world and each player's state, and a changed view distance or message without a restart.

A Windows service wrapper instead of the logon scheduled task; backups.before_update; hot reload of config for view distance and the message of the day (needs engine support); backups that keep world and player state (#1808, a contributor's draft, in review). docs/hosting.md, docs/server.md.

1 in progress

Servers and multiplayer

Guided hosting with Tailscale and an invite button

In the launcher, a guide and a button to host a server and invite friends over Tailscale, so nobody has to open ports on a router.

On the Servers page (create, start, back up, update and invite are shipped) add a Tailscale setup that explains and checks each step, and an invite button that hands friends what they need to join over the tailnet. Buttons first, no docs needed, with the details in an Advanced section. Remote access over Tailscale is already described in docs/server.md.

Servers and multiplayer

An official Docker image for servers

An official image to run a Horizon dedicated server in Docker with one command, your own copy of the game files mounted in.

The repository has the Dockerfile (packaging/server/Dockerfile: a multi-stage build on Debian bookworm-slim, user horizon, volume /data, port 25565, game files mounted read-only, HORIZON_EULA and friends answering the first-start questions), and anyone can build it (docs/hosting.md, section 9). Left: publish the image to a public registry from the release workflow, tagged per release, so it follows the same checks, and update the docs and the launcher. The image never holds Mojang's files.

Servers and multiplayer

A server you install with one command

Install and run a Horizon dedicated server from a terminal with a single command, no launcher needed, for VPSes and headless machines.

A player's idea (#horizon-ideas). horizon-server already runs headless; left: an install script (Linux/macOS shell, Windows PowerShell) that fetches the signed release, checks it, asks for or points at the player's own game files and starts the server, documented in docs/hosting.md.

Mods and API

Mods that read and change the world

Mods that can see and change blocks, read inventories and items, and find and affect entities, all through the server so every player sees the same thing.

After server mods: read blocks, states and biomes in loaded chunks and change them through the server's block log, so clients and the parity harnesses see vanilla's updates; the player's inventory, held item, open container and item stacks with components; entity queries near a position, a safe subset of entity data and data-driven mod entity types. Snapshots and batched calls per tick, never per-block host calls in hot paths. docs/api/mods.md ('Not there yet').

Mods and API

Machines and blocks with inventories (API 0.4)

Mods that add machines: blocks that tick, hold items and have their own menus. This unlocks the technology mods of big modpacks.

Block entities and menus: ticking machines with slots, server menu logic and the menu protocol to clients, energy, item and fluid transfer, data attachments, accessory slots and custom recipe types, with a typed client and server channel and typed config beside them. A draft (#1189) proves a furnace ported tick for tick and holds the ATM10 code-mods plan; the design is redone through the API policy before it merges (docs/modpacks.md, docs/api/stability.md).

1 in progress

Mods and API

Lua and other languages for mods

Write mods as Lua scripts, in the style of KubeJS, with no compiler, and later in other languages that pass the tests. Every language runs in the same sandbox.

Lua first: Horizon ships a Lua interpreter that is itself a WebAssembly mod, and a script mod's manifest names it and the capabilities it uses, so a script can do exactly what a compiled mod with the same manifest can, with hot reload of main.lua. Then C, C++, Zig, Go (TinyGo), AssemblyScript and JavaScript or TypeScript are measured against Rust on the same tick-heavy example, and each is supported only with a template, an example and a CI test. docs/api/mods.md ('Ways in').

Gameplay parity

Pistons push players and mobs

Pistons and slime blocks will push players, mobs and items as in vanilla. Today moving blocks pass through them.

Port PistonMovingBlockEntity.moveCollidedEntities and moveStuckEntities (honey), the slime bounce and Entity.limitPistonMovement for MoverType.PISTON, in single player and for a server's players. Issues #1496, #1609, #1608, #1704, #1758.

5 issues open

Gameplay parity

One single-player path: remove the in-frame world

Single player will have one way to run, the server thread, so every fix works everywhere and there are fewer bugs. The older in-frame mode goes once everything passes without it.

--in-frame (also --no-server-thread and HORIZON_SERVER_THREAD=0) still ticks the world inside the window's Game, and most harnesses test that path. Delete it once lan_e2e --server-thread and the parity harnesses pass on the server thread, which also halves the bug surface. See also 'Single player as a server' and docs/server-levels.md.

Gameplay parity

Villages and combat, exactly as in vanilla

Villages and fights behaving as in vanilla: iron golems defending villages, villagers remembering their homes, mace smashes and knockback.

Villages: iron golem village goals, villager memories across saves, villager age, job-site claiming on dedicated servers, flower offers (#1639 is one report). Combat: the mobs' attack_knockback attribute, mace smash logic, the hit knockback source on the host, the fire burnout biome tag. Each is checked against vanilla by a harness (docs/rust-parity.md).

1 issue open

Gameplay parity

Choose the audio output device

Pick the speakers or headphones Horizon plays through, in Music & Sounds.

An output device list in Music & Sounds, falling back to the system default. #1035 started it: a player on an older Windows computer had no sound at all, and a device choice is how such cases are found and fixed.

1 issue open

Rendering

Well-known shader looks, rewritten for Horizon

Popular shader packs rewritten in Horizon's format, so good packs exist from the start. Only packs whose licence is open source and compatible with ours are rewritten, never anything else.

The first candidates are Photon, Chocapic13 and MakeUp Ultra Fast, each only after its licence is read and recorded: a pack is rewritten only if it is open source and compatible with Horizon's licence, and the rewrite is written from the shader format's documentation and the look on screen, not from anyone's code. Today only the Golden Hour example exists ([crates/horizon-shader-api/packs/golden_hour](https://github.com/ludovic111/horizon/blob/main/crates/horizon-shader-api/packs/golden_hour)).

Launcher

Microsoft sign-in (coming soon)

Coming soon: sign in with your Microsoft account to play on online-mode servers. The code is ready; it waits for Microsoft's approval.

Device-code sign-in in the launcher and online-mode login in the client (docs/microsoft-account.md). It is turned on by setting the app's client id once Minecraft API access is approved; until then the launcher shows "Coming soon".

1 issue open

Launcher

A visible beta label

A clear 'beta' label in the launcher and the game, so nobody is surprised that Horizon is still being built.

Show Beta in the launcher's header and about page, on the game's title screen and on the website, beside the version number (docs/versioning.md).

Platforms

Horizon on Intel Macs

Builds of the game and the launcher for Macs with an Intel processor.

x86_64 game and launcher builds, picked per processor (#1171). Before it ships it needs a run on a real Intel Mac: Rosetta on Apple Silicon only proves the CPU code. Requests: #1161, #1792.

1 pull request in review · 2 issues open

Platforms

Wayland and Hyprland polish

Fixes for Linux desktops that use Wayland and Hyprland: fullscreen, the clipboard, the GUI scale after a restart and the like.

Open: the GUI Scale is clamped to 2 after a restart under Hyprland, while XWayland keeps it (#1866). Earlier reports covered fullscreen dropping on menu clicks, the clipboard and a white overlay (#1007, closed). Checked on a real Wayland session.

AI and agents

A versioned agent-control protocol

A stable, documented way for AI agents and scripts to drive the game and the launcher, with versions and an event stream so tools keep working as Horizon changes.

hello answers with the API version, the release and the features; horizon-ctl --api; MCP serverInfo; reply schemas generated into the reference; a test. namespace for hooks; transcript compatibility tests; subscribe as a stream of events on one connection; Horizon option files by key and saved-server commands. Agent control itself (horizon-ctl, both MCP servers, the No AI switch) is done: docs/agent-control.md, docs/api/agent-control.md.

AI and agents

Port mods with your own AI agent

You can port a mod to Horizon with your own AI agent on your own computer. Horizon documents how and gives you the tools, but provides no hosted agents.

A player runs their own agent locally with horizon-ctl and the MCP servers (docs/agent-control.md), cargo horizon-mod, horizon-port-pack and the parity harnesses as the check. Horizon writes the guide (website/docs/agents.md, docs/modpacks.md) and runs no agents, accounts or keys for players. The No AI switch turns all of it off.

Community

Horizon on X (coming soon)

Coming soon: an official Horizon account on X, used to announce releases and the weekly summary.

Kira already posts the roadmap items marked announce = true when they ship, and the weekly summary, as soon as the account's credentials exist (roadmap/README.md, 'The journal'). Waiting for the account itself.

Code and tools

Pipeline protection and a GitHub App for agents

Safer releases: changes to the release machinery need the owner's review, and AI agents use a smaller identity of their own instead of a personal account.

.github/CODEOWNERS lists the workflows, the release and signing tools, the update-checking code and the installers (#1015); the branch protection that makes it count waits for the horizon-agent GitHub App, which reads and writes code, pull requests and issues but can't change settings, workflows, secrets or members, and whose tokens last an hour. It needs the owner to create the App and switch the protection on (docs/security.md).

Code and tools

Signed updates everywhere, installers included

Every download Horizon makes is checked against the project's signature, including the first install with install.sh and install.ps1.

Releases carry signed checksums, and the launcher and horizon-server update refuse anything unsigned (#1011, #1014). Left: the first install through install.sh and install.ps1 still trusts only the checksum GitHub publishes, because verifying Ed25519 signatures needs OpenSSL 3, which macOS doesn't ship (docs/security.md).

Later

Decided, further out.

Performance

Exact far terrain from real chunks

Far terrain drawn from the world you really built and explored, caves and builds included, not only a preview from the seed.

Keep a 3D mip store on disk built from real chunks, drawn by the GPU beside the seed preview for areas nobody has visited. Written from scratch and measured before it is kept. Builds on Far Detail and the far-terrain levels of detail already shipped; the open work on them is #718.

1 issue open

Modpacks

Older Fabric and Forge mods

Recognise mods built for versions before 26.1 in the mod browser, so they can be checked and carried over like newer ones.

A mapping table from intermediary and SRG names so pre-26.1 jars can be classified, and a rename for mod ids with dashes (fabric-api); the port step then treats them like newer jars (docs/mod-browser.md).

Modpacks

A modpack's own resource and shader packs

Importing a modpack also brings the resource packs and shader packs it ships with, where Horizon can use them.

Porting a pack carries data, assets and worldgen today; the resource packs and shader packs bundled with it are left out. Resource packs can be carried as they are; shader packs go through the converter (docs/modpacks.md).

Modpacks

Whole modpacks, such as ATM10, rewritten

Rewriting a complete big modpack for Horizon so it runs far better than the original. Not a priority now: the work above comes first.

The project's first goal for modpacks: support them ten times better than vanilla and port any of them. It was set aside in favour of compatibility through the browser. What exists: ATM10's world generates and 42 of its 496 mods are carried at least in part (docs/modpacks.md). It depends on 'Mods with code' and the native mod API.

Modpacks

Running Java mods that aren't rewritten

Run Java mods that nobody has rewritten for Horizon yet, through a bridge or a converter. Hard and not started: the Convert button and native rewrites come first.

Earlier research (#527, closed) found that Java mods can't simply run, because they call Minecraft's own classes. Options to look at again: a jar-to-WebAssembly backend, or a bridge for simple Fabric mods. Whatever is chosen has to run inside the same sandbox and capability checks as native mods.

Servers and multiplayer

Ely.by and other sign-in providers

Sign in with other account providers, such as Ely.by or any Yggdrasil-compatible one, beside Microsoft.

Issue #1270 asks for Ely.by and Yggdrasil-compatible servers with an account selector in the launcher. It builds on the Microsoft sign-in (docs/microsoft-account.md).

1 issue open

Servers and multiplayer

Online-mode checks for Play with Friends

Friends who join through an invite code could prove who they are with their Microsoft account, as on online-mode servers.

Play with Friends joins over an encrypted tunnel with an invite code (docs/play-with-friends.md, 'Identity'). Online-mode checks against Mojang's session servers can be added on top of the same tunnel; they need Microsoft sign-in first, which is coming soon. Play with Friends stays self-hosted between players, with no relay run by the project.

Mods and API

Orbital Laser on the normal game

The community mod Orbital Laser, made for a fork of Horizon, running on the normal game and listed in the registry as the showcase of the mod API.

A pull request on https://github.com/Stink-O/orbital-laser (MIT) once the input, ui, render and world capabilities exist (see 'Screens, input and drawing for mods'): today the mod needs them through its author's fork. Tested in the game, and listed in the registry.

Mods and API

Native versions of popular client mods

Built-in versions of the client mods players ask for: block info on hover, a recipe viewer like JEI, a world map and schematic overlays.

Done as extras: a mod list and menu, a minimap and a zoom (docs/extras.md). Left: block info tooltips, a recipe viewer (a contributor offered to port JEI if it becomes a native feature), a world map and a schematic overlay. They need the read-only interfaces inventory-read, recipes, world-read and render in the mod API, or they go into the game directly.

Mods and API

Create-style physics as a native mod

Contraptions and physics like the Create and Aeronautics mods, as a mod for Horizon rather than part of the base game.

Issue #805 (porting QOL mods) closed with this answer: it would come as a native Horizon mod on the mod API. It needs server mods, entities and rendering first.

Mods and API

Proximity voice chat as a native mod

Hear nearby players talk, as with the voice chat mods of other Minecraft versions, as a Horizon mod.

Needs server mods, mod networking and an audio interface in the mod API before anything can be built (docs/api/mods.md).

Gameplay parity

Every Minecraft version, prepared automatically

Every past and future Minecraft version prepared for Horizon automatically. When Mojang releases one, Horizon follows it, and every system is checked against it again.

The port pipeline (docs/version-ports.md, tools/version_port.py) detects a release, prepares it, diffs its classes against the pinned 26.3, regenerates the data-driven tables, runs every parity harness on it and writes a port report that becomes issues. The goal is as little human work as possible for any version, past or future. Detection and the first slices are merged; the scheduled agent that runs it every day isn't installed yet. Two versions in one build are out of scope.

Gameplay parity

Controllers: tested on real pads, and in the launcher

Make controller support solid: tested with real PlayStation and Xbox pads and a Steam Deck, and usable in the launcher too.

The game side is merged (docs/controllers.md): pads read with gilrs, menus, rumble, glyphs, remapping and DualSense adaptive triggers, lightbar and haptics, but not yet confirmed on real pads or a Steam Deck (DualSense haptics stay behind a switch until then). Left: a test pass on real hardware, and the same focus navigation in the GPUI launcher.

Gameplay parity

The full debug screen

Vanilla's complete F3 screen: debug options, a profiler chart, ten-second captures and an atlas dump.

Today F3 shows position, chunk, light, biome and FPS (docs/native-client.md). Vanilla also has F3+F6 debug options with profiles, F3+1 the profiler pie, F3+L a ten-second capture and F3+S the atlas dump (#562 asked for the F3 editor).

Rendering

A light default shader pack

A small built-in look (tone mapping, colour grade, a cheap vignette) that costs almost nothing, for players who want a nicer picture without a heavy pack.

An opt-in, composite-only pack on the native shader API, under about 0.3 ms at 1080p, shown on the Shader Packs page. Pack option sliders and profiles, and a Failed row with the full error, belong with it.

Rendering

Optional ray tracing

An optional ray-tracing mode for graphics cards that support it (RTX and recent AMD): shadows, water reflections and global lighting on top of the vanilla look.

A spike with ray-traced sun shadows, off by default, is a draft (#1180). Reflections, global illumination, Apple M3 and newer if it is cheap, and a performance report per card come after.

1 in progress

Rendering

HDR monitors

Output for HDR monitors: brighter highlights and richer colour where your screen supports it.

Issue #1441. Needs a surface format and a tone-mapping path per backend, and tests on real HDR screens on Windows, macOS and Linux.

1 issue open

Rendering

MSAA, anisotropic filtering, exclusive fullscreen

More graphics options: multisample anti-aliasing, anisotropic filtering and an exclusive fullscreen mode. Today Horizon has FXAA and borderless fullscreen.

Not implemented (docs/graphics.md). Anisotropic filtering needs linear magnification in wgpu, which blurs close blocks, so close-up sharpness has to be kept first; MSAA would sit beside FXAA; exclusive fullscreen where the backend supports it.

Launcher

Lean installs that use less disk

Smaller installs: Horizon keeps one shared copy of the prepared game files and removes what only the preparation needed.

A shared resource store keyed by the preparer's digest, no prepare intermediates left behind, the current and the previous version kept, and an automatic clean-up. Not started.

Platforms

Horizon on Linux ARM64

Game and launcher builds for 64-bit ARM Linux computers.

Issue #1709: aarch64 builds of the game and the launcher in the release workflow, tested on a real ARM machine with its Vulkan driver. The server build already drops audio and controllers (--no-default-features).

1 issue open

Platforms

Android, iOS and the browser

Versions of Horizon for Android, iOS and web browsers. Nothing official yet; contributors have started the first pieces.

No official build. Android was first closed as not planned, with touch controls, a mobile interface, packaging and loading the player's own assets all missing; the roadmap now includes it, iOS and a WebAssembly build for the browser as long-term goals. First pieces from contributors: horizon-dualsense compiling on iOS (#1813) and helper-thread limits on Android (#1751). Preparing without Java (#1750) matters here too. Horizon ships none of Mojang's files on any platform.

Platforms

AppImage and a Nix flake

Install Horizon on any Linux distribution as an AppImage, and on NixOS through a Nix flake.

A player's idea (#horizon-ideas). An AppImage of the launcher and game from the release workflow, and a flake.nix packaging the release binaries with their runtime libraries (Vulkan loader, X11/Wayland, ALSA), the way horizon-parity's NixOS setup runs them today.

Horizon extras

A complete video studio inside the game

Record, replay and edit videos without leaving the game: record in a keypress, replay a session, cut and finish the video. One of Horizon's original goals.

Three stages. Recording: capture gameplay in a keypress with an encoder thread and little frame-time cost. Replay: a replay mode for recorded sessions. Editing: cuts, camera paths, titles and export. None of it exists yet; the agent-control socket (docs/agent-control.md) already lets tools drive the game for scripted shots.

Horizon extras

Game menus in the launcher's style

An optional look for the game's own menus and options that matches the Horizon launcher. Off by default: the vanilla menus stay as they are.

A player's idea (#horizon-ideas). A built-in resource pack or a Horizon setting that restyles the title, pause and options screens with the launcher's design tokens (crates/horizon-theme), following docs/design-system.md; off by default because it changes the vanilla look.

AI and agents

An optional AI teammate

An optional AI teammate you can talk to by voice. It plays beside you, helps or finishes the game with you, runs on your computer first, and exists only if you turn it on. The No AI switch hides it.

Draft pull requests: the companion (#1068), its safety modes and their evaluation (#1069) and a route that finishes the game (#1070). In the drafts: a companion that follows, fights, mines, crafts, sleeps and respawns; chat and push-to-talk voice, with speech recognition and a choice of voices; presets (very strong, helper, beat the game); a guard model with Clean, Kid and Salty modes; perception levels from Fair to All-knowing; hardware detection with a simple mode and an Advanced tab; local models first, cloud keys optional. The No AI switch is already in the game. Left: the speedrun route doesn't finish the game reliably yet, voices for more languages, and the safety evaluation, which must pass before it ships.

3 in progress

Community

A video series about Horizon

A series of videos about how Horizon is made and what is new, with each upload announced on Discord.

Kira already shows new uploads in a read-only Discord channel (done). The series follows each stage of the project: a script, edits, titles and a thumbnail per video.

Help wanted

Good first contributions: a clear vanilla behaviour, an issue with the steps, a place to start.

Performance

Benchmark your computer

Run Horizon's built-in benchmark and share the report: every new computer makes the performance work more accurate. No coding needed.

horizon-launcher play --arg=--benchmark --arg=standard writes a JSON report; horizon-launcher data benchmark <report> shows what would be sent and uploads it (website/docs/performance.md). Results from three installs with the same hardware appear on the Benchmarks page. Example: #1711.

1 issue open

Gameplay parity

End city banners keep their pattern

Banners in End cities show as plain magenta instead of with their pattern.

Compare the banner block entities the End city templates place with vanilla's (EndCityPieces, the templates' block entity NBT, BannerBlockEntity's patterns), in crates/horizon-world/src/worldgen/structure/. Issue #1438; possibly related: #526.

1 issue open

Gameplay parity

Enchanted loot in End cities

Armour and tools in End city chests should come enchanted, as in vanilla.

loot.rs implements enchant_with_levels: find why the End city chest table's rolls come out bare, and compare them with vanilla's for a few seeds. Issues #1437, #1660.

1 issue open

Recently shipped

Out in a release. The journal has every change.

Platformsv0.2.63

OpenGL for old computers

Horizon now starts on old PCs whose graphics card has no Vulkan or DirectX 12 driver: it switches to OpenGL by itself, and Options > Graphics can pick OpenGL by hand.

wgpu's GL backend (WGL on Windows, EGL on Linux) as the last fallback after Vulkan and DirectX 12 (#1917), sprite arrays and CPU sprite animation for drivers without compute (#1920), no indirect draws below GL 4.3 (#1936). Minimum OpenGL 3.3 core. Shader packs don't run on it yet.

Servers and multiplayerv0.2.48

Server resource packs

Servers can send you their resource pack: Horizon asks, downloads it and applies it, like vanilla.

The dedicated server offers server.properties' pack (#1562); the client's pack manager, downloads, prompt and Server Resource Packs setting (#1569, #1570).

Gameplay parityv0.2.39

Single player on its own server thread

Single player runs on a server thread, as vanilla does, so the world keeps ticking smoothly while the window draws.

game/integrated.rs runs a second Game with one level per dimension; the window joins it through memory like a LAN guest (#1514).

Performancev0.2.17

GPU occlusion culling on Macs

On Macs the GPU now skips terrain hidden behind hills and caves: 8 to 48% more frames per second at 32 chunks on an M4 Pro.

GPU occlusion culling on Metal (#1434).

Performancev0.2.5

Animated textures on the GPU

Water, lava and other animated blocks are now animated by the graphics card: 1.7 to 2.4 times better 1% lows on Intel graphics.

Frames uploaded once, no per-tick CPU blend or copy (#1239).

Performancev0.2.5

Far Detail for integrated graphics

An optional Reduced setting for far terrain, suggested on integrated graphics, that saves 2 to 4 ms of GPU time per frame.

Opt-in reduced far terrain (#1199), on far-terrain chunk summaries built on the workers (#1029).

Horizon extrasv2026.10.22

Dynamic lights

An optional extra: torches you hold, drop or set on fire light up what is around them.

Held, dropped and burning light sources (#1162), in Horizon Extras, off by default.

Servers and multiplayerlauncher-v0.15.0

Host a server from the launcher

The launcher's Servers page creates, starts, backs up and updates a Horizon server with buttons, and invites friends.

The launcher's Servers page (#1026) over horizon-server (docs/hosting.md).

The roadmap lives in the repository: ROADMAP.md, generated from roadmap/roadmap.toml. Pull requests carry the roadmap:<id> label of their item.

Every open issue and pull request, placed by its state on GitHub, as on Kira's work board in Discord.

To do92

Open and free: pick one, and say so with /claim on Discord.

  1. Issue #2209Black horizon expands into the sky at lower render distancesludovic111
  2. Issue #2208Renderer crashes with wgpu Out of Memory while reloading selected packsMurilinho145SG
  3. Issue #2174Placing sound plays when right-clicking a wooden block with an attached torchludovic111
  4. Issue #2165Request: contributor (triage) and reviewer access for @kacpherekkacpherek
  5. Issue #2141Death, couldn't die when shot by skeleton.ludovic111
  6. Issue #2120cargo binstall support for `cargo-horizon-mod`Qiumix
  7. Issue #2110Appimage supportduckaleuze
  8. Issue #2093Package a FlatpakHypergamyDenier
  9. Issue #2083Ender dragon which is invisible still throws dragon's breath, which is also invisible tooludovic111
  10. Issue #2065[FEATURE] Github PAT to resolve rate limitsaptonline
  11. Issue #2064Fire has no animations, even on mobs or when on the groundludovic111
  12. Issue #2054[Feature request] Splitscreen supportsamolego
  13. Issue #2014No ender dragon and glowing effect does not workludovic111
  14. Issue #1961Windows: the first launch after a Defender signature update takes 77-92 s to load (23,000 loose resource files)feeldev12
  15. Issue #1940Input and Audio Lag while multitaskingludovic111
  16. Issue #1927[regression] Support other Languagesx-0D
  17. Issue #1925[Bug] Mouse cursor does not center on screen when opening inventoryi-krazy
  18. Issue #1921No Background on Title Screen after V0.2.57ludovic111
  19. Issue #1908Continuous stone breaking soundludovic111
  20. Issue #1890Massive lag spike from chunk loading that makes the game stutterludovic111
  21. Issue #1889Distant LOD's are not correct with floating blocksludovic111
  22. Issue #1878Weird Arrow looking particles in water (found on macOS)ludovic111
  23. Issue #1876Pretty much every break texture on blocks is incorrect to the actual block (found on macOS)ludovic111
  24. Issue #1873Amplified world type doesn't existludovic111
  25. Issue #1872Can't customize superflatludovic111
  26. Issue #1871Can't access minecraft debug worldludovic111
  27. Issue #1835Skeletons don't aim bows at players when shootingludovic111
  28. Issue #1832All potions transform into uncraftable potion when put in inventoryludovic111
  29. Issue #1830Horizon Discord Rich Presence does not show up as currently playing on discord (macOS)ludovic111
  30. Issue #1792Add Intel Mac SupportHorizon on Intel Macsalanwang233233
  31. Issue #1780bug when i broke ender portal in endfaustyu1
  32. Issue #1776Weird turtle feet behaviorludovic111
  33. Issue #1768Ghost blocks/items appear in the inventory crafting grid when exiting a crafting tableludovic111
  34. Issue #1767Playing ping made optional, but on by default.ludovic111
  35. Issue #1766[suggestion] [horizon launcher] update horizon launcher screenshotsx-0D
  36. Issue #1762throwable stuff lag/stay in place for a bittakenlarkz-cyber
  37. Issue #1759riding a zombie horse while another entity is on it(zombie)takenlarkz-cyber
  38. Issue #1758observer clock makes piston bugPistons push players and mobstakenlarkz-cyber
  39. Issue #1750Preparing a version without Java on the player's machine: publish the computed tables, assemble locallyPrepare a version without Javafeeldev12
  40. Issue #1749`--benchmark`: a scene counts as loaded before the integrated server sends its first chunkFresh benchmarks against vanillafeeldev12
  41. Issue #1737After using Shift + Right-Click to move items in chests, it stops working and prevents interactionludovic111
  42. Issue #1711Benchmark: Horizon v0.2.50 vs vanilla 26.3 on an Apple M3 MacBook Air (macOS 26.2)Benchmark your computerLouistuis
  43. Issue #1709Please provide a Linux ARM64 version.Horizon on Linux ARM64ppoottaatto
  44. Issue #1705macOS: integrated server panics with 'failed printing to stdout: Broken pipe' when the launcher has exited, world creation hangsLouistuis
  45. Issue #1703Far away kelp starts flickering at predictable timingsludovic111
  46. Issue #1680When flying in sprint, holding control increases speedludovic111
  47. Issue #1672Language: the client's own screens stay EnglishPlay in your languageDomanffe
  48. Issue #1661Shulker Entity Renderingwarpgamestv
  49. Issue #1645[multiplayer] Plugin chest-GUI titles and item names lose all text stylingsocksprox
  50. Issue #1639villagers will become untradeable after destroying their first work benchVillages and combat, exactly as in vanillaludovic111
  51. Issue #1609slime blocks moved by pistons dont interact with the player. they just go into the player and dont pPistons push players and mobsludovic111
  52. Issue #1608slime blocks with pistons dont behave correctlyPistons push players and mobsluiS1q1
  53. Issue #1598even when still holding W, the player stops sprinting when not holding control if you jumpludovic111
  54. Issue #1593[both singleplayer modes] Sprint does not survive the sprint key: swimming needs it held, a sprint jump loses its impulseDomanffe
  55. Issue #1555Legal risk considerations around clean-room claims, decompiled code, and behavior parityEthanPeng-2048
  56. Issue #1544Horizon crashes on launch after enabling Solas Shaderludovic111
  57. Issue #1543Custom shader's water reflections get offset when viewbobbingludovic111
  58. Issue #1531[commands] Selectors omit live dragons and placed End crystalsrdbtCVS
  59. Issue #1528[server-thread] Nether portal arrivals freeze until a player followsrdbtCVS
  60. Issue #1524[commands] Unbounded entity selectors ignore other loaded dimensionsrdbtCVS
  61. Issue #1518[singleplayer] End gateways ignore mobs and dropped itemsrdbtCVS
  62. Issue #1517[singleplayer] End gateways ignore their configured exitrdbtCVS
  63. Issue #1515[singleplayer] Mobs and dropped items do not enter End portalsrdbtCVS
  64. Issue #1499Launcher: 'Remove for good' deletes on the UI thread and freezes the windowsocksprox
  65. Issue #1496[singleplayer] Extending pistons do not push the player, including server-threadPistons push players and mobsrdbtCVS
  66. Issue #1486[server-thread] Nether portal travel separates the rider from the horserdbtCVS
  67. Issue #1485[server-thread] Helping an axolotl gives no Regeneration or fatigue removalrdbtCVS
  68. Issue #1484[server-thread] Mob status effects are lost for the playerrdbtCVS
  69. Issue #1481[server-thread] Evoker fangs hurt nearby mobs but not the playerrdbtCVS
  70. Issue #1474[both singleplayer modes] Saving and reopening while riding a horse loses the riding staterdbtCVS
  71. Issue #1461Large amounts of signs with text causes lagA batch of targeted optimisationsrdbtCVS
  72. Issue #1441Implement HDRHDR monitorsludovic111
  73. Issue #1439[LOD] structures that have been loaded and then go into LOD such as end cities have end stone extending to fill the gap between the floor and the structure if it is floating. same for trees in the overworldOnline5277
  74. Issue #1431Funky behavior with block breaking and item dropping, critical hit effects not renderingludovic111
  75. Issue #1403Idea: Implement native upscalingNative upscalingVisivel
  76. Issue #1384[server-thread] Visible custom boss bars never appearrdbtCVS
  77. Issue #1346Improve benchmark reliability, coverage and presentationFresh benchmarks against vanillardbtCVS
  78. Issue #1340[server-thread] Creative mining keeps destroying replacement blocks after releasing attackrdbtCVS
  79. Issue #1338[server-thread] Resistance is ignored for the first fall during dimension arrivalrdbtCVS
  80. Issue #1321[server-thread] Reopening underwater refills the player's remaining airrdbtCVS
  81. Issue #1303[server-thread] Sprint-swimming ignores upward and downward look directionrdbtCVS
  82. Issue #1301[server-thread] Spyglass use never zooms or displays the scoperdbtCVS
  83. Issue #1298[server-thread] Charged Nether respawn anchor is ignored after deathrdbtCVS
  84. Issue #1296[server-thread] Leather boots do not support the player on powder snowrdbtCVS
  85. Issue #1291Resting block drops remain embedded inside newly placed solid blocks in both singleplayer modesrdbtCVS
  86. Issue #1286[server-thread] Dropped items freeze between movement updates and then jumprdbtCVS
  87. Issue #1282[server-thread] A charged crossbow does not fire on the next userdbtCVS
  88. Issue #1281[server-thread] Releasing a charged trident does not throw itrdbtCVS
  89. Issue #1279[server-thread] Auto Jump remains disabled when the option is enabledrdbtCVS
  90. Issue #1233Singleplayer water-bucket clutch softlock and multiple gameplay/UI bugsKlaw-w
  91. Issue #1073Redo the comparison page with fresh numbers after the current perf wave (was #286)Fresh benchmarks against vanillaludovic111
  92. Issue #678[performance] Camera movement feels choppy at 32 chunks despite 500+ FPS (frame pacing)Steady frames at long render distancesludovic111

In progress16

Claimed, assigned, or a draft pull request.

  1. PR #2131Launcher: every text field uses the shared LineEditJoansitoh
  2. PR #1808Preserve world and player state across backupsHosting polish: Windows service, safe updatesCateDesu
  3. PR #1731Client: apply remote living-entity attributes and simulation distancePlaying on servers: everything shows as it shouldRVZO6
  4. PR #1702Client: retain styled server item names in tooltips and held labelsPlaying on servers: everything shows as it shouldRVZO6
  5. PR #1696Client: report unsupported server packets and entitiesRVZO6
  6. Issue #1333 · PR #1415[macOS] Benchmark stays capped at 144 FPS with VSync off and unlimited frame raterdbtCVS
  7. Issue #1270Support Alternative Authentication ProvidersMicrosoft sign-in (coming soon)ludovic111
  8. PR #1189Code mods: API 0.4 block entities preview, a machine harness, and the ATM10 code-mods planMachines and blocks with inventories (API 0.4)ludovic111
  9. PR #1180Ray tracing spike: experimental ray-traced sun shadows (off by default) + reportOptional ray tracingludovic111
  10. PR #1070Companion speedrun route: finish the game alone (Overworld, Nether, End)An optional AI teammateludovic111
  11. PR #1069Companion safety: guard model, Clean/Kid/Salty modes, evaluationAn optional AI teammateludovic111
  12. PR #1068AI companion (opt-in): a local AI teammate you can talk toAn optional AI teammateludovic111
  13. Issue #1035No sound at all on Windows (mrpatitas, Intel legacy GPU machine from #746)Choose the audio output deviceludovic111
  14. Issue #718[performance] FPS halves from render distance 48 to 64 (90 → 50 FPS); LOD for far chunks?Steady frames at long render distancesludovic111
  15. Issue #717[performance] A large field of block entities is CPU-bound: 46 FPS, 21.8 ms CPU on M4 ProSteady frames at long render distancesludovic111
  16. Issue #526Ominous Banner loses its patterns and becomes a White Banner after placementEnd city banners keep their patternDoopz93

In review125

A pull request is ready for review.

  1. PR #2205Let turtles lay eggs that hatch into baby turtleskacpherek
  2. PR #2204Give the conduit its power and its attackkacpherek
  3. PR #2203Illagers do not attack baby villagerskacpherek
  4. PR #2202Match vanilla evoker summon, fangs, vex and wololo ruleskacpherek
  5. PR #2201Zombies and vindicators break and open doors as in vanillakacpherek
  6. PR #2200Throw leftover items from the eyes, and creative players keep their stack on an armor standkacpherek
  7. PR #2199Experience orbs: wider pickup area, merging, and lava bouncekacpherek
  8. PR #2198Cactus destroys dropped items that touch itkacpherek
  9. PR #2197Chests with a block or a sitting cat on top no longer openkacpherek
  10. PR #2196Axolotls dry out on land, squid squirt ink when a living entity hurts themkacpherek
  11. PR #2195Guardians: damage scales with Hard and elders, squid and axolotls must be beyond 3 blockskacpherek
  12. PR #2194Turtle helmet: Water Breathing while the eyes are out of the waterkacpherek
  13. PR #2193Water buckets pick up fish and tadpoles, keeping their datakacpherek
  14. PR #2192Piglins walk away from soul fire, soul torches, soul lanterns and lit soul campfireskacpherek
  15. PR #2191Hoglins keep away from warped fungus, nether portals and respawn anchorskacpherek
  16. PR #2190Piglins accept only gold ingots by hand and keep other loved itemskacpherek
  17. PR #2189Dragon: find healing crystals in its grown box and cap healing at maxkacpherek
  18. PR #2188Loot: suspicious stew keeps the effect set_stew_effect rolledkacpherek
  19. PR #2187Shulker bullets make open shulkers teleport and duplicatekacpherek
  20. PR #2186Soul Speed: speed, no soul sand slowdown, boots wear, soul particleskacpherek
  21. PR #2185Slime block slows a walking playerkacpherek
  22. PR #2184Elytra: hurt on wall hits, stop on climbables and levitation, Unbreaking wearkacpherek
  23. PR #2183Shovels put out lit campfireskacpherek
  24. PR #2182/weather works with the weather cycle turned offkacpherek
  25. PR #2181Sleeping follows vanilla's bed rules: creative, obstruction, reach, and the morning skipkacpherek
  26. PR #2180Wire fire burnout, difficulty and spread radius into the fire tickkacpherek
  27. PR #2179Match vanilla difficulty and survival rules for lightning firekacpherek
  28. PR #2178Make lightning strike the closest lightning rodkacpherek
  29. PR #2177Launcher: registry mods show their 1-5 star ratingludovic111
  30. PR #2173Mod registry: download counts in the index and the launcher's browserludovic111
  31. PR #2171mods: command.run-quiet (API level 3): a batch of commands with nothing in the chatludovic111
  32. PR #2169HUD: the hotbar draws its stacks without cloning themDomanffe
  33. PR #2164Witches stand still while drinking and skip potions a target already haskacpherek
  34. PR #2163Mobs killed by a charged creeper drop their headkacpherek
  35. PR #2162Zombies call reinforcements when hurt on Hardkacpherek
  36. Issue #2161 · PR #2207, PR #2176W key cannot be used for both walking and sprintingludovic111
  37. PR #2160Split horizon-command and horizon-client-core out of horizon-clientludovic111
  38. PR #2159Infinity only saves plain arrows, not tipped or spectral oneskacpherek
  39. PR #2158Fishing bobber hooks dropped items; owner luck and fish_caught match vanillakacpherek
  40. PR #2157Wear armor from environment damage (cactus, fire, lava, campfire, berry bushes)kacpherek
  41. PR #2156Arrows press wooden buttons and keep them pressedkacpherek
  42. PR #2155Target blocks react to projectile hitskacpherek
  43. PR #2154Daylight detectors follow the sky and update when usedkacpherek
  44. PR #2153Make Piercing crossbow arrows pass through entitieskacpherek
  45. PR #2152Apply Unbreaking to thrown tridents and stop Riptide while ridingkacpherek
  46. PR #2151Make Channeling summon lightning when a trident hitskacpherek
  47. PR #2150Villagers find a child's bed in the full 48 block sphere and only take reachable oneskacpherek
  48. PR #2149Farmers make bread and compost seeds at their composterkacpherek
  49. PR #2148Sneaking players no longer open villager trades or shake their headskacpherek
  50. PR #2147Let a fire charge light a creeperkacpherek
  51. PR #2146Pick the skeleton bow interval by difficultykacpherek
  52. PR #2145Respect mobGriefing for mob explosions and endermenkacpherek
  53. PR #2144Make thorns hurt the entity that hit the playerkacpherek
  54. PR #2143Make a sword sweep hurt the mobs next to the targetkacpherek
  55. PR #2142Scale mob damage to players with the difficultykacpherek
  56. PR #2138Breeding matches vanilla: rabbits breed, damage ends love, horse and wolf checks, XP follows mob dropskacpherek
  57. PR #2137Chickens lay eggs again, and breaking snow and chorus flowers drops itemskacpherek
  58. PR #2136Furnaces: drying a wet sponge fills the bucket in the fuel slotkacpherek
  59. PR #2135Infested blocks release their silverfish when brokenkacpherek
  60. PR #2134Charge melee exhaustion only when the hit hurtskacpherek
  61. PR #2133Make the fall, drowning, fire and freeze damage game rules workkacpherek
  62. PR #2132Apply suspicious stew effects when the stew is eatenkacpherek
  63. PR #2130Launcher: Game arguments edits at the caretJoansitoh
  64. PR #2129Server players see sweep attacks, damage indicators and fishing particleskacpherek
  65. PR #2128Server players' camera tilts towards the hitkacpherek
  66. PR #2126Draw the level events the client dropped: lava and torch smoke, drips, chorus, sniffer eggs, dragon fireball burstkacpherek
  67. PR #2125Server players see villager hearts, taming hearts and smoke, spawn poofs and snowball crumbskacpherek
  68. PR #2124Block ambient effects: levers, repeaters, dripstone, wither roses, End gateways, lightning rodskacpherek
  69. PR #2123Server players see fence knots and leads tied to fenceskacpherek
  70. PR #2109Server players see the dragon's breath clouds and fireballskacpherek
  71. PR #2105Fire emits ambient smoke; mob breaks of fire drop no crumbssocksprox
  72. PR #2101Server players: chest minecart and chest boat menus stay openkacpherek
  73. Issue #2095 · PR #2116[macOS] SIGTERM/Ctrl+C kills the game without saving; native quit also skips parts of vanilla's shutdownsocksprox
  74. Issue #2091 · PR #2096Craft book tab switching does not worksasakidoyou
  75. Issue #2087 · PR #2099Pot renders incorrectly on the topludovic111
  76. PR #2078Saves: write the structure starts a chunk holdsFusselTV
  77. PR #2077Structures: save the remaining legacy pieces as vanilla doesFusselTV
  78. PR #2076Structures: save template pieces as vanilla doesFusselTV
  79. PR #2075Structures: save jigsaw starts as StructureStart.createTag doesFusselTV
  80. PR #2074Saves: write points of interestFusselTV
  81. PR #2073Saves: unopened containers keep their loot tableFusselTV
  82. PR #2072Proto chunks: save placed block entities with their idFusselTV
  83. PR #2071Trial spawners: no empty spawn_data on saveFusselTV
  84. PR #2070Saves: Nether and End chunks keep their own heightFusselTV
  85. Issue #2067 · PR #2111can't hit ghast fireballs back at themludovic111
  86. PR #2059Launcher downloads go through the proxy the player setszhykowo
  87. Issue #2039 · PR #2068Custom item names/tool tips from servers/resource packs do not carry over properlyludovic111
  88. Issue #2035 · PR #2045Creative players can break blocks while holding a swordESHAYAT102
  89. PR #2022Fix sprint-jump losing its forward impulsemc070309
  90. PR #2021HDR output: scRGB swapchain, HDR metadata and emissive highlightssenjinthedragon
  91. Issue #2001 · PR #2038Bundle UI never shows upludovic111
  92. PR #1990Edit the remaining text fields at the caretJoansitoh
  93. Issue #1988 · PR #2015Can't place food on campfireludovic111
  94. Issue #1959 · PR #2107Crashed when loading UI resource Packludovic111
  95. Issue #1953 · PR #2060Poor performance in containers and specifically creative/searchrdbtCVS
  96. PR #1950Deprecate public in-frame execution selectorsrdbtCVS
  97. Issue #1948 · PR #2103Uncraftable potion as trade item (loot pool and items bug)ludovic111
  98. Issue #1938 · PR #2121[server-thread] Dismounting a happy ghast drops the player through it instead of leaving them standing on its backDomanffe
  99. Issue #1935 · PR #2047Cant place cushionsludovic111
  100. PR #1924Native AEI: JEI-compatible recipe browser and mod APIMurilinho145SG
  101. PR #1906Mods in Lua: horizon-mod-lua, a Lua 5.4 interpreter built into the modludovic111
  102. PR #1901Mod API 0.3: typed server commands, in players' command treesludovic111
  103. PR #1895Mod API 0.3: capability world for server mods (blocks, biomes)ludovic111
  104. PR #1894Server mods run in the game: server thread, in-frame, LAN hosts, dedicatedludovic111
  105. Issue #1893 · PR #2119End crystal explosion has sound but no explosion effect (macOS)ludovic111
  106. Issue #1882 · PR #2175Block breaking texture moves a few pixels while breaking a blockludovic111
  107. Issue #1826 · PR #2086Projectiles and block entities don't visually update until they landludovic111
  108. PR #1790PackedStorage: find an entry's word by multiply and shift, not divisionFaster block lookupsludovic111
  109. PR #1777Lithostitched: limited and guaranteed elements, pool and processor modifiersModpacks' world generation, nativelyludovic111
  110. PR #1760World generation: workers build free structure starts instead of queueingSteady frames at long render distancesludovic111
  111. Issue #1704 · PR #2206Piston pushed blocks teleportPistons push players and mobsludovic111
  112. Issue #1684 · PR #2046Squid direction bugESHAYAT102
  113. Issue #1660 · PR #2037Enchantments in Loot tablesEnchanted loot in End citieswarpgamestv
  114. Issue #1530 · PR #2049[server-thread] The naturally spawned Ender Dragon is invisiblerdbtCVS
  115. Issue #1527 · PR #2050[singleplayer] Force-loaded chunk flags disappear after normal restartrdbtCVS
  116. Issue #1525 · PR #2172[server-thread] Force-loaded chunks stop ticking when the player leaves their dimensionrdbtCVS
  117. Issue #1516 · PR #2102[singleplayer] Empty boats and minecarts do not enter Nether portalsrdbtCVS
  118. Issue #1507 · PR #2097[server-thread] First End exit skips the poem and creditsrdbtCVS
  119. Issue #1491 · PR #2088[server-thread] Guardian attack beams are invisiblerdbtCVS
  120. Issue #1482 · PR #2104[server-thread] Evoker fang attacks are invisiblerdbtCVS
  121. Issue #1478 · PR #2094[server-thread] Exploding firework rockets produce no firework burstrdbtCVS
  122. Issue #1436 · PR #2100item frames do not have proper lightingOnline5277
  123. Issue #1361 · PR #2115[both singleplayer modes] Lingering potions do not leave an effect cloudrdbtCVS
  124. Issue #1302 · PR #1969[server-thread] Speed effect remains active but loses its bonus after dimension travelrdbtCVS
  125. Issue #1161 · PR #1171Add MacOS X64 SupportHorizon on Intel Macsludovic111

Done100

Closed or merged in the last seven days.

  1. PR #2170Site: downloads and 1-5 star ratings on /modsludovic111
  2. PR #2168fix: typo, rename file from `gitignore` to `.gitignore`Qiumix
  3. PR #2167Mod registry: 1-5 star ratings, one per GitHub accountludovic111
  4. PR #2166parity-main: a failure that passes again at HEAD counts as a passludovic111
  5. PR #2140Quiet commands: the server runs a mod's batch of commands with no chatludovic111
  6. PR #2139Mod registry image: copy horizon-shader-apiludovic111
  7. PR #2127server_ops_feedback: end steps on the server's clock, not on sleepsludovic111
  8. PR #2122Horizon shader packs: the material stage runs in the gameludovic111
  9. PR #2118Localization: server screens and the new world name follow the languageludovic111
  10. PR #2117Font: menus keep their run-time glyphs when the renderer rebuilds its atlasludovic111
  11. PR #2114parity: server harnesses wait on the server's clock, not on sleepsludovic111
  12. PR #2113Mod API: game.raycast, the block the player looks atludovic111
  13. PR #2112Horizon shader packs: one WGSL prefixer for copies of the renderer's shadersludovic111
  14. PR #2108Worldgen data loads its three biggest parts in parallelludovic111
  15. PR #2106nightly: run the audit even when GitHub starts the schedule lateludovic111
  16. PR #2098Launcher: don't install a mod version the game can't runludovic111
  17. PR #2092Fire: smoke particleskacpherek
  18. PR #2090Teleports free their dropped columns off the frame and in batchesludovic111
  19. PR #2085Stop endermen teleporting nonstop in the Endkacpherek
  20. Issue #2084Weird enderman behaviourludovic111
  21. PR #2082Multiplayer: no break particles or sound when a player puts out firekacpherek
  22. PR #2081Performance preset: keep animated textures onkacpherek
  23. PR #2080Mod API levels: refuse a mod made for a newer Horizon, list each version's levelludovic111
  24. PR #2079The ender dragon's hits and breath name it in the death messagenirajkhetre
  25. PR #2063Minimap moved to the mod browser: remove the built-in minimapludovic111
  26. Issue #2062When getting killed by an enderman the death message shows placeholder data for namesludovic111
  27. PR #2061Reset boss overlay on server reconfigurationlazy-importer
  28. PR #2058Official mod: Minimapludovic111
  29. PR #2057Server chunk packets decode on their own thread, not in the frameludovic111
  30. PR #2056Mod API: render.set-minimap, a map the game keeps in a cornerludovic111
  31. PR #2053Fix recipe book overlays surviving inventory changesrdbtCVS
  32. PR #2052Container clicks: a closed screen drops its press statelevzzz5154
  33. PR #2051Horizon shader packs: one frame uniform per pack, apart from its post passesludovic111
  34. PR #2048Fix warden sonic boom waves for connected playersrdbtCVS
  35. PR #2044Roadmap: finished help-wanted items link the pull requests that did themDomanffe
  36. PR #2043ci: parity-main's runner comment says where it runs nowludovic111
  37. PR #2042Tooltips: compare the hidden component id without a UTF-16 copyDomanffe
  38. PR #2041Shaders: the frame uniforms keep their buffer between framesDomanffe
  39. Issue #2040Japanese text rendering bugsofia-gros
  40. PR #2036launcher: a Shader packs tab that installs Horizon's own shader packsludovic111
  41. Issue #2034Bossbar does not vanish properlyludovic111
  42. PR #2031F3: measure each line once per frameDomanffe
  43. PR #2030Zoom moved to the mod browser: remove the built-in zoomludovic111
  44. PR #2029Subtitles: measure each line once per frameDomanffe
  45. PR #2028Options > Horizon Settings > Shader Packs: pick a pack of either kindludovic111
  46. PR #2027Signs: cut the first line on byte offsets, not through a char copyDomanffe
  47. PR #2026F3 shows the shader pack's GPU time per pass, for either kind of packludovic111
  48. PR #2024Item cooldowns: tick them on the server client's path toolevzzz5154
  49. PR #2020Chat: a LAN guest's line follows the host's Chat optionlevzzz5154
  50. Issue #2019recipe book overlays stay visible after exiting and opening another inventoryludovic111
  51. PR #2018Fix hostile mob removal in Peaceful difficultyrdbtCVS
  52. PR #2012Mob models: one Poses per mob per frame, not one per equipment layerDomanffe
  53. PR #2011Name tags: collect the ridden mobs once, not per tagDomanffe
  54. PR #2010Mob models: one skip lookup per part, not one per polygonDomanffe
  55. PR #2009A villager's new profession rolls its tradesvlesmentie
  56. PR #2007Fix walking arm animation while riding boatsrdbtCVS
  57. PR #2003Bats flap their wings on server clientsrdbtCVS
  58. Issue #2000Bats don't flap wingsludovic111
  59. PR #1999Show critical-hit particles on server clientsrdbtCVS
  60. Issue #1998Villagers don't get their profession with user placed workstationsludovic111
  61. PR #1996parity: choose harnesses faster (shared parse cache, early stop, time budget); skip the prepare_output check before #1947ludovic111
  62. PR #1993Frames: one scan for breaking progress, and no name formatting per crackDomanffe
  63. PR #1992Benchmark: wait for the post-teleport load before measuringDanielGodriNeto
  64. PR #1987World text parity: same-frame glyph uploads, display lines, name-tag colourssocksprox
  65. PR #1986Prepare: the CLI finds Minecraft 26.3 in ATLauncher and the CurseForge appsome-du6e
  66. PR #1984Make water currents carry dropped itemsrdbtCVS
  67. PR #1980Play no place sound when a block item placement is refusedkacpherek
  68. PR #1979Check a server player's moves with the box of its posekacpherek
  69. PR #1978Count the death roll in ticks so the dead camera eases instead of shakingkacpherek
  70. PR #1976Tick End gateways' server copies on a server without a windowkacpherek
  71. PR #1975Drop a pending server trip when its player is teleported within the levelkacpherek
  72. PR #1974Vehicle storage menus edit the vehicle's own itemskacpherek
  73. PR #1973Save furnace, brewing stand and crafter edits made through a server menukacpherek
  74. PR #1972Shulker bullets home on the guest the shulker targetskacpherek
  75. PR #1971Firework explosions hurt nearby players, not only the boosted onekacpherek
  76. PR #1970Mark a server's player dead while its arrival in a level is loadingkacpherek
  77. Issue #1962Wrong player animation at boatludovic111
  78. Issue #1956Water does not carry itemsludovic111
  79. Issue #1942peaceful doesn't do anythingludovic111
  80. PR #1932Chat: the Chat option hides what it says it hidesChat settings and team prefixeslevzzz5154
  81. PR #1909Migrate player integration coverage to server-thread hostingrdbtCVS
  82. Issue #1899Collision hitbox wrong when swimming upwardsludovic111
  83. Issue #1898Particles for critical hits missingludovic111
  84. PR #1896Items thrown out of the creative inventory drop on servers and the server threadludovic111
  85. Issue #1881Death Screen Tilt Glitch (macOS)ludovic111
  86. PR #1863Horizon shader packs: the sky stage runs in the gameHorizon's own shader format and kitludovic111
  87. PR #1855Registry: shader packs are checked by the game's own shader check, and openHorizon's own shader format and kitludovic111
  88. PR #1837cargo horizon-mod test: scripts for server modsTools for people who make modsludovic111
  89. PR #1833Mod API 0.3 (experimental): server mods' contract, runtime and SDKMods that run on the serverludovic111
  90. PR #1812Trapped chests give their signal, barrels show they're openludovic111
  91. PR #1809A server's client shows the nether portal effectludovic111
  92. PR #1765Lithostitched's processors as the game's own types; replace the old Lithostitched conversionModpacks' world generation, nativelyludovic111
  93. Issue #1526[server-thread] End gateways stop working after their first userdbtCVS
  94. Issue #1523[server-thread] Teleporting away during dimension arrival blocks later portal travelrdbtCVS
  95. Issue #1500[singleplayer] Vehicle storage loses deposits and duplicates withdrawalsrdbtCVS
  96. Issue #1497[server-thread] Block-container edits roll back on reload, losing or duplicating itemsrdbtCVS
  97. Issue #1493[server-thread] Shulker bullets fail to home on the playerrdbtCVS
  98. Issue #1490[server-thread] Warden sonic booms have no visible waverdbtCVS
  99. Issue #1477[both singleplayer modes] Nearby firework explosions hurt mobs but not the playerrdbtCVS
  100. Issue #1328[server-thread] Respawn request is lost after dying during portal arrivalrdbtCVS

Every release with what it changed, grouped by roadmap item in Technical, and a summary of each week. Also as journal.json.

Merged, in the next release

  • Site: downloads and 1-5 star ratings on /mods
  • Reset boss overlay on server reconfiguration
  • Container clicks: a closed screen drops its press state
  • Roadmap: finished help-wanted items link the pull requests that did them
  • Shaders: the frame uniforms keep their buffer between frames
  • Subtitles: measure each line once per frame
  • Mod registry: 1-5 star ratings, one per GitHub account
  • Signs: cut the first line on byte offsets, not through a char copy
  • Item cooldowns: tick them on the server client's path too
  • Mob models: one Poses per mob per frame, not one per equipment layer
  • Performance preset: keep animated textures on
  • The ender dragon's hits and breath name it in the death message
  • Mob models: one skip lookup per part, not one per polygon
  • A villager's new profession rolls its trades
  • Frames: one scan for breaking progress, and no name formatting per crack
  • Worldgen data loads its three biggest parts in parallel
  • Tooltips: compare the hidden component id without a UTF-16 copy
  • Localization: server screens and the new world name follow the language
  • Font: menus keep their run-time glyphs when the renderer rebuilds its atlas
  • Fix recipe book overlays surviving inventory changes
  • Chat: a LAN guest's line follows the host's Chat option
  • Fix hostile mob removal in Peaceful difficulty
  • Fix walking arm animation while riding boats
  • Fix warden sonic boom waves for connected players
  • Bats flap their wings on server clients
  • Benchmark: wait for the post-teleport load before measuring
  • Show critical-hit particles on server clients
  • World text parity: same-frame glyph uploads, display lines, name-tag colours
  • Stop endermen teleporting nonstop in the End
  • Multiplayer: no break particles or sound when a player puts out fire
  • F3: measure each line once per frame
  • Name tags: collect the ridden mobs once, not per tag
  • Prepare: the CLI finds Minecraft 26.3 in ATLauncher and the CurseForge app
  • Horizon shader packs: the material stage runs in the game

Other changes

  • Site: downloads and 1-5 star ratings on /mods #2170
  • Reset boss overlay on server reconfiguration #2061
  • Container clicks: a closed screen drops its press state #2052
  • Roadmap: finished help-wanted items link the pull requests that did them #2044
  • Shaders: the frame uniforms keep their buffer between frames #2041
  • Subtitles: measure each line once per frame #2029
  • Mod registry: 1-5 star ratings, one per GitHub account #2167
  • Signs: cut the first line on byte offsets, not through a char copy #2027
  • Item cooldowns: tick them on the server client's path too #2024
  • Mob models: one Poses per mob per frame, not one per equipment layer #2012
  • Performance preset: keep animated textures on #2081
  • The ender dragon's hits and breath name it in the death message #2079
  • Mob models: one skip lookup per part, not one per polygon #2010
  • A villager's new profession rolls its trades #2009
  • Frames: one scan for breaking progress, and no name formatting per crack #1993
  • Worldgen data loads its three biggest parts in parallel #2108
  • Tooltips: compare the hidden component id without a UTF-16 copy #2042
  • Localization: server screens and the new world name follow the language #2118
  • Font: menus keep their run-time glyphs when the renderer rebuilds its atlas #2117
  • Fix recipe book overlays surviving inventory changes #2053
  • Chat: a LAN guest's line follows the host's Chat option #2020
  • Fix hostile mob removal in Peaceful difficulty #2018
  • Fix walking arm animation while riding boats #2007
  • Fix warden sonic boom waves for connected players #2048
  • Bats flap their wings on server clients #2003
  • Benchmark: wait for the post-teleport load before measuring #1992
  • Show critical-hit particles on server clients #1999
  • World text parity: same-frame glyph uploads, display lines, name-tag colours #1987
  • Stop endermen teleporting nonstop in the End #2085
  • Multiplayer: no break particles or sound when a player puts out fire #2082
  • F3: measure each line once per frame #2031
  • Name tags: collect the ridden mobs once, not per tag #2011
  • Prepare: the CLI finds Minecraft 26.3 in ATLauncher and the CurseForge app #1986
  • Horizon shader packs: the material stage runs in the game #2122

Horizon 0.2.70: launcher, registry, Horizon shader packs and 17 more changes

Horizon's own shader format and kitModpacks' world generation, natively

  • Horizon shader packs: the sky stage runs in the game
  • Registry: shader packs are checked by the game's own shader check, and open
  • launcher: a Shader packs tab that installs Horizon's own shader packs

And 18 fixes.

Horizon's own shader format and kit

  • Horizon shader packs: the sky stage runs in the game #1863
  • Registry: shader packs are checked by the game's own shader check, and open #1855

Modpacks' world generation, natively

  • Lithostitched's processors as the game's own types; replace the old Lithostitched conversion #1765

Other changes

  • launcher: a Shader packs tab that installs Horizon's own shader packs #2036
  • Server chunk packets decode on their own thread, not in the frame #2057
  • Minimap moved to the mod browser: remove the built-in minimap #2063
  • Mark a server's player dead while its arrival in a level is loading #1970 #1328
  • Make water currents carry dropped items #1984 #1956
  • Shulker bullets home on the guest the shulker targets #1972 #1493
  • Save furnace, brewing stand and crafter edits made through a server menu #1973 #1497
  • Vehicle storage menus edit the vehicle's own items #1974 #1500
  • Tick End gateways' server copies on a server without a window #1976 #1526
  • Count the death roll in ticks so the dead camera eases instead of shaking #1978 #1881
  • Check a server player's moves with the box of its pose #1979 #1899
  • Play no place sound when a block item placement is refused #1980
  • Migrate player integration coverage to server-thread hosting #1909
  • Firework explosions hurt nearby players, not only the boosted one #1971 #1477
  • Drop a pending server trip when its player is teleported within the level #1975 #1523
  • Mod API levels: refuse a mod made for a newer Horizon, list each version's level #2080
  • Launcher: don't install a mod version the game can't run #2098
  • Teleports free their dropped columns off the frame and in batches #2090

Horizon launcher 0.2.11

Horizon's own shader format and kitModpacks' world generation, natively

  • Registry: shader packs are checked by the game's own shader check, and open
  • launcher: a Shader packs tab that installs Horizon's own shader packs

And 3 fixes.

Horizon's own shader format and kit

  • Registry: shader packs are checked by the game's own shader check, and open #1855

Modpacks' world generation, natively

  • Lithostitched's processors as the game's own types; replace the old Lithostitched conversion #1765

Other changes

  • launcher: a Shader packs tab that installs Horizon's own shader packs #2036
  • Mod API levels: refuse a mod made for a newer Horizon, list each version's level #2080
  • Launcher: don't install a mod version the game can't run #2098

Horizon 0.2.69: Options > Horizon Settings > Shader Packs and 5 more changes

  • F3 shows the shader pack's GPU time per pass, for either kind of pack
  • Options > Horizon Settings > Shader Packs: pick a pack of either kind

And 4 fixes.

Other changes

  • F3 shows the shader pack's GPU time per pass, for either kind of pack #2026
  • Options > Horizon Settings > Shader Packs: pick a pack of either kind #2028
  • Items thrown out of the creative inventory drop on servers and the server thread #1896
  • A server's client shows the nether portal effect #1809
  • Trapped chests give their signal, barrels show they're open #1812
  • Zoom moved to the mod browser: remove the built-in zoom #2030

Horizon 0.2.68: cargo horizon-mod test, Horizon shader packs and 3 more changes

Horizon's own shader format and kitTools for people who make mods

  • Horizon shader packs: the post stage runs in the game, with hot reload
  • cargo horizon-mod test: run a mod's test scripts with no game

And 3 fixes.

Horizon's own shader format and kit

  • Horizon shader packs: the post stage runs in the game, with hot reload #1861

Tools for people who make mods

  • cargo horizon-mod test: run a mod's test scripts with no game #1816

Other changes

  • horizon-ctl options-set keeps the mod list #2032
  • Extras: the FPS counter and keystrokes move to the mod browser #1995
  • Mob fluid and supporting-block scans skip sections that can't hold a match #2033

Horizon launcher 0.2.10

Tools for people who make mods

  • cargo horizon-mod test: run a mod's test scripts with no game

And 4 fixes.

Tools for people who make mods

  • cargo horizon-mod test: run a mod's test scripts with no game #1816

Other changes

  • Reduce filesystem work in launcher resource preparation #1960
  • Launcher: keep prepared resources while the preparer's OUTPUT_VERSION is the same #1946
  • Launcher: precompile resource exporters and share exporter JVMs #1965
  • Prepare: a version file rewritten by another launcher no longer stops the CLI #1869 #1772

Horizon 0.2.67: Server dialogs and 43 more changes

Server dialogs and login screensPlaying on servers: everything shows as it shouldSteady frames at long render distancesFaster block lookupsPre-generate an area with /pregenAndroid, iOS and the browserWayland and Hyprland polishEnd city banners keep their patternEnchanted loot in End citiesCtrl+Backspace and scroll bars in menusChickens flap while they fallA pointing hand over buttonsChat settings and team prefixesCooldowns drawn on items

  • Server dialogs: the dialog screen, its buttons and their actions
  • Server dialogs: text and boolean inputs (AuthMe's register and login work)

And 43 fixes.

Server dialogs and login screens

  • Server dialogs: the dialog screen, its buttons and their actions #1734
  • Server dialogs: text and boolean inputs (AuthMe's register and login work) #1735

Playing on servers: everything shows as it should

  • Sync mobs' aggressive and item-use flags so clients pose them right #1798
  • Server clients: primed TNT falls and burns its fuse by itself between updates #1710

Steady frames at long render distances

  • Worker threads: leave one core, as vanilla does, not two #1778

Faster block lookups

  • PalettedContainer: look up a word's filled bits, not divide for them #1794

Pre-generate an area with /pregen

  • Add /pregen: generate, light and save an area ahead of players #1805

Android, iOS and the browser

  • fix(threads): lower helper thread priority on Android #1937 #1751

Wayland and Hyprland polish

  • Preserve selected GUI scale across temporary small surfaces #1941 #1866

End city banners keep their pattern

  • End city banners keep their template patterns #1928 #1438

Enchanted loot in End cities

Ctrl+Backspace and scroll bars in menus

  • Game Rules and Statistics: the scroll bars can be dragged #1931 #1782

Chickens flap while they fall

  • Chickens flap while they fall on a client of a server #1892 #1706

A pointing hand over buttons

  • Menu buttons show the pointing hand under the mouse #1897 #1347

Chat settings and team prefixes

  • Chat: the Chat option hides what it says it hides #1932 #1376

Cooldowns drawn on items

  • Item cooldowns: the sweep on a slot, and no use while one runs #1933 #1763

Other changes

  • Endermen, endermites, blazes, eyes of ender, dried ghasts and end portals make their ambient effects #1853
  • horizon-prepare: OUTPUT_VERSION, the number of what it prepares, checked by CI #1947
  • Global level events reach a server's players; explosions play their packet's sound #1829
  • Clear off-hand items in vanilla inventory slot order #1903
  • Copper golem statues change pose when right-clicked #1883
  • Hearts blink white again when you get hurt (a robot noticed) #1919
  • Fix repeated mining sounds and replanted blocks breaking #1922 #1880
  • Fix lead drops when leashed mobs die #1954 #1949
  • Play anvil result sounds once for every player #1945 #1907
  • Particles keep their sprites over a resource reload #1943 #1923
  • Mods ui: recapture the mouse when a mod's screen vanishes, borrow its widgets #1914
  • Enchantments: the name and the level follow the selected language #1926
  • Show custom item names above targeted item frames #1958 #1951
  • Reduce filesystem work in launcher resource preparation #1960
  • Fix Windows resource pack cache recovery #1799 #1649
  • Launcher: precompile resource exporters and share exporter JVMs #1965
  • Stronghold rings: first chunks no longer wait for them #2005
  • Sculk: pass over idle sensors and catalysts in the block entity tick #2004
  • Behaviour cache: hash the source files once per process #2006
  • Player heads render their owner's skin #1934
  • Prepare: a version file rewritten by another launcher no longer stops the CLI #1869 #1772
  • Water cauldrons put out a burning player and lose a level #1918 #1330
  • Server menus keep their styled titles #1741
  • Collision scans: skip the outer cells of sections no block reaches out of #1977
  • Big dripleaves tilt under a player standing on them #1915 #1683
  • Advance remote fireballs between server tracker updates #1904
  • Emit sculk movement events for each server player #1905
  • Render mannequin entities (server NPCs) #1967
  • Migrate game parity fixtures to the server thread #1955

Horizon launcher 0.2.9

Screens, input and drawing for mods

5 fixes.

Screens, input and drawing for mods

  • Mod API: capability ui — mod-owned screens and settings pages #1864

Other changes

  • Launcher: find Minecraft in a Modrinth App Fabric or Quilt profile #1868 #1783
  • Launcher: a preparation that reuses imported game files still copies the sounds and panorama #1867 #1772 #1773
  • Launcher: repair silent, grey-title prepared versions without preparing again #1870
  • horizon-prepare: OUTPUT_VERSION, the number of what it prepares, checked by CI #1947

Single player becomes a server, servers send their packs

Single player now runs on its own server thread, as vanilla does, and a run of fixes made shields, tridents, elytra, maps, fishing, signs and books work there and for every server player. Servers can send you their resource packs, the launcher got its blocky new look, and the first pieces of Horizon's mod registry landed. Shader packs were taken out, to come back written from scratch.

The server thread became the default (#1514), after guests and server-thread players reached parity: totems (#1463), death drops (#1464), signs and books (#1465, #1466), shields, tridents, crossbows and spyglasses (#1476), elytra (#1475), maps (#1510), fishing (#1509), wind charges (#1508), strikes and mob effects (#1512), the cursor stack on close (#1513). Server resource packs: the dedicated server offers them (#1562) and the client downloads, asks and applies them (#1569, #1570). Mod registry: index schema 1 and .hpack (#1634), cargo horizon-mod check (#1642), the submission service (#1659). Shader packs were removed (#1561) and the clean-room rewrite started from the format's documentation (#1584 onward). Releases now ship in batches of five pull requests, or six hours after the oldest (#1554).

Horizon 0.2.66: Fix/client mods server thread, client, multiplayer and 2 more fixes

Android, iOS and the browserPlaying on servers: everything shows as it should

5 fixes.

Android, iOS and the browser

  • build: make horizon-dualsense compile on iOS #1813

Playing on servers: everything shows as it should

  • Multiplayer: keep firework flight duration, boost gliding players #1671 #1663

Other changes

  • Lava cauldrons burn the player inside them #1834 #1320
  • Client: show item lore in tooltips with styled components #1857
  • Fix/client mods server thread #1875

Horizon 0.2.65: OpenGL 3.3, furnace, server, localization and 1 more fix

Play in your languageOpenGL for old computers

5 fixes.

Play in your language

  • Localization: item names, container titles and server text follow the language #1806 #1774

OpenGL for old computers

  • OpenGL 3.3: no indirect buffer without indirect draws #1936

Other changes

  • Legacy § codes render in name tags and styled labels #1879
  • Server: death messages come from the player's own combat record #1858 #1825
  • Furnace: pay the experience a smelt earned #1856 #1732

Horizon 0.2.64: Creative, fix, openGL and 2 more fixes

OpenGL for old computersCtrl+Backspace and scroll bars in menus

6 fixes.

OpenGL for old computers

  • OpenGL: sprite arrays GL can bind, animated sprites without compute shaders #1920

Ctrl+Backspace and scroll bars in menus

  • Creative: Ctrl+Backspace deletes a word in the search #1884 #1764

Other changes

  • Peaceful zombie horses spawn without their zombie rider #1811 #1761
  • Wither roses give the player Wither #1823 #1319
  • Creative: a stack keeps its components when it crosses the wire #1874
  • fix: stop explosion-destroyed End crystals from exploding again #1850 #1533

Horizon 0.2.63: OpenGL and 2 more changes

Shipped: OpenGL for old computers

OpenGL for old computersScreens, input and drawing for mods

  • OpenGL: Horizon starts on GPUs with no Vulkan or DirectX 12 driver

And 2 fixes.

OpenGL for old computers

  • OpenGL: Horizon starts on GPUs with no Vulkan or DirectX 12 driver #1917

Screens, input and drawing for mods

  • Mod API: capability ui — mod-owned screens and settings pages #1864

Other changes

  • Fix DirectX 12 fallback after Vulkan surface creation fails #1891

Horizon 0.2.61: Make hardcore players spectators when they respawn and 4 more fixes

Playing on servers: everything shows as it shouldChat settings and team prefixes

5 fixes.

Playing on servers: everything shows as it should

  • Server clients see mobs' aggression and arm swings #1802

Chat settings and team prefixes

  • Use the team-formatted player name in chat #1841 #1378

Other changes

  • Flint and steel lights nether portals only in the Overworld and the Nether #1807
  • Read saved attribute bases for every mob #1836 #1483
  • Make hardcore players spectators when they respawn #1843 #1504

Horizon 0.2.60: A tool that changes a block ends the click on a server's client and 4 more fixes

Single player as a server: the last differences

5 fixes.

Single player as a server: the last differences

  • Potions keep their potion across the connection #1796
  • A tool that changes a block ends the click on a server's client #1797 #1266 #1289

Other changes

  • Close container menus when the player moves out of reach #1827 #1334
  • Close crafting tables that are removed or out of reach #1828 #1335
  • Update comparators when a guest changes a chest through its menu #1831 #1503

Horizon 0.2.59: Surface and 4 more fixes

5 fixes.

Other changes

  • Fix entities staying seated after their boat is destroyed #1781
  • Packs: open streamed archives the way Java's ZipFile does #1692
  • Draw translucent particles after translucent terrain #1691 #1679
  • Keep scheduled ticks when a chunk unloads or post-processes before the next tick #1803
  • Surface: specialise the material rule per height band #1804

Horizon 0.2.58: Discord Rich Presence, multiplayer, client and 2 more changes

Discord Rich PresencePlaying on servers: everything shows as it should

  • Discord Rich Presence: Playing Horizon on the player's Discord profile, with a switch

And 4 fixes.

Discord Rich Presence

  • Discord Rich Presence: Playing Horizon on the player's Discord profile, with a switch #1788

Playing on servers: everything shows as it should

  • Fix ghost items in the inventory grid after closing a remote menu #1795
  • Client: remote players keep their skins instead of falling back #1652 #1644
  • Multiplayer: answer cookie requests, store cookies, follow transfer packets #1650 #1643

Other changes

  • Fix sprint FOV getting stuck after releasing Ctrl #1779

Horizon launcher 0.2.8

Horizon's mod registry

  • Launcher: install from Horizon's registry, enable and disable, takedowns
  • Launcher Mods page: Horizon's registry beside Modrinth
  • Launcher: Horizon modpacks from the registry, each its own profile

And 2 fixes.

Horizon's mod registry

  • Launcher: install from Horizon's registry, enable and disable, takedowns #1637
  • Launcher Mods page: Horizon's registry beside Modrinth #1638
  • Launcher: Horizon modpacks from the registry, each its own profile #1640

Other changes

  • Cleanup: one predicate property helper, a Windows-only allow, tolerant locks in the bots #1695
  • Launcher: pin the macOS title bar to the chosen appearance #1793

Horizon 0.2.57: Discord Rich Presence and 9 more changes

Discord Rich Presence

  • Discord Rich Presence: the IPC client and its thread

And 9 fixes.

Discord Rich Presence

  • Discord Rich Presence: the IPC client and its thread #1787

Other changes

  • Options: Horizon's own captions read a bundled language namespace #1682
  • Title: the main menu labels follow the game language #1673
  • Cleanup: one predicate property helper, a Windows-only allow, tolerant locks in the bots #1695
  • /tp: keep the pitch for mobs #1675 #1603
  • horizon-ctl screenshot: paths with spaces #1676 #1604
  • Fireballs from NBT fly: /summon, chunk loads, selectors and /data get #1685 #1605
  • Creative inventory: highlight hovered hotbar slots #1687 #1341
  • Slow Falling clears the fall distance so landing does not hurt #1689 #1322
  • Fix End crystal attacks from connected clients #1752 #1532

Horizon 0.2.56: Save, packs, clippy, client mods, multiplayer and 2 more fixes

A leaner codebase that builds faster

7 fixes.

A leaner codebase that builds faster

  • Clippy: clear the two warnings the whole tree fails on #1707

Other changes

  • Make execution roles explicit #1666
  • Client: boss overlay — BossEvent bars, wither darkening, world fog #1590
  • Multiplayer: drop the player name from the join loading line #1681
  • Client mods: tick, commands and chat on the server thread #1674 #1602
  • Packs: an untouched vanilla directory is mirrored on Windows too #1693 #1688
  • Save: the write paths report a failure instead of dropping it #1694

Horizon launcher 0.2.7

2 fixes.

Other changes

  • Launcher: use one compatible JDK for resource preparation #1730
  • Launcher: a version removal retries a locked file and leaves the UI thread #1686

Horizon 0.2.54: Client, trading, /tp

5 fixes.

Other changes

  • /tp: dismount players before teleporting #1733 #1473
  • Trading: keep Hero of the Village discounts for server players #1739 #1365
  • Client: honor server stop-sound event and source filters #1729
  • Client: model text-display metadata against the Java wire codec #1718
  • Client: render server text displays and lobby labels #1725

Horizon 0.2.53: Server thread and 3 more fixes

5 fixes.

Other changes

  • Advancements: show a server's custom titles and descriptions #1632
  • Multiplayer: read every item data component, so a server's inventory, recipe book and advancements load #1631
  • Multiplayer: show armour trims on items from a server #1633
  • Fix invisible shulker bullets on server clients #1727 #1494
  • Server thread: remove forgotten recipes from the client's book #1728 #1495

Horizon 0.2.51: Connect to a server's IPv4 address first, as vanilla does and 4 more fixes

5 fixes.

Other changes

  • Multiplayer: switching servers on a Velocity network no longer kicks the client #1678
  • A client's own fall no longer shakes the screen: the server's hurt starts the tilt #1648
  • Server clients: dropped items and falling blocks fall by themselves between updates #1690 #1568
  • Renderer: leave out solid quads facing away from the eye (clean-room) #1641
  • Connect to a server's IPv4 address first, as vanilla does #1630

Horizon 0.2.50: Remove unused saved-chunk section loader and 4 more fixes

A leaner codebase that builds faster

5 fixes.

A leaner codebase that builds faster

  • Remove unused saved-chunk section loader #1658

Other changes

  • Fish: the window tracks the fluid contact of the mobs it only displays #1597 #1591
  • Player: the window stops ticking its player while the game is paused #1595 #1592
  • Let mobs ride boats, and make boats collide with and push entities #1580
  • Batch cached Perlin Y samples for portable SIMD #1606

Horizon launcher 0.2.5

5 fixes.

Other changes

  • macOS: the game shows as Horizon, with its icon, in the Dock and Cmd+Tab #1572
  • Resource Packs screen: draw each pack's own icon instead of cobblestone #1579
  • fix(launcher): fill window width and add native Windows title bar controls #1574
  • fix(launcher): virtualize long mod lists from the first frame #1576
  • fix(launcher): defer hardware probes and hide Windows consoles #1575

Horizon 0.2.48: Server resource packs, resource Packs screen and 2 more changes

Shipped: Server resource packs

Server resource packs

  • Server resource packs: the client's pack manager and downloads
  • Server resource packs: prompt, Server Resource Packs setting, apply and remove

And 3 fixes.

Server resource packs

  • Server resource packs: the client's pack manager and downloads #1569
  • Server resource packs: prompt, Server Resource Packs setting, apply and remove #1570

Other changes

  • Baby villagers wear their biome's clothes again #1566
  • Commands: a placed block keeps its block entity when a neighbour update changes its state #1573 #1506
  • Resource Packs screen: draw each pack's own icon instead of cobblestone #1579

Horizon 0.2.47: Dedicated server and 4 more changes

Server resource packsShader packs, written again from scratch

  • Dedicated server: offer server.properties' resource pack as vanilla does

And 4 fixes.

Server resource packs

  • Dedicated server: offer server.properties' resource pack as vanilla does #1562

Shader packs, written again from scratch

  • Remove shader packs #1561

Other changes

  • No default knockback from a hit inside the hurt cooldown #1547
  • Server-thread vehicle fixes: boats and minecarts in lava, boat collision, cart pushing, creative placing #1551
  • Villagers show their profession, biome and level on the server thread, LAN and servers #1565

Horizon launcher 0.2.4

Shader packs, written again from scratch

  • Programmer Art and High Contrast: prepare them from the asset index (Golden Days looked modern)
  • Launcher adds Programmer Art and High Contrast to older prepared resources (no Prepare again)

And 2 fixes.

Shader packs, written again from scratch

  • Remove shader packs #1561

Other changes

  • Programmer Art and High Contrast: prepare them from the asset index (Golden Days looked modern) #1538
  • Launcher adds Programmer Art and High Contrast to older prepared resources (no Prepare again) #1539
  • Launcher: Cmd+Q quits and Cmd+W closes the window on macOS #1557

Good first tasks

Each one is a small difference from vanilla, with an issue that says how to see it.

Each links its issue; the technical text says where in the code and in vanilla to start.

  1. 01Benchmark your computerRun Horizon's built-in benchmark and share the report: every new computer makes the performance work more accurate. No coding needed.horizon-launcher play --arg=--benchmark --arg=standard writes a JSON report; horizon-launcher data benchmark <report> shows what would be sent and uploads it (website/docs/performance.md). Results from three installs with the same hardware appear on the Benchmarks page. Example: #1711.#1711
  2. 02End city banners keep their patternBanners in End cities show as plain magenta instead of with their pattern.Compare the banner block entities the End city templates place with vanilla's (EndCityPieces, the templates' block entity NBT, BannerBlockEntity's patterns), in crates/horizon-world/src/worldgen/structure/. Issue #1438; possibly related: #526.#1438
  3. 03Enchanted loot in End citiesArmour and tools in End city chests should come enchanted, as in vanilla.loot.rs implements enchant_with_levels: find why the End city chest table's rolls come out bare, and compare them with vanilla's for a few seeds. Issues #1437, #1660.#1437

Ways to help

Tell us what differs

Something that doesn't play like vanilla is a bug. Say what you did, what happened and what vanilla does, with your Horizon version and system.

Report a bugSuggest something

Take a task

Pick a good first task or an open issue. On Discord, /claim 1234 tells everyone you are on issue 1234, so nobody starts the same work; /unclaim frees it.

Open issues

Bring your AI agent

On Discord, /agent connect gives your coding agent a personal token for Kira's MCP server: it reads the work board, claims tasks and posts its progress in your name.

Join the Discord

Benchmark your computer

Run the built-in benchmark and share the report: every new machine makes the performance work more accurate. No coding needed.

How to

Report a bug

One bug per report: something that breaks, or doesn't play like vanilla. It becomes an issue on GitHub, public, and you get its link to follow it. Search the open bugs first.

Report it on GitHub or in #horizon-bugs on Discord, where Kira turns your post into an issue.

Suggest something

An idea for Horizon, or about something on the roadmap. The maintainers read every one, and the good ones become roadmap items. Nothing you send here is published.

Post it in #horizon-ideas on Discord, or send it to Kira with /suggest.

The rules

  1. Vanilla is the specification. Wherever Minecraft 26.3 has the feature, Horizon does exactly what it does: read vanilla's code, then match it.
  2. Small pull requests, proven. One change each, under about 500 lines, with the block python3 tools/pr_ready.py prints: formatting, Clippy, tests and the harnesses your change can affect.
  3. Say who wrote it. If an AI agent wrote or posts it, the pull request says so, and commits keep its co-author line.
  4. Never commit Mojang's files. No game jars, assets, decompiled code or prepared resources, and nothing taken from other mods' code.

The contributing guideCONTRIBUTING.md

Contributors

Everyone with commits in Horizon. On Discord, /link-github <your login> credit:True adds your Discord name next to yours.

All contributors on GitHub

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