Skip to content
GT New HorizonsGTNH 2.9.0 · Community server

GT New Horizons · Getting started

Server Setup

A server is a way of running Minecraft that separates the game into two parts. The server simulates the world, while a client displays and handles input/output from each player and rendering the world. The two communicate constantly to create the game; a breakdown of this communication can cause lag. Running GTNH as a separate server is required for more than one player to access the same world, as BetterQuesting does not support LAN. A Minecraft license is not needed for the server, but each player connecting must have a valid Minecraft account. Servers also need to be online to authenticate joining players.

Pros/Cons

Servers enable multiplayer fun, can improve ticks per second (TPS) even in a single player (SP) world on the same machine, allow chunk-loaded areas to run 24/7 for passive resource production, and supports party progress in the Quest Book. There are also downsides to server play. Having machines running constantly can cause breakdowns if maintenance isn't automated or something unforeseen happens in-game. Servers are more complicated to set up than a SP instance of GTNH and require regular technical support (restarts, backups, updates, lag-busting, etc.) An improperly secured server can leave its host machine vulnerable to DDoS attacks, becoming a bitcoin farming bot, or accessed by 3rd parties. Renting a remote hosting service is safer, but usually carries a monthly fee. If self-hosting, a second computer is usually used to run just the server which has its own cost.

Versions

Servers can run either the Java8 or Java17+ build of GTNH. JRE 17+ is strongly recommended unless a hybrid server setup is being deployed. Players connecting to the server can run either Java8 or Java17+ with their own launcher; it doesn't have to match the server's, nor do all players need to use the same launcher/Java to play. The version of GTNH (e.g. 2.9.0) must match exactly between all clients and the server. If the server updates to a different version, all players will have to update as well to join again.

edit 

Lost?

Any of these computer terms drawing a blank? Not sure what the difference is between a JDK, JRE or Java SE?

Hardware and Specs

Any computer that can run Java8+ can, in theory, be used as a modded Minecraft server. Re-purposing an old machine as a server is a common choice with practical benefits. The most important specs for decent performance will be single thread CPU frequency (Minecraft does not take advantage of multi-core threading), sufficient RAM and lots of storage space. For residential remote hosts, internet connection upload speed will be the limiting factor as both upload and download are used equally for a server. The closer the client(s) and server are to each other, the lower the latency and generally the better the connection will be.

Recommended Minimum:

  • i3/i5 or better processor
  • 6GB of RAM +0.5GB per extra player (early game)
  • 6GB of RAM +1GB per extra player (UV+)
  • 20GB+ storage. Platter is feasible, SSD is preferred
  • 1 Thread at 2.5GHz Clock Speed, but can go up to 2 threads at 3.5 GHz Clock Speed.

CPUs

You can generally compare CPUs that are on the same architecture (e.g. 13th gen Intels are all largely comparable) but you can't compare across platforms (12th gen and 13th gen are different). This topic also gets even more complicated now that Intel is adopting a mixed architecture on their newer CPUs. The single-threaded benchmark results are good enough for most comparisons, paired with the understanding that more cores does not equal better performance for Minecraft.

Storage

Minimum storage needs depends on number of worlds, range of exploration and frequency of backups. Figure ~1-2GB for an early game world, more as other dimensions get explored, and another 1-2GB for the pack/server files. Each backup is going to be a similar size, so having too many of these will quickly balloon the storage requirements. A SSD is faster and will reduce load/save times for chunks and player inventories. Most of Minecraft runs in RAM and slower platter drives should still be usable if nothing better is available. The suggestions in Low End PCs can be used to help improve performance with lower end machines.

Connection Speed

Connection speeds are rated in Mb / Mbps, or megabits per second. This is not the same as MB, the more commonly known megabytes. One megabit is only 1/8th of a megabyte. Be aware of this when comparing server packages, especially with paid hosts. Companies advertise maximum upload/download rates under ideal conditions, rarely actual values which will vary based on local infrastructure and location. Utilities like https://fast.com/ can be used to check real download/upload speed. Click "Show more info" for upload.

3rd-Party Hosts

The following are some 3rd-party hosts that offer servers capable of running GTNH. These hosts are not affiliated with GTNH in any way, and you are by no means obligated to use their hosting, nor are they the only suitable choice for hosts. They are simply individuals or organizations that offer GTNH-specific hosting.

  • Reizor Hosting is run by a GTNH developer and offers Ryzen 9 9950X and 7950X3Ds to run your server on the highest-end hardware available. Your server is instantly set up running the latest version of GTNH with Java 25, and they offer an updater built into the panel to automatically carry over your server setup for upgrading to experimentals and dailies with a single click. DDoS protection, DDR5 memory, and Gen 5 NVMe SSDs are standard to keep your server running smoothly, and all of the staff have played through the pack to help you with any concerns you have, both in-game and out.
  • Wabbanode are modded Minecraft specialists that prioritize performance and stability, with significant quality of life features such as one-click modpack installs and upgrades, automated hourly backups for all customers out the box, and the ability to switch your server back-and-forth between different games and modpacks freely with instances. Powered by Ryzen 9 9950X/7950X and 99.99% up-time thanks to dedicated enterprise hardware partners, Wabbanode servers are kitted out to run all modpacks (including GT New Horizons) smoothly and flexibly, with a support team that knows modded Minecraft inside out. As low as $8.37/mo starting out, or a risk-free full 24 hour trial running on our recommended plan.

Server Files

While the single player pack is hosted on many launchers, a repository of all releases is maintained on the gtnewhorizons.com domain. Server packs should only be downloaded from there or links in #announcements on the official Discord.

There are two variations of the pack, both for the server and the client. ..._Server.zip is for Java 8, _Server_Java_17_20.zip is for Java 17+. Make sure to pick the .zip file that matches the Java version the server will be running, or it will fail.

Unless you have a reason not to, you should use the Java 17+ version as it has better garbage collection & performance on modern hardware. The only major reason not to use Java 17+ for a server is Thermos compatibility - and if you know what Thermos is, you know how to setup your own server more likely than not.

While Java 17 is the most widely tested with New Horizons, any Java build of 17 or later should suffice. Check if any versions of Java are already installed on your machine before downloading more. Oracle's closed source Java will also work with GTNH, if preferred.

Setup Guides

Option Difficulty Pros Cons Best For
Windows Self-Hosting


Open Guide

Intermediate
  • No cost if you already have hardware
  • Full control over server and files
  • Easy to run alongside your client for testing
  • Requires port forwarding (security risk if misconfigured) or configuring a mesh VPN / tunnel
  • Potentially exposes your home network to the internet
  • Dependent on your PC uptime and internet quality
  • Can impact performance while playing
Small groups, local testing, or users comfortable with basic networking
Linux Remote Hosting (VPS/Dedicated)


Open Guide

Intermediate
  • Good performance and stability
  • Full control (root access)
  • No home network exposure
  • Scales well with player count
  • Monthly cost
  • Requires Linux knowledge
  • Initial setup more complex than game hosts
Long-term servers, modded communities, users comfortable with Linux
Oracle Cloud (Free Tier)


Open Guide

Intermediate–Advanced
  • Free (within Always Free limits)
  • High performance for zero cost
  • Good networking and hardware
  • Complex setup (cloud networking, storage, SSH)
  • Capacity and account limitations
  • Risk of account termination if policies are violated
  • Requires careful management of resources
Users willing to trade complexity for a powerful free server
Containerized Hosting (Docker)


Open Guide

Intermediate-Advanced
  • Highly reproducible setups
  • Easy to migrate and redeploy
  • Clean separation of environment
  • Useful for automation and scaling
  • Requires Docker knowledge
  • Adds abstraction layer (harder to debug)
  • Not necessary for most users
Advanced users, developers, or automated deployments

Note: Linux Remote Hosting contains certain parts that are Hetzner-specific, but most steps apply to other VPS providers.

Choosing an Option

  • Beginner-friendly: Consider managed game hosting services (see 3rd-Party Hosts).
  • Intermediate: Linux VPS or Windows self-hosting are common choices depending on budget and experience.
  • Advanced / Free-tier optimization: Oracle Cloud or containerized setups.

Security Note (Self-Hosting)

If you choose to host from your own machine:

  • Opening ports on your router (port forwarding) can expose your network if configured incorrectly.
  • Only share your server IP with trusted players.
  • Consider using a tunneling or mesh VPN solution (e.g., Tailscale) instead of port forwarding for small, private servers.
  • Always keep backups of your world on a separate device.

Server Update

Below are a list of numbered steps to help server owners easily update their servers to different GTNH versions:

  1. Choose and Download a new server version of GTNH
  • Use the Version History page to find a specific version
  • The type of release is stated in the version entry
  • It is recommended to stick to stable versions for stability when transferring the world file
  1. Backup your ENTIRE server folder

Caution! Caution: the folder /JourneyMapServer/ from config will be needed later, so extract it first before deleting the following folders

  1. Delete the following folders from your server folder:
  • config
  • libraries
  • mods
  • resources (if present)
  • scripts (if present)
  1. If you are using the Java 17+ version, then also remove these files from the main server folder:
  • java9args.txt
  • lwjgl3ify-forgePatches.jar
  • startserver-java9.bat
  • startserver-java9.sh
  1. Replace the deleted folders and files with the ones from the downloaded archive
  • Newer versions won't have /resources/ or /scripts/, this is normal
  1. Re-do any customized config settings in their respective files
  • Use your backup as a reference.
  • Do not just copy old /configs/ folders over! Move your changes as necessary or you may miss out on new functionality.
  1. Copy the JourneyMapServer folder from the backup
  • It can be found in /config/
  • This folder contains your world UUID inside a config file
  • If this file is lost, the server would generate a new map UUID and clients would lose their journeymap map data for your server
  1. If the updated version has had any block changes, Forge will report missing item mappings on first world load
  • A dedicated server needs ‑Dfml.queryResult=confirm or an interactive console to get past that prompt
Servers on newer Java versions (17+)

Java 17+ servers should be fully configured as downloaded. For additional instructions consult https://github.com/GTNewHorizons/lwjgl3ify#server

Whitelisting Players

In order to connect to the server yourself or allow other players to connect you must add them to the whitelist. To do this use the following command inside the server console window:

Syntax: whitelist add <playername>

Example: whitelist add shawnbyday

Server Backups

Server backups are enabled by default in ServerUtilities, but it can be further configured in the instance/serverutilities/serverutilities.cfg file. There, you can also adjust the time between backups and the number of backups kept. Make sure you have enough space for the world and all its backups! If you run out of space you could corrupt your world save.

Chunk Loading

To allow chunk loading on your server, the recommended option is to use ServerUtilities which is included in GTNH. To use the mod for that purpose you need to do the following:

  • Allow chunkclaiming and chunkloading in the your_instance/serverutilities/serverutilities.cfg configuration file by modifying the existing lines:
 world {
    B:chunk_claiming=true
    B:chunk_loading=true
}
  • If you would like to be able to adjust the number of chunks your players can claim then also enable ranks in the same file:
ranks {
    B:enabled=true
}
  • After modifying, save the file and chunkclaiming will be enabled by default for all players. To adjust chunk amount and all related permissions one can modify the config directly through the your_instance/serverutilities/server/ranks.txt file.
    • Alternatively, this can also be modified via the in-game admin panel for ServerUtilities. To do this as an operator, open your inventory and click the reddish gear icon to the left of the main inventory panel (should be next to the rest of the ServerUtilities icons if you are properly OPed). Then select "Edit Ranks" and modify as you see fit.

Discord Integration (MC Server-to-Discord Server Chat bot setup)

This example will use this mod as it is the only one that still works for 1.7 to my knowledge, Craft presence supposedly can do it but I have not seen a guide on it anywhere; so for now I just want to write this guide to have a coherent explanation of how this mod works somewhere on the web, as the Curseforge page/comments and Github-wiki for the mod are both confusing and outdated/insufficient.

First, you will want to make a discord server for your server specifically, you can invite the bot to a server that already exists as well.

Download the mod linked above (Discord Integration by MiraWaNeko), and install it in the mods folder of your server.

Launch your server and navigate to the "Chikachi" folder in your config file, if the folder does not generate double check you rebooted your server with the mod in the servers mods folder. This mod is Server-Side only so client installation is not necessary in any way.

Open discordintegration.json in your text editor of choice, and now comes the fun part.

Next you will create the bot to handle chat between MC/Discord.

To do this, Navigate to The discord Developer portal , and Sign in if you haven't already, then press the "New Application" button in the top right of the Applications page. Give it a name, and agree to the TOS/Developer policy; then press create and enter your password to confirm.

You can now set the PNG file for your Chat Bots PFP, as well as give it a description or tags. Or you can do that later, up to you.

Press the "Bot" tab on the left hand side of your created application, and enable all of the intents in the Privileged Gateway Intents section.

In the same Tab, press "reset token", and confirm it/enter your password.

Copy this token to a txt file somewhere like your desktop or documents folder, DO NOT SHARE IT WITH ANYONE.

You will paste this token into Line 3 of the DiscordIntegration.json file, mentioned earlier.

Next Either create the channel in your server you want the bot to send and receive chats, or use an existing channel. You will right click the channel and select Copy Channel ID in either case.

You will then paste this channel ID into lines 20 and 42 of the config file, the first in quotation marks followed by a colon and empty {} and the second in square brackets. It should look like this on line 20:[1]

 },
      "channels": {"1233456789": {}}

Now, copy the Client ID of the Discord Application (under OAuth2) and format it into this URL:

https://discordapp.com/oauth2/authorize?client_id=CLIENT_ID&scope=bot&permissions=3072

You can also change the permissions bit if you'd like, but 3072 (read channels, send messages) should suffice. Once you have formatted the URL, paste it into a browser and invite the bot to the Discord server which has the channel you want to sync to.

Once you have done all of this, run the command /discord config reload from the server console. You may need to reboot the server (there is a bug that doesn't restart the connection if the config fails to parse), but if every step was followed you should see Server Started/Server stopped as well as all in game public messages.

The default config for this mod will relay commands to the discord chat as well, if you do not want this to be visible Navigate to line 45 in the config and change relayCommands from true to false.

I do not know how to set up commands to be used in the Discord chat, such as !online or !stop, !ban, etc. But if anyone else knows or if I learn hopefully that can be added here.

FAQ (Frequently Asked Questions)

  1. How do I connect to my server?
    1. On the Multiplayer Game you need to add a server and the server address can be (note by default the server is set to use the default Minecraft port which is 25565):
      1. localhost
      2. 127.0.0.1
  2. How do I let my friends connect?
    1. You will need to find out what your external IP address is (you can find this using Google).
    2. You then need to setup port forwarding on your modem/router (this is outside the scope of this guide and requires special attention to detail for privacy and security reasons - again Google is your friend here).
    3. An alternative is to use a service like tailscale to connect your friends directly to the server over a "vpn" tunnel.
  1. What is the level_type variable in server properties?
    1. That is used to determine the type of World Generation and should always be set to level_type=RWG.