Fix No Derived Pack: horizon-derived.zip Guide

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.

~4 MB Ziphorizon-derived.zip generated from 26.3 server.jar
~525 MB Wi-FiClient assets fetched automatically inside app
0 PC OptionStarling v0.8.0 prepares 26.3 on-phone in 79s
Framework Laptop 13 internal mainboard representing local Rust and JDK 25 derived-pack generation
Why derived packs exist: vanilla Minecraft 26.3 builds block, biome, and packet registries by executing Mojang's server jar data generator rather than shipping static JSON.

Why this message appears & your two clean solutions

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.

Option A: No Computer Needed

Install Starling v0.8.0 (79-Second On-Phone Prep)

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.

Option B: Keep Rayan-XOO 0.4.7 & ViaHorizon

Build horizon-derived.zip Once on Windows, Linux, or macOS

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.

Step-by-step: generate & place horizon-derived.zip

Verified against Rayan-XOO/horizon branch android-port and upstream packaging/android/make_derived_pack.sh.

Generate the ~4 MB pack on your PC

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.

What happens on first Android launch

  • Initial boot: Launch dev.horizonlab.horizon once over Wi-Fi so it initializes its data directory.
  • Derived pack selection: Provide horizon-derived.zip (~4 MB) via the 0.4.5+ file picker or files/ path below.
  • In-app Wi-Fi sync: Allow the in-app downloader to fetch the remaining ~525 MB of vanilla sound and texture assets over Wi-Fi.
  • Storage headroom: Keep at least 2.5 GB of free storage and avoid switching apps until extraction finishes.
Transfer MethodExact 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 FolderEnable 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/.

Interactive Rayan-XOO & Starling path helper

Generate exact adb push commands, scoped-storage paths, and safe-mode.txt Vulkan recovery instructions for your phone GPU.

Verified Android paths & GPU profile
# 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)
Terminal & ADB commands
# 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.

Fixing crashes right after horizon-derived.zip loads

If the derived pack prompt disappears yet the game closes on startup or world entry, match your symptom below.

Vulkan Reset

safe-mode.txt Recovery

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.

Samsung Exynos GPUs

Upgrade to 0.4.6 or 0.4.7

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.

~2.2 GB RAM Ceiling

Tune 4 GB RAM Phones

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.

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.

horizon-derived.zip & Android setup FAQ

Answers on JDK 25, Android 14/15 scoped storage, and zero-PC alternatives.

Why can't horizonrust.wiki just host a pre-made horizon-derived.zip download?

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.

I put horizon-derived.zip in Download/, why did Rayan-XOO 0.4.4 still say No derived pack?

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.

cargo run -p horizon-prepare fails with UnsupportedClassVersionError on my PC. Why?

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.

Can I reuse Rayan-XOO's horizon-derived.zip inside Starling Client?

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.

Does horizon-derived.zip need to be rebuilt for every APK update?

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.

How do I push horizon-derived.zip from Windows Command Prompt?

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