From 0b4d860ff415f89f86cd075cd5445caf0d6e2799 Mon Sep 17 00:00:00 2001 From: Brian Neumann-Fopiano Date: Thu, 22 Oct 2026 08:58:32 -0400 Subject: [PATCH] Native noise packaging - Default artifacts carry the CPU native noise libraries inside the packed payload - Java 21 modded jars exclude Java 25 native classes --- adapters/fabric/build.gradle | 4 ++-- adapters/forge/build.gradle | 4 ++-- adapters/neoforge/build.gradle | 4 ++-- build.gradle | 4 +++- core/build.gradle | 9 ++------- gradle/java21-runtime-exclusions.gradle | 27 +++++++++++++++++++++++++ 6 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 gradle/java21-runtime-exclusions.gradle diff --git a/adapters/fabric/build.gradle b/adapters/fabric/build.gradle index ce68d9128..648adc762 100644 --- a/adapters/fabric/build.gradle +++ b/adapters/fabric/build.gradle @@ -58,6 +58,7 @@ IrisFileOperations irisFileOperations = objects.newInstance(IrisFileOperations) apply from: file('../../gradle/modded-generation-build-revision.gradle') apply from: file('../../gradle/volmlib-stamp.gradle') +apply from: file('../../gradle/java21-runtime-exclusions.gradle') Properties rootProperties = new Properties() file('../../gradle.properties').withInputStream { InputStream stream -> rootProperties.load(stream) } @@ -322,8 +323,7 @@ tasks.named('shadowJar', ShadowJar).configure { configurations = [project.configurations.named('bundle').get()] mergeServiceFiles() if ((int) irisModTarget.java == 21) { - exclude('art/arcane/volmlib/util/noise/NativeBillowLoader*.class') - exclude('art/arcane/volmlib/util/noise/BillowBatch*.class') + exclude(java21RuntimeExclusions) } exclude('META-INF/maven/**') exclude('META-INF/proguard/**') diff --git a/adapters/forge/build.gradle b/adapters/forge/build.gradle index d659e39e5..d69d925bb 100644 --- a/adapters/forge/build.gradle +++ b/adapters/forge/build.gradle @@ -57,6 +57,7 @@ IrisFileOperations irisFileOperations = objects.newInstance(IrisFileOperations) apply from: file('../../gradle/modded-generation-build-revision.gradle') apply from: file('../../gradle/volmlib-stamp.gradle') +apply from: file('../../gradle/java21-runtime-exclusions.gradle') Properties rootProperties = new Properties() file('../../gradle.properties').withInputStream { InputStream stream -> rootProperties.load(stream) } @@ -309,8 +310,7 @@ tasks.named('shadowJar', ShadowJar).configure { from(sourceSets.main.output) mergeServiceFiles() if ((int) irisModTarget.java == 21) { - exclude('art/arcane/volmlib/util/noise/NativeBillowLoader*.class') - exclude('art/arcane/volmlib/util/noise/BillowBatch*.class') + exclude(java21RuntimeExclusions) } exclude('META-INF/maven/**') exclude('META-INF/proguard/**') diff --git a/adapters/neoforge/build.gradle b/adapters/neoforge/build.gradle index 2b3da4dfc..2314edb3a 100644 --- a/adapters/neoforge/build.gradle +++ b/adapters/neoforge/build.gradle @@ -56,6 +56,7 @@ IrisFileOperations irisFileOperations = objects.newInstance(IrisFileOperations) apply from: file('../../gradle/modded-generation-build-revision.gradle') apply from: file('../../gradle/volmlib-stamp.gradle') +apply from: file('../../gradle/java21-runtime-exclusions.gradle') Properties rootProperties = new Properties() file('../../gradle.properties').withInputStream { InputStream stream -> rootProperties.load(stream) } @@ -295,8 +296,7 @@ tasks.named('shadowJar', ShadowJar).configure { from(sourceSets.main.output) mergeServiceFiles() if ((int) irisModTarget.java == 21) { - exclude('art/arcane/volmlib/util/noise/NativeBillowLoader*.class') - exclude('art/arcane/volmlib/util/noise/BillowBatch*.class') + exclude(java21RuntimeExclusions) } exclude('META-INF/maven/**') exclude('META-INF/proguard/**') diff --git a/build.gradle b/build.gradle index 539290bda..a0aa5c3b7 100644 --- a/build.gradle +++ b/build.gradle @@ -230,6 +230,7 @@ List moddedSharedInputs = [] 'gradle/libs.versions.toml', 'gradle/volmlib-resolution.settings.gradle', 'gradle/volmlib-stamp.gradle', + 'gradle/java21-runtime-exclusions.gradle', 'gradle/generation-build-revision.gradle', 'gradle/modded-generation-build-revision.gradle', 'gradle/native-minecraft-sources.gradle', @@ -245,7 +246,8 @@ List moddedSharedInputs = [] ].each { String path -> moddedSharedInputs.add(layout.projectDirectory.file(path).asFile) } if (localVolmLibCheckout != null) { moddedSharedInputs.add(fileTree(localVolmLibCheckout) { - include('shared/src/main/**', 'native-api/src/main/**', 'native-terrain-api/src/main/**', + include('shared/src/main/**', 'shared/src/nativeNoise/**', 'shared/native/noise/prebuilt/**', + 'native-api/src/main/**', 'native-terrain-api/src/main/**', 'native/**/src/main/**', 'native/minecraft-common/src/**', 'packaging/src/main/**', '**/build.gradle', 'settings.gradle', 'gradle.properties', 'gradle/libs.versions.toml') diff --git a/core/build.gradle b/core/build.gradle index 091338be7..e18d4d249 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -39,6 +39,7 @@ plugins { } apply from: rootProject.file('gradle/runtime-relocations.gradle') +apply from: rootProject.file('gradle/java21-runtime-exclusions.gradle') def lib = 'art.arcane.iris.util' @@ -475,13 +476,7 @@ tasks.named('shadowJar', ShadowJar).configure { dependsOn(embeddedAgentJar) mergeServiceFiles() if (providers.gradleProperty('irisRuntimeJava').getOrElse(rootProject.irisModTarget.java.toString()) == '21') { - exclude('art/arcane/volmlib/util/noise/NativeBillowLoader*.class') - exclude('art/arcane/volmlib/util/noise/BillowBatch*.class') - exclude('art/arcane/volmlib/util/noise/NativeNoiseLibrary*.class') - exclude('art/arcane/volmlib/util/noise/program/NativeNoise*.class') - exclude('art/arcane/volmlib/util/noise/program/NativeProgramEncoder*.class') - exclude('art/arcane/volmlib/util/noise/program/GpuNoise*.class') - exclude('art/arcane/volmlib/native/**') + exclude(java21RuntimeExclusions) } // minimize() stays off. Caffeine reaches its 520 generated cache and node classes through // MethodHandles.Lookup.findClass on a computed name, and the VolmLib command, GUI and hotload diff --git a/gradle/java21-runtime-exclusions.gradle b/gradle/java21-runtime-exclusions.gradle new file mode 100644 index 000000000..7b1b56c98 --- /dev/null +++ b/gradle/java21-runtime-exclusions.gradle @@ -0,0 +1,27 @@ +/* + * Iris is a World Generator for Minecraft Servers + * Copyright (c) 2026 Arcane Arts (Volmit Software) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +ext.java21RuntimeExclusions = [ + 'art/arcane/volmlib/util/noise/NativeBillowLoader*.class', + 'art/arcane/volmlib/util/noise/BillowBatch*.class', + 'art/arcane/volmlib/util/noise/NativeNoiseLibrary*.class', + 'art/arcane/volmlib/util/noise/program/NativeNoise*.class', + 'art/arcane/volmlib/util/noise/program/NativeProgramEncoder*.class', + 'art/arcane/volmlib/util/noise/program/GpuNoise*.class', + 'art/arcane/volmlib/native/**' +]