# GTNH 2.3.0 Client Setup
Wow, a new stable version! Follow the guide below to get your client updated so you can play on the server.
If you're installing for the first time you can ignore the section about transferring your data.
Below you will find two sections for installs, one for Java 17 and one for Java 8. Pick which version you want to use, and then follow that section completely. Once done proceed to the section about moving your data over.
:::info
**Note:** I recommend using Prism Launcher as your launcher as it will automatically include the server in your server list, and in the case of the Java 17 version will ensure your configuration is correct.
:::
[ToC]
## Prism Launcher
I recommend using Prism Launcher as your modpack launcher. Prism Launcher will automatically add the server to your server list, as well as better facilitating the Java 17 version if you're using it.
You can download it here: https://prismlauncher.org/download/
## Java 17 (Experimental, but Potentially Faster!)
:::warning
Note that the links in this section are specifically for Java 17, if you previously had the Java 8 version you **need** to use the new ZIP.
:::
### Download 2.3.0 Client
I've prepared a custom client version for us in 2.3.0, this includes several changes from the default version distributed. These changes are...
- Replaced JourneyMap Fairplay with Ultimate
- Removed Fastcraft and replaced it with Archaicfix (open-source version produced by GTNH community)
- Added NotFine and Neodynium (performance improvements, open-source recommended by GTNH community)
- Added JustEnoughCalculations, a really neat (optional, clientside) mod for calculating crafting recipes
- Added FTB utilities
You can download the custom client for **Java 17** [here](https://cdn.discordapp.com/attachments/386753638795575296/1091803004858020024/GTNH_2.3.0_Java_17-19_CUSTOM_v1.zip). Simply add this zip to your launcher.
### Installing Java 17 (Virtually Mandatory)
:::warning
I really recommend using GraalVM here as the setup is very straight-forward and I have tested that it works with GTNH. If you want to use your own Java 17+ version your mileage may vary.
:::
I recommend using GraalVM Java, which is a version produced by Oracle which provides a decent amount of performance increase over regular Java.
1. Download GraalVM JRE from here: https://cdn.discordapp.com/attachments/386753638795575296/1189803857631527005/graalvm-ee-java17-windows-amd64-22.3.4.zip
2. Extract the archive to a location on your disk, like ``C:/graalvm-ee-java17-22.3.1/``
3. Edit your instance in your Prism Launcher. Go to settings, and set your java installation to point at ``bin/javaw.exe`` in the directory you extracted it to, like this: ``C:/graalvm-ee-java17-22.3.1/bin/javaw.exe``
4. Set your max memory equal to minimum memory, I use 8GB so min and max are both 8096MiB.
5. Set your java arguments to the ones provided below, be sure to change the last option (``XX:ConcGCThreads=6``) to be the number of **cores** you have - 2. I have a Ryzen 7 3700X with 8 cores, so I use 6 in the example below.
```
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+UseNUMA -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -Dgraal.CompilerConfiguration=enterprise --illegal-access=warn -Djava.security.manager=allow -Dfile.encoding=UTF-8 --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens java.base/java.net=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.text=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/jdk.internal.reflect=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens jdk.naming.dns/com.sun.jndi.dns=ALL-UNNAMED,java.naming --add-opens java.desktop/sun.awt.image=ALL-UNNAMED --add-modules jdk.dynalink --add-opens jdk.dynalink/jdk.dynalink.beans=ALL-UNNAMED --add-modules java.sql.rowset --add-opens java.sql.rowset/javax.sql.rowset.serial=ALL-UNNAMED -XX:ConcGCThreads=6
```
## Java 8 (Previous Standard)
:::warning
Note that the links in this section are specifically for Java 8
:::
### Download 2.3.0 Client
I've prepared a custom client version for us in 2.3.0, this includes several changes from the default version distributed. These changes are...
- Replaced JourneyMap Fairplay with Ultimate
- Removed Fastcraft and replaced it with Archaicfix (open-source version produced by GTNH community)
- Added NotFine and Neodynium (performance improvements, open-source recommended by GTNH community)
- Added JustEnoughCalculations, a really neat (optional, clientside) mod for calculating crafting recipes
- Added FTB utilities
You can download the custom client for **Java 8** [here](https://cdn.discordapp.com/attachments/386753638795575296/1084150581804945558/GT_New_Horizons_2.3.0_MultiMC_CUSTOM_v1.zip). Simply add this zip to your launcher.
### Making Your Client Faster (Optional, Recommended)
I recommend using GraalVM Java, which is a version produced by Oracle which provides a decent amount of performance increase over regular Java. **This is optional**, but if you want to use it follow the instructions below...
1. Download GraalVM JRE from here: https://oca.opensource.oracle.com/gds/GRAALVM_EE_JAVA8_21_3_5/graalvm-ee-java8-windows-amd64-21.3.5.zip
2. Extract the archive to a location on your disk, like ``C:/graalvm-ee-java8-21.3.5/``
3. Edit your instance in your Multi-MC. Go to settings, and set your java installation to point at ``bin/javaw.exe`` in the directory you extracted it to, like this: ``C:/graalvm-ee-java8-21.3.5/bin/javaw.exe``
4. Set your max memory equal to minimum memory, I use 8GB so min and max are both 8096MiB.
5. Set your java arguments to the ones provided below, be sure to change the last option (``XX:ConcGCThreads=6``) to be the number of **cores** you have - 2. I have a Ryzen 7 3700X with 8 cores, so I use 6 in the example below.
```
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:AllocatePrefetchStyle=1 -XX:ThreadPriorityPolicy=1 -XX:+UseNUMA -XX:+UseDynamicNumberOfGCThreads -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=350M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseFPUForSpilling -XX:+EnableJVMCI -XX:+UseJVMCICompiler -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -Dgraal.CompilerConfiguration=enterprise -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.OptDuplication=true -Dgraal.DetectInvertedLoopsAsCounted=true -Dgraal.LoopInversion=true -Dgraal.VectorizeHashes=true -Dgraal.EnterprisePartialUnroll=true -Dgraal.VectorizeSIMD=false -Dgraal.StripMineNonCountedLoops=true -Dgraal.SpeculativeGuardMovement=true -Dgraal.InfeasiblePathCorrelation=true -XX:ConcGCThreads=6
```
## Moving Your Client Data Over
:::info
Remember, this is applicable to both the Java 8 and Java 17 versions. Follow this if you're upgrading from Java 8 to Java 17! **If you're installing for the first time, you can ignore this section.**
:::
Open the folder for both your old instance and your new one. In Multi-MC you do this by right-clicking the instance and clicking ``Folder``.
Copy the following files and directories from your old instance to your new instance:
- ``.minecraft/journeymap/``
- ``.minecraft/TCNodeTracker/``
- ``.minecraft/visualprospecting/``
- ``.minecraft/options.txt``
- ``.minecraft/saves/``
- IF you had JustEnoughCalculation before: ``.minecraft/config/JustEnoughCalculation/``
## You're Done!
Congrats, you're all good to go. Hop on the server!
## Troubleshooting
### I don't see the server in my server list... What gives!
You probably didn't use Prism Launcher. That's fine, just add it to your list: ``gtnh.melonmesa.com``
### My map isn't right when I get on the server
Don't panic! We just need to move the folder where the map data is to the new one created for the server. First, disconnect from the server (don't need to close the game), then go into your new instance's folder and go to ``.minecraft/journeymap/data/mp/``. Note that there should be several folders, you need to replace the contents of the newly created folder for the GTNH MelonMesa Official server with the contents of your old folder. Once you do this reconnect to the server.
This likely looks like moving the contents of a folder with the previous server's name to a folder called ``MelonMesa~Official~GTNH``.