This is my backport of Distant Horizons to 1.7.10 - see the official Distant Horizons.
Staging repo for quick fixes to Distant Horizons and DH core until they land
upstream. It carries no code of its own: DH sits in dh/ as a git subtree, DH core sits in
dh/coreSubProjects/ as a second subtree — exactly where DH's own build expects its submodule —
and a thin Gradle wrapper drives that build so GTNH Actions can build it like any other repo.
Distant Horizons is a mod which implements a Level of Detail system to Minecraft.
This allows for far greater render distances without harming performance by gradually lowering the quality of distant terrain.
Below is a video demonstrating the system:
- Download the latest version from DistantHorizonsStandalone Releases and put it into the mods folder
Make sure the latest versions of each of the dependencies are installed:
Now supports shaders when used with Angelica 2.1.12 or higher. Tested with Complementary 5.7.1 with Euphoria patches 1.8.6 If it works with modern DH+Iris, but not with latest Angelica + DH, this should be reported as bug.
- Memory usage might creep up over time and crash the server
- Server side not fully stable, use with caution
- Sometimes LODs don't update properly, change rendering distance and then back to fix that (upstream issue)
Here detailed instructions how to get DH + latest Angelica working in GTNH 2.8.4 (you'll need to upgrade a few things) in Prism Launcher:
Download the following mods:
- Latest DH - tested with alpha18 - get
distanthorizons-alpha18.jar - Latest Angelica - tested with 2.1.16 - get
angelica-2.1.16.jar - Latest lwjgl3ify - tested with 3.0.15 - get
lwjgl3ify-3.0.15.jarandlwjgl3ify-3.0.15-multimc.zip - Latest GTNHLib - tested with 0.9.47 - get
gtnhlib-0.9.47.jar
From your mods folder delete
- angelica-1.0.0-beta66b.jar
- lwjgl3ify-2.1.16.jar
- gtnhlib-0.7.10.jar
Then add to your mods folder:
- distanthorizons-alpha18.jar
- angelica-2.1.16.jar
- lwjgl3ify-3.0.15.jar
- gtnhlib-0.9.47.jar
Then unzip lwjgl3ify-3.0.15-multimc.zip, copy the contents into your Prism Launcher instance. You know you copy into the right folder when you overwrite your mmc-pack.json.
gtnh-dh/
├── settings.gradle # includeBuild('dh'), pins -PmcVer=1.7.10
├── build.gradle # runs the DH build, copies jars to build/libs
├── .github/workflows/ # GTNH Actions
└── dh/ # subtree ← upstream DH
└── coreSubProjects/ # subtree ← upstream DH core
./gradlew build # jars land in build/libsOne commit touches exactly one area — the wrapper, dh/ (excluding core), or
dh/coreSubProjects/. Don't mix them - it makes generating patches for upstreaming easier.
Always sync DH first:
git subtree pull --squash --prefix=dh dh <branch>A DH update may also require a core update. A core update is never standalone: DH pins the compatible core commit, so first update DH and use the core SHA from that update.
If the DH update bumped its core submodule, the DH pull conflicts at dh/coreSubProjects
(their gitlink vs. our tree). Resolve it, then pull the pinned core commit:
git ls-files -u -- 'dh/coreSubProjects*' | awk '$3 == 3 { print $2 }' # note the new core SHA
git update-index --force-remove dh/coreSubProjects~* # drop their gitlink
rmdir dh/coreSubProjects~* # remove the empty conflict directory
git commit
git subtree pull --squash --prefix=dh/coreSubProjects dh-core <core sha>Never merge with githubs squash feature when you updated from upstream, this breaks the subtree merge!
The wrapper adds no code. dh/ and dh/coreSubProjects/ keep their upstream licenses (LGPL);
see the LICENSE* files inside those directories.
