From d1eed9d2e040c9dbe26d541327040eea7e314525 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Tue, 3 Mar 2026 07:46:42 -0700 Subject: [PATCH 1/4] Update buildscripts to latest versions. --- gradle.properties | 26 +++++++++++++++++++++--- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 2 +- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7c738792..df5a2e77 100644 --- a/gradle.properties +++ b/gradle.properties @@ -39,14 +39,34 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co # `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE. developmentEnvironmentUserName = Developer -# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8. -# See https://github.com/bsideup/jabel for details on how this works. -enableModernJavaSyntax = true +# Enables modern Java syntax support. Valid values: +# - false: No modern syntax, Java 8 only +# - jabel: Jabel syntax-only support, compiles to J8 bytecode +# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs) +# - modern: Native modern Java bytecode, no downgrading +enableModernJavaSyntax = jabel # If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues, # and should *not* be used in most situations. -1 disables this. # forceToolchainVersion = -1 +# Target JVM version for JVM Downgrader bytecode downgrading. +# Only used when enableModernJavaSyntax = jvmDowngrader +# downgradeTargetVersion = 8 + +# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only). +# Classes will be available in META-INF/versions/N/ for each version N in this list. +# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade). +# jvmDowngraderMultiReleaseVersions = 21,25 + +# Specifies how JVM Downgrader API stubs are provided. Options: +# - shade: Shade minimized stubs into the jar +# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint) +# - external: Another dependency provides stubs (no constraint, no warning) +# - (empty): Warning reminding you to configure stubs +# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md +# jvmDowngraderStubsProvider = + # Enables injecting missing generics into the decompiled source code for a better coding experience. # Turns most publicly visible List, Map, etc. into proper List, Map types. enableGenericInjection = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2b..37f78a6a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 7239a9ef..c1ffed14 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,5 +17,5 @@ pluginManagement { } plugins { - id("com.gtnewhorizons.gtnhsettingsconvention") version("2.0.7") + id("com.gtnewhorizons.gtnhsettingsconvention") version("2.0.20") } From 4d629f3bc1132fe35c7b2d3467dae4e586cedad9 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Tue, 3 Mar 2026 07:47:15 -0700 Subject: [PATCH 2/4] Suggest Java 25 by default. --- .java-version | 1 + 1 file changed, 1 insertion(+) create mode 100644 .java-version diff --git a/.java-version b/.java-version new file mode 100644 index 00000000..7273c0fa --- /dev/null +++ b/.java-version @@ -0,0 +1 @@ +25 From a65cd29d73e75ed020b41fe7178d25a2921c8c07 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Tue, 3 Mar 2026 07:52:06 -0700 Subject: [PATCH 3/4] Touched up a few things in the README while I'm here. --- README.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aa2df730..56894e60 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,21 @@ An example mod for Minecraft 1.7.10 with Forge focussed on a stable, updatable setup. + +### Table of Contents + +* [Example Forge Mod for Minecraft 1.7.10](#example-forge-mod-for-minecraft-1710) + * [Motivation](#motivation) + * [Help! I'm stuck!](#help-im-stuck) + * [Getting started](#getting-started) + * [Features](#features) + * [Files](#files) + * [Forge's Access Transformers](#forges-access-transformers) + * [Mixins](#mixins) + * [Advanced](#advanced) + * [Feedback wanted](#feedback-wanted) + + ### Motivation We had our fair share in struggles with build scripts for Minecraft Forge. There are quite a few pitfalls from non-obvious error messages. This Example Project provides you a build system you can adapt to over 90% of Minecraft Forge mods and can easily be updated if need be. @@ -20,7 +35,8 @@ Creating mod from scratch: 2. Replace placeholders in LICENSE-template and rename it to LICENSE, or remove LICENSE-template and put any other license you like on your code. This is an permissive OSS project and we encourage you participate in OSS movement by having permissive license like one in template. You can find out pros and cons of OSS software in [this article](https://www.freecodecamp.org/news/what-is-great-about-developing-open-source-and-what-is-not/) 3. Ensure your project is under VCS. For example initialise git repository by running `git init; git commit --message "initialized repository"`. 4. Replace placeholders (edit values in gradle.properties, change example package and class names, etc.) -5. Run `./gradlew build` +5. Run `./gradlew setupDecompWorkspace` +6. Run `./gradlew build` 6. Make sure to check out the rest sections of this file. 7. You are good to go! @@ -48,6 +64,7 @@ We also have described guidelines for existing mod [migration](docs/migration.md - [`gradle.properties`](https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/gradle.properties): The core configuration file. It includes - [`dependencies.gradle[.kts]`](https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/dependencies.gradle): Add your mod's dependencies in this file. This is separate from the main build script, so you may replace the [`build.gradle`](https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/build.gradle) if an update is available. - [`repositories.gradle[.kts]`](https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/repositories.gradle): Add your dependencies' repositories. This is separate from the main build script, so you may replace the [`build.gradle`](https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/build.gradle) if an update is available. + - `addon.gradle[.kts]`: Any additional build logic. This is separate from the main build script, so you may replace the [`build.gradle`](https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/build.gradle) if an update is available. See [Advanced](#advanced) for more details. - [`jitpack.yml`](https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/jitpack.yml): Ensures that your mod is available as import over [Jitpack](https://jitpack.io). - [`.github/workflows/gradle.yml`](https://github.com/GTNewHorizons/ExampleMod1.7.10/blob/main/.github/workflows/gradle.yml): A simple CI script that will build your mod any time it is pushed to `master` or `main` and publish the result as release in your repository. This feature is free with GitHub if your repository is public. @@ -57,7 +74,8 @@ You may activate Forge's Access Transformers by defining a configuration file in Check out the [`example-access-transformers`](https://github.com/GTNewHorizons/ExampleMod1.7.10/tree/example-access-transformers) branch for a working example! -__Warning:__ Access Transformers are bugged and will deny you any sources for the decompiled minecraft! Your development environment will still work, but you might face some inconveniences. For example, IntelliJ will not permit searches in dependencies without attached sources. +> [!WARNING] +> Access Transformers are bugged and will deny you any sources for the decompiled Minecraft! Your development environment will still work, but you might face some inconveniences. For example, IntelliJ will not permit searches in dependencies without attached sources. ### Mixins From cf00afc547274fa1cb416af017f341b4296c2464 Mon Sep 17 00:00:00 2001 From: G'lek Tarssza Date: Tue, 3 Mar 2026 07:52:49 -0700 Subject: [PATCH 4/4] Remove unnecessary space. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56894e60..b02da0cc 100644 --- a/README.md +++ b/README.md @@ -102,5 +102,5 @@ For local tweaks that you don't want to commit to Git, like adding extra JVM arg If you tried out this build script we would love to head your opinion! Is there any feature missing for you? Did something not work? Please open an issue and we will try to resolve it asap! -Happy modding, \ +Happy modding,\ [SinTh0r4s](https://github.com/SinTh0r4s), [TheElan](https://github.com/TheElan) and [basdxz](https://github.com/basdxz)