8BitDo Ultimate 2C Wireless Controller
Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.
Seeing Horizon setup: No derived pack: put horizon-derived.zip in the app folder on Android? This prompt comes from Rayan-XOO/horizon (dev.horizonlab.horizon) when the ~4 MB generated 26.3 registry archive is missing. You can either build horizon-derived.zip once on a PC in three commands or switch to Starling v0.8.0, which generates those files on your phone without a computer.

Neither Horizon nor its Android forks redistribute Mojang's proprietary server.jar output. Pick the workflow that matches whether you have access to a desktop machine.
If you only have an Android phone or tablet, install starling-0.8.0-arm64-v8a.apk (or test-0.8.1-2 on Mali-G57 / PowerVR). On first boot, Starling fetches a temporary headless Java runtime, runs the 26.3 registry generator right on your phone in ~79 seconds while you fish in the pond mini-screen, and deletes Java afterward. No horizon-derived.zip transfer is needed.
If you specifically want Rayan-XOO/horizon (horizon-0.4.7.apk) for ViaHorizon (connecting to 1.20.2 through 26.2 servers) or prebuilt entity_culling.hnmod / orbital.hnmod mods, generate horizon-derived.zip (~4 MB) once on any PC with JDK 25 + Rust and select it on your phone.
Verified against Rayan-XOO/horizon branch android-port and upstream packaging/android/make_derived_pack.sh.
Install JDK 25 (required by Minecraft 26.3's server jar) and the Rust stable toolchain, download the vanilla 26.3 server.jar, and run:
git clone -b android-port https://github.com/Rayan-XOO/horizon.git
cd horizon
cargo run --release -p horizon-prepare -- --prepare --server-jar ~/Downloads/server.jar
bash packaging/android/make_derived_pack.sh
ls -lh target/android/horizon-derived.zip
Keep the archive named horizon-derived.zip; do not unzip its inner directories before copying it to your phone.
dev.horizonlab.horizon once over Wi-Fi so it initializes its data directory.horizon-derived.zip (~4 MB) via the 0.4.5+ file picker or files/ path below.| Transfer Method | Exact Target Path & Procedure |
|---|---|
Rayan-XOO 0.4.5 - 0.4.7 File Picker (Easiest) | Save horizon-derived.zip into /sdcard/Download/, open Horizon on your phone, and choose the file directly when the first-launch picker prompts you. |
Rayan-XOO 0.4.7 Root Storage Folder | Enable the optional root folder migration in 0.4.7 and place the archive at /storage/emulated/0/Horizon/horizon-derived.zip. |
Scoped Storage via USB Debugging (adb push) | Launch the app once so Android creates its private folder, then run: adb push target/android/horizon-derived.zip /sdcard/Android/data/dev.horizonlab.horizon/files/ |
| Android 13-15 On-Device Copy (No PC after build) | Open Android's built-in com.android.documentsui Files app (or ZArchiver with Shizuku) to copy horizon-derived.zip into Android/data/dev.horizonlab.horizon/files/. |
Generate exact adb push commands, scoped-storage paths, and safe-mode.txt Vulkan recovery instructions for your phone GPU.
# Verified Android Target Profile
Port & Package: dev.horizonlab.horizon (Rayan-XOO/horizon 0.4.7)
Active Folder: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/
Saves Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/saves/
Mods Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/mods/
Shaders Path: /storage/emulated/0/Android/data/dev.horizonlab.horizon/files/shaderpacks/
Mod Formats: .hnmod (prebuilt aarch64 cdylib) + .hmod
# Recommended GPU Settings
Renderer Mode: Vulkan + Fast Opaque Pass (ON)
Render Scale: 100% (or Auto shader profile in Starling)
Chunk Distance: 12-16 chunks (Adreno 650-830) / 8 chunks (Adreno 610)
# 1. On PC (JDK 25 + Rust): generate horizon-derived.zip once from 26.3 server.jar
git clone -b android-port https://github.com/Rayan-XOO/horizon.git
cd horizon
cargo run --release -p horizon-prepare -- --prepare --server-jar ~/Downloads/server.jar
bash packaging/android/make_derived_pack.sh
# 2. Push horizon-derived.zip (~4 MB) to phone after launching app once
adb push target/android/horizon-derived.zip /sdcard/Android/data/dev.horizonlab.horizon/files/
Fixes 'No derived pack: put horizon-derived.zip in the app folder'. Rayan-XOO downloads ~525 MB in-app over Wi-Fi, then merges your 4 MB derived pack.
If the derived pack prompt disappears yet the game closes on startup or world entry, match your symptom below.
Enabled an incompatible renderer flag and now get an instant black screen? Create an empty file named safe-mode.txt inside /sdcard/Android/data/dev.horizonlab.horizon/files/. In 0.4.6+, safe mode resets graphics cleanly while letting you re-select Vulkan afterward.
Galaxy S24 FE, A55, and A57 devices with AMD RDNA-based Xclipse 920/940 GPUs crashed on boot in 0.4.5 and earlier. Updating to horizon-0.4.7.apk (65,624,188 B) resolves both the Xclipse pipeline crash and the post-world-load crash.
Active Horizon worlds consume ~2.2 GB of RAM. On 4 GB phones, close background browsers/chat apps before launching and lower Render Distance to 4-6 chunks in Video Settings so Android's lmkd daemon does not terminate the process.
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.
Hall-effect sticks and triggers with low-latency 2.4G dongle and Bluetooth for desktop Horizon and Android phones.
Drift-free Hall sensors, swappable ABXY layout, and quiet face buttons tested across Windows, Linux, and Android.
Symmetrical dual-stick layout with X-Input, D-Input, and Android modes plus programmable rear hotbar paddles.
TMR electromagnetic sticks and 1000 Hz polling rate for high-refresh chunk exploration on desktop and mobile.
Affiliate disclosure: As an Amazon Associate, horizonrust.wiki earns from qualifying purchases at no added cost to you.
Answers on JDK 25, Android 14/15 scoped storage, and zero-PC alternatives.
horizon-derived.zip contains data extracted from Mojang's copyrighted Minecraft: Java Edition 26.3 server.jar. Distributing Mojang-derived game files violates copyright and upstream project rules; generating it locally from your own copy or letting Starling generate it on-device keeps your setup 100% legal.
Builds prior to 0.4.5 only scanned /sdcard/Android/data/dev.horizonlab.horizon/files/horizon-derived.zip. Update to horizon-0.4.7.apk (which includes the 0.4.5+ system file picker and 0.4.7 /storage/emulated/0/Horizon support) so you can select the zip from any folder.
Minecraft: Java Edition 26.3 compiled its server.jar for Java 25 (class file version 69.0). Install OpenJDK / Temurin 25 and confirm java -version reports 25 before running horizon-prepare.
You do not need to. Starling v0.8.0 manages its own asset and registry layout inside /storage/emulated/0/Starling automatically during its 79-second first-run setup.
Only when the target Minecraft protocol/version pinned by the fork changes. Across Rayan-XOO 0.4.4, 0.4.5, 0.4.6, and 0.4.7 (all targeting 26.3), your existing horizon-derived.zip continues working across APK updates.
Install Android Platform Tools, enable USB Debugging on your phone, launch Horizon once, and run: adb push C:\path\to\horizon-derived.zip /sdcard/Android/data/dev.horizonlab.horizon/files/horizon-derived.zip