GregTech: New Horizons Playthrough
GregTech: New Horizons (GTNH) is an expert-level Minecraft modpack, widely regarded as the most difficult in the game. With its immense tech progression and complex crafting chains, completing it can take years.
I have been playing GTNH since 2021. As of 2025-10-08, I have played for 3000 hours, and I would like to share my journey so far.
Since I began keeping notes in the IV Age, I’ll briefly summarize the earlier stages first.
The Beginning
Like most Minecraft survival worlds, the journey began in a humble dirt house.

GTNH started with three players: Tom, Sergio, and me.

Stone Age
In the Stone Age, our priority was farming food for survival. Below are our farms and berry trees.

Steam Age to MV Tier
We chose the Canyon biome for our base because of its unique view, lack of rain, high blast resistance, and—most importantly—absence of stone or cobblestone, which prevents the dreaded “drown creeper” (a creeper variant that spawns swarms of silverfish that hide in stone and multiply).

HV, EV
A history of innovation was forged inside this four-story TSMC building. Here, we celebrated milestones such as our first EBF, fully automated circuits, our first rocket to the moon, unlocking AE2 and more. To prepare for the next stage, the building is under renovation to overcome space limitations and integrate upgraded technology.

Left: Multiblock machines for benzene production
Right: Passive plastic circuit board automation, remnants of early AE2 setups

The AE Controller—our automation backbone—handles hundreds of channels.

Single-block machines for AE2 automation:

Large Chemical Reactors producing essential chemical ingredients:

IV Tier
From the IV tier onward, the difficulty ramps up sharply. This is the point where players must face the Platinum Processing Line—a notorious bottleneck where many quit. This tier also introduces numerous multiblock machines, requiring a fundamental overhaul of existing infrastructure.
Power Generation
Generators
Originally, the base was powered by cetane-boosted diesel, but crop production could not scale as easily as benzene. Currently, a Large Gas Turbine handles normal loads, while the LCE is switched on when extra power is needed.

Benzene Production
- 11×11 EnderIO Tree Farm
- Coke Oven → Fluid Extractor → 3× Distillation Towers
- Output: 1,200 L/s benzene (HSS-E Tight LGT burns 260 L/s)


Ore Processing
Upgraded to multiblock machines and fully automated with AE2, based on Ore Processing Concepts - GT New Horizons.

Platinum Line
An entire floor of the TSMC building is dedicated to Platinum Line processing.

Platinum & Separation

Palladium

Osmium

Iridium

Buildings
After watching a video on architecture, I decided to rebuild the “04” (The Fourth Industrial Center).
Concept
I drew inspiration from the Seagram Building—the “mother of all modern buildings” and a hallmark of the Less is More philosophy. It eliminates unnecessary decoration, highlighting the beauty of structure and materials.
Original “04”

New “04”

Seagram Building
P.S. The new “04” was built in Creative mode to push myself toward better design—otherwise, I’d remain a high-tech caveman.
Ref: 現代建築通識5:密斯封神,西格拉姆大廈。如果只能存在一棟現代建築,我相信只會是她。 | 大鳥俠BigBirdXia - YouTube
Hosting
After migrating to React2Shell, reconfiguring my services became a major chore, especially GregTech: New Horizons (GTNH). Manually managing Java versions, server packs, world backups, and whitelist/permission settings quickly became exhausting, particularly given how frequently the community updates the modpack.
To streamline this process, I decided to Dockerize the server. By using the itzg/minecraft-server image, I was able to consolidate the entire setup into a single docker-compose.yml file. Now, instead of going through a lengthy manual setup, I can deploy or update the server with a single command.
This Docker Compose configuration allows me to:
-
Download my world backup from the cloud on deployment and persist it across restarts
-
Automatically whitelist and grant OP permissions to myself
-
Run GTNH on port
25566forgtnh.donchong.top(I reserve25565for vanilla) -
Apply server utility configurations at deployment time, enabling chunk loading
-
Automatically confirm FML prompts when loading a world, which is required every time the pack is updated
services:
mc:
# make sure this java version matches with pack java version
image: itzg/minecraft-server:java25
tty: true
stdin_open: true
ports:
- "25566:25566"
environment:
WORLD: https://filedn.com/lvpQyX5dxsK7TR0Vaa6Pr1k/docker_use/gtnh_backups/gtnh_world_latest.zip
EULA: "TRUE"
TYPE: CUSTOM
GENERIC_PACKS: GT_New_Horizons_2.8.4_Server_Java_17-25
GENERIC_PACKS_SUFFIX: .zip
GENERIC_PACKS_PREFIX: https://downloads.gtnewhorizons.com/ServerPacks/
# if this isn't true, then the container tries to download the modpack every run
SKIP_GENERIC_PACK_UPDATE_CHECK: "true"
MEMORY: 6G
# Make sure that this matches what is in your pack's startserver bash file
JVM_OPTS: "-Dfml.readTimeout=180 -Dfml.queryResult=confirm @java9args.txt"
# You may choose to instead download a specific jar version yourself, and change this value to the local jar.
# Refer to https://docker-minecraft-server.readthedocs.io/en/latest/configuration/misc-options/#running-with-a-custom-server-jar
CUSTOM_SERVER: "https://github.com/GTNewHorizons/lwjgl3ify/releases/download/2.1.16/lwjgl3ify-2.1.16-forgePatches.jar"
# Set server.properties according to GTNH server defaults
MOTD: "GT:New Horizons 2.8.4"
DIFFICULTY: "hard"
ENABLE_COMMAND_BLOCK: "true"
SPAWN_PROTECTION: 1
VIEW_DISTANCE: 12
MODE: 0
LEVEL_TYPE: "rwg"
ALLOW_FLIGHT: "TRUE"
SERVER_PORT: 25566
LEVEL: "world"
WHITELIST: |
VVa1nut
OPS: |
VVa1nut
APPLY_EXTRA_FILES: |
serverutilities<https://filedn.com/lvpQyX5dxsK7TR0Vaa6Pr1k/docker_use/gtnh_backups/serverutilities.cfg
volumes:
# attach a managed volume, change to a relative or absolute host directory if needed
- ./data:/data




