Horizon .hmod / .hnmod Mods & Linux Server

Because Horizon compiles straight to machine code without a JVM, it replaces Java bytecode loaders with two native formats: .hmod content/resource bundles and .hnmod dynamic Rust libraries built against horizon-mod-sdk and horizon-native-abi. On the backend, horizon-server-linux-x86_64.tar.gz runs standalone 26.3 worlds with deterministic Rust memory usage.

Mod ABI 4aarch64 & x86_64 Rust cdylib plugins
54.2 MBhorizon-server-linux-x86_64.tar.gz binary
1.20.2-26.3Meridian proxy, Velocity & ViaHorizon bridges
Compact Intel NUC8 Linux node chassis suitable for low-power 24/7 Rust game server hosting
Without JVM heap warmup, a compact x86_64 Linux box boots horizon-server in seconds and pairs cleanly with Velocity or the Rust-based Meridian proxy.

.hmod vs .hnmod architecture & verified binaries

Understand which mod format belongs in your mods/ folder and why CPU architecture + ABI version matter for .hnmod files.

Portable Content Archive

.hmod (Cross-Platform Assets & Data)

.hmod archives package declarative definitions, textures, models, and data-driven tweaks without platform-specific machine code. A single .hmod file drops straight into desktop Horizon Launcher's mods/ directory, /storage/emulated/0/Starling/mods/, Rayan-XOO's files/mods/, or GoyDevv.

Compiled Rust cdylib

.hnmod (Native Rust Mod SDK)

.hnmod files are native shared libraries compiled against horizon-mod-sdk and horizon-native-abi (maintained upstream and mirrored hourly on arismoko/horizon). Desktop .hnmod builds target x86_64/arm64 OS ABIs with staged allocators (launcher@0.2.64+), whereas Android .hnmod files compile to aarch64-linux-android via cargo horizon-mod android or Starling's on-phone Options -> Mods -> Compile button.

Mod / AssetFormat & ABISizeSHA-256 PrefixCapabilities & Source
entity_culling.hnmodNative Rust .hnmod (ABI 4 aarch64)169,731 Bd64fb6fc3efdd924...Skips rendering entities occluded behind solid chunk geometry; published on Rayan-XOO/horizon android-v0.4.4.
orbital.hnmodNative Rust .hnmod (ABI 4 aarch64)36,907,341 B07ecf36ccca3266d...Adds custom items, gameplay mechanics, and /orbital give commands on Android.
hello_android-0.1.0.hnmodReference Android .hnmod sample172,951 Bd225cc97f0f5c41c...Minimal starter plugin from Rayan-XOO 0.3.8 demonstrating HUD/log hooks.
wrench (Upstream SDK)Source crate in arismoko/horizonCompiled locallyPinned to horizon-source.tar.gzReference block-rotation & interaction mod testing impl Game traits in launcher@0.2.66.
StarlingVisuals.zipShader / Visual Pack18,138 B7c677a33e86b69f6...Companion visual pack published on starling-client/starling v0.8.0.

Deploy horizon-server on Linux x86_64

Unlike desktop client archives, horizon-server-linux-x86_64.tar.gz (54,195,959 B) runs headless without Horizon Launcher.

Download, verify SHA-256 & launch

mkdir -p ~/horizon-server && cd ~/horizon-server
curl -fLO https://github.com/horizon-rust/horizon/releases/download/nightly/horizon-server-linux-x86_64.tar.gz
echo "f621e334c254d56bfeed16ed989500a36ef82a6a2e84ee6b861adcb774ced9b5  horizon-server-linux-x86_64.tar.gz" | sha256sum -c -
tar -xzf horizon-server-linux-x86_64.tar.gz
./horizon-server

Ensure your prepared 26.3 server registries are present in the working directory (generated via horizon-prepare --prepare --server-jar server.jar) and open TCP port 25565 on your firewall.

Proxies, ViaHorizon & Anticheat notes

  • Velocity & Meridian Proxies: Horizon servers sit cleanly behind Velocity or Akirabane/Meridian (a community Rust proxy tailored for Horizon clusters).
  • Connecting to 1.20.2 - 26.2 Networks: Desktop Horizon and Starling speak 26.3 natively. Mobile players joining older Paper/Velocity hubs without server-side ViaVersion can use Rayan-XOO/horizon 0.4.7, which embeds client-side ViaHorizon.
  • GrimAC Movement Checks: Tell mobile Starling players joining competitive servers to switch Joystick Mode from unconstrained analog to D-pad or Free Direction so movement packets pass strict 45-degree input validation.
  • Memory & View Distance: Start with 12-16 server view distance chunks on 4 GB VPS instances; Rust frees unloaded chunk arenas immediately back to the OS allocator.

Cross-compiling Android .hnmod plugins from Rust

Build your own native aarch64 mod for Rayan-XOO (Mod ABI 4) or Starling using the Android NDK.

# Build an Android .hnmod shared library with Android NDK r26+ installed
rustup target add aarch64-linux-android
cargo horizon-mod android --release

# Or copy your Rust mod crate folder to /storage/emulated/0/Starling/mods-src/
# and tap Options -> Mods -> Compile inside Starling v0.8.0 on an arm64 phone.

Gamepads for desktop and Android ports

Horizon desktop, Starling v0.8.0, and Rayan-XOO 0.3.7+ support Bluetooth and USB X-Input/D-Input controllers, automatically hiding touch buttons while you play.

8BitDo Ultimate 2C Wireless Controller

Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.

View on Amazon

GameSir Super Nova Hall-Effect Gamepad

Drift-free Hall sensors, swappable ABXY layout, and quiet face buttons tested across Windows, Linux, and Android.

View on Amazon

8BitDo Pro 2 Bluetooth Gamepad

Symmetrical dual-stick layout with X-Input, D-Input, and Android modes plus programmable rear hotbar paddles.

View on Amazon

GuliKit KK3 Max Wireless Controller

TMR electromagnetic sticks and 1000 Hz polling rate for high-refresh chunk exploration on desktop and mobile.

View on Amazon

Affiliate disclosure: As an Amazon Associate, horizonrust.wiki earns from qualifying purchases at no added cost to you.

Mods & dedicated server FAQ

ABI compatibility, vanilla cross-play, WSL2/ARM64 compilation, and shaderpacks.

Why did an older .hnmod stop loading after updating Rayan-XOO to 0.4.4+?

Native Rust dynamic libraries bind to a versioned C/Rust ABI table (horizon-native-abi). Rayan-XOO android-v0.4.4 bumped to Mod ABI 4, so mods compiled for 0.3.8 must be rebuilt against ABI 4 (like the 0.4.4 entity_culling.hnmod and orbital.hnmod builds).

Can I install OptiFine or Sodium .jar on Horizon?

No, and you do not need them. Horizon's entire renderer and chunk engine are already written in native Rust (+31% to +38% faster than Java + Sodium + Lithium on desktop), and Starling v0.8.0 translates Iris/OptiFine .zip shaderpacks natively without running Java OptiFine.

Does horizon-server-linux-x86_64.tar.gz allow vanilla Java Edition 26.3 clients to join?

Yes! Because horizon-rust/horizon validates wire protocol, chunk packets, and simulation ticks against vanilla 26.3 across 281 differential harnesses, standard Java Edition 26.3 clients and Horizon Rust clients can play together in the same world.

What is launcher@0.2.66's 'skip non-impl Game files' change for modders?

When scanning multi-file Rust mod crates during local testing, launcher@0.2.66 skips compiling test harnesses against helper modules that do not contain an impl Game block, cutting mod iteration times.

Is there a Windows or ARM64 standalone server binary?

Upstream nightly currently ships prebuilt standalone server binaries for Linux x86_64 (horizon-server-linux-x86_64.tar.gz). On Windows 11 (via WSL2) or ARM64 Linux (Ampere / Raspberry Pi 5), compile the server crate directly from source with cargo build --release -p horizon-server.

How do I use orbital.hnmod once copied into my Android mods folder?

Copy orbital.hnmod (36,907,341 B) into /sdcard/Android/data/dev.horizonlab.horizon/files/mods/, enable it in the mod list before launching a local singleplayer world, and run /orbital give in chat.