From 8b0c7e6522585d002dce861ffc44006ac75cf84e Mon Sep 17 00:00:00 2001 From: SleepyPop <81194303+SleepyPopp@users.noreply.github.com> Date: Thu, 7 May 2026 13:31:05 -0400 Subject: [PATCH 1/7] Initial work on Hydraulic for Java 26.1 --- .github/workflows/build.yml | 2 +- .github/workflows/pullrequest.yml | 2 +- LICENSE | 2 +- README.md | 7 +++--- .../hydraulic.base-conventions.gradle.kts | 4 ++-- .../hydraulic.platform-conventions.gradle.kts | 19 ++++++++++++++-- fabric/build.gradle.kts | 14 ++++++------ gradle.properties | 2 +- gradle/libs.versions.toml | 22 +++++++++---------- gradle/wrapper/gradle-wrapper.properties | 2 +- neoforge/build.gradle.kts | 8 +++---- settings.gradle.kts | 2 +- test/build.gradle.kts | 8 +++---- 13 files changed, 55 insertions(+), 39 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8bbb5cd0..e2fbe173 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Gradle uses: GeyserMC/actions/setup-gradle-composite@master with: - setup-java_java-version: 21 + setup-java_java-version: 25 - name: Build Hydraulic run: ./gradlew build diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 1664bc65..f5086380 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -17,7 +17,7 @@ jobs: - name: Setup Gradle uses: GeyserMC/actions/setup-gradle-composite@master with: - setup-java_java-version: 21 + setup-java_java-version: 25 setup-gradle_cache-read-only: true - name: Build Hydraulic diff --git a/LICENSE b/LICENSE index bde25269..c434c134 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2019-2023 GeyserMC. http://geysermc.org +Copyright (c) 2019-2026 GeyserMC. http://geysermc.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 6d234c78..84995f50 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Hydraulic is an open collaboration project by [CubeCraft Games](https://cubecraf ## What is Hydraulic? Hydraulic is a server-side mod, which allows for Bedrock players to join modded Minecraft: Java Edition servers. This project works alongside [Geyser](https://github.com/GeyserMC/Geyser) to make this possible. -### This project is still in very early development and should not be used on production setups! As such, there are no binaries currently distributed, and they must be retrieved by following the Project Setup instructions below! +### This project is still in very early development and should not be used on production setups! You can get [Hydraulic](https://geysermc.org/download?project=other-projects&hydraulic=expanded) from the GeyserMC website. ## Contributing Any contributions are appreciated. Please feel free to reach out to us on [Discord](https://discord.gg/geysermc) if @@ -20,8 +20,9 @@ you're interested in helping out with Hydraulic. ### Project Setup 1. Clone the repo to your computer. 2. Navigate to the Hydraulic root directory and run `git submodule update --init --recursive`. This command downloads all the needed submodules for Hydraulic and is a crucial step in this process. -3. The project should import into your IDE after the loom setup is complete. For more detailed information, see the [Fabric setup](https://fabricmc.net/wiki/tutorial:setup) -4. Use `./gradlew build` to compile a jar file, or use `./gradlew :fabric:runServer` or `./gradlew :neoforge:runServer` to run a server with Hydraulic installed. Make sure to install the Custom Item API V2 branch of Geyser (Experimental! Here be dragons!) into your `mods` folder as Hydraulic is designed around that new API! Any other build of Geyser is not guaranteed to work. +3. If your default JVM/JDK is not Java 25, please set your IDE to use a valid Java 25 JVM. Otherwise, you will run into an error while building Hydraulic. +4. The project should import into your IDE after the loom setup is complete. For more detailed information, see the [Fabric setup](https://docs.fabricmc.net/develop/getting-started/setting-up). +5. Use `./gradlew build` to compile a jar file, or use `./gradlew :fabric:runServer` or `./gradlew :neoforge:runServer` to run a server with Hydraulic installed. Make sure you have Geyser in your `mods` folder along with Hydraulic! ## Links: - Website: https://geysermc.org diff --git a/build-logic/src/main/kotlin/hydraulic.base-conventions.gradle.kts b/build-logic/src/main/kotlin/hydraulic.base-conventions.gradle.kts index 412adb1a..cf2e4d03 100644 --- a/build-logic/src/main/kotlin/hydraulic.base-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/hydraulic.base-conventions.gradle.kts @@ -6,7 +6,7 @@ plugins { val minecraftVersion = project.property("minecraft_version") as String dependencies { - compileOnly("org.checkerframework:checker-qual:3.19.0") + compileOnly("org.checkerframework:checker-qual:4.1.0") } indra { @@ -18,7 +18,7 @@ indra { mitLicense() javaVersions { - target(21) + target(25) } } diff --git a/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts b/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts index 4d44be7b..9902649a 100644 --- a/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts @@ -2,7 +2,7 @@ plugins { id("hydraulic.publish-conventions") id("java-library") id("architectury-plugin") - id("dev.architectury.loom") + id("dev.architectury.loom-no-remap") } // These are provided by Minecraft already, no need to include em @@ -43,6 +43,22 @@ tasks { // The remapped shadowJar is the final desired mod jar archiveVersion.set(project.version.toString()) archiveClassifier.set("shaded") + mergeServiceFiles() + } + + // This task combines the output of the "jar" task, which includes JiJ dependencies, + // and the shadowJar for the final jar. + // thanks bluemap + // https://github.com/BlueMap-Minecraft/BlueMap/blob/cfe73115dc4d1bdd97bc659f41364da65a6a2179/implementations/fabric/build.gradle.kts#L93-L107 + register("mergeShadowAndJarJar") { + dependsOn( tasks.shadowJar, tasks.jar ) + // from sources / final name are configured in the respective projects + archiveVersion.set("") + archiveClassifier.set("") + } + + build { + dependsOn(tasks.getByName("mergeShadowAndJarJar")) } } @@ -60,5 +76,4 @@ afterEvaluate { dependencies { minecraft("com.mojang:minecraft:$minecraftVersion") - mappings(loom.officialMojangMappings()) } \ No newline at end of file diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index bba26dab..3c043a55 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -16,13 +16,13 @@ configurations { } tasks { - remapJar { +/* remapJar { dependsOn(shadowJar) inputFile.set(shadowJar.get().archiveFile) archiveBaseName.set("${modId}-fabric") archiveClassifier.set("") archiveVersion.set("") - } + }*/ shadowJar { archiveClassifier.set("dev-shadow") @@ -35,9 +35,9 @@ tasks { } dependencies { - modImplementation(libs.fabric.loader) - modApi(libs.fabric.api) - common(project(":shared", configuration = "namedElements")) { isTransitive = false } + implementation(libs.fabric.loader) + api(libs.fabric.api) + common(project(":shared")) { isTransitive = false } compileOnly(libs.geyser.api) shadow(project(path = ":shared", configuration = "transformProductionFabric")) { @@ -46,10 +46,10 @@ dependencies { compileOnly(libs.asm) - modRuntimeOnly(libs.pack.converter) + runtimeOnly(libs.pack.converter) includeTransitive(libs.pack.converter) - modLocalRuntime(libs.geyser.fabric) { + localRuntime(libs.geyser.fabric) { exclude(group = "io.netty") exclude(group = "io.netty.incubator") } diff --git a/gradle.properties b/gradle.properties index 37effa09..8d366570 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ group=org.geysermc.hydraulic version=1.0.0-SNAPSHOT description="A companion mod to Geyser which allows for Bedrock players to join modded Minecraft: Java Edition servers." -minecraft_version=1.21.11 +minecraft_version=26.1.2 common_runs_enabled=false common_client_run_name=Common Client common_server_run_name=Common Server diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 875689c8..94ac3c3d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,21 +1,21 @@ [versions] -mixin = "0.8.5" -mixinextras = "0.3.5" -geyser = "2.9.3-SNAPSHOT" -auto-service = "1.0.1" +mixin = "0.8.7" +mixinextras = "0.5.4" +geyser = "2.10.0-SNAPSHOT" +auto-service = "1.1.1" pack-converter = "3.4.1-SNAPSHOT" indra = "4.0.0" -shadow = "9.2.2" -architectury-plugin = "3.4-SNAPSHOT" -architectury-loom = "1.13-SNAPSHOT" +shadow = "9.4.1" +architectury-plugin = "3.5-SNAPSHOT" +architectury-loom = "1.14-SNAPSHOT" asm = "5.2" # fabric -fabric-loader = "0.18.2" -fabric-api = "0.139.5+1.21.11" +fabric-loader = "0.19.2" +fabric-api = "0.148.0+26.1.2" # neoforge -neoforge-version = "21.11.6-beta" +neoforge-version = "26.1.2.43-beta" [libraries] mixin = { group = "org.spongepowered", name = "mixin", version.ref = "mixin" } @@ -28,7 +28,7 @@ pack-converter = { group = "org.geysermc.pack", name = "converter", version.ref indra = { group = "net.kyori", name = "indra-common", version.ref = "indra" } shadow = { group = "com.gradleup.shadow", name = "com.gradleup.shadow.gradle.plugin", version.ref = "shadow" } architectury-plugin = { group = "architectury-plugin", name = "architectury-plugin.gradle.plugin", version.ref = "architectury-plugin" } -architectury-loom = { group = "dev.architectury.loom", name = "dev.architectury.loom.gradle.plugin", version.ref = "architectury-loom" } +architectury-loom = { group = "dev.architectury.loom-no-remap", name = "dev.architectury.loom-no-remap.gradle.plugin", version.ref = "architectury-loom" } asm = { group = "org.ow2.asm", name = "asm-debug-all", version.ref = "asm" } # Fabric diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 23449a2b..1a704683 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.5.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts index 00d492d6..b9344733 100644 --- a/neoforge/build.gradle.kts +++ b/neoforge/build.gradle.kts @@ -30,25 +30,25 @@ dependencies { } } - common(project(":shared", configuration = "namedElements")) { isTransitive = false } + common(project(":shared")) { isTransitive = false } neoForge(libs.neoforge) compileOnly(libs.geyser.api) shadow(project(path = ":shared", configuration = "transformProductionNeoForge")) { isTransitive = false } // TODO fix neoforge runServer task - modRuntimeOnly(libs.pack.converter) + runtimeOnly(libs.pack.converter) includeTransitive(libs.pack.converter) } tasks { - remapJar { + /* remapJar { dependsOn(shadowJar) inputFile.set(shadowJar.get().archiveFile) archiveBaseName.set("${modId}-neoforge") archiveClassifier.set("") archiveVersion.set("") - } + }*/ shadowJar { archiveClassifier.set("dev-shadow") diff --git a/settings.gradle.kts b/settings.gradle.kts index 180b5dec..6afa06c2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -59,7 +59,7 @@ pluginManagement { } plugins { - id("net.kyori.blossom") version "1.2.0" + id("net.kyori.blossom") version "2.2.0" id("net.kyori.indra") id("net.kyori.indra.git") } diff --git a/test/build.gradle.kts b/test/build.gradle.kts index 0a72171a..ab3d9c81 100644 --- a/test/build.gradle.kts +++ b/test/build.gradle.kts @@ -26,13 +26,13 @@ tasks { dependsOn(named("runDatagen")) // Make sure the sources jar gets our generated files } - remapJar { +/* remapJar { dependsOn(shadowJar) inputFile.set(shadowJar.get().archiveFile) archiveBaseName.set("${modId}-test-mod-fabric") archiveClassifier.set("") archiveVersion.set("") - } + }*/ shadowJar { archiveClassifier.set("dev-shadow") @@ -47,6 +47,6 @@ tasks { tasks.named("build") { dependsOn(tasks.named("runDatagen")) } dependencies { - modImplementation(libs.fabric.loader) - modApi(libs.fabric.api) + implementation(libs.fabric.loader) + api(libs.fabric.api) } \ No newline at end of file From fce47fa6cf9f110b8b5821cdaed32f57fb11f0db Mon Sep 17 00:00:00 2001 From: SleepyPop <81194303+SleepyPopp@users.noreply.github.com> Date: Thu, 7 May 2026 14:06:20 -0400 Subject: [PATCH 2/7] More work on Hydraulic for Java 26.1 --- .../hydraulic.platform-conventions.gradle.kts | 1 - fabric/build.gradle.kts | 15 +++++++++++ neoforge/build.gradle.kts | 26 ++++++++++++++----- .../hydraulic/pack/PackLogListener.java | 5 ++++ test/build.gradle.kts | 15 +++++++++++ .../test/datagen/EquipmentGeneration.java | 4 +-- .../test/datagen/LanguageGeneration.java | 4 +-- .../fabric/test/datagen/ModelGeneration.java | 4 +-- .../fabric/test/datagen/TagGeneration.java | 12 ++++----- 9 files changed, 67 insertions(+), 19 deletions(-) diff --git a/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts b/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts index 9902649a..04089a61 100644 --- a/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts @@ -40,7 +40,6 @@ tasks { shadowJar { // Mirrors the example fabric project, otherwise tons of dependencies are shaded that shouldn't be configurations = listOf(project.configurations.shadow.get()) - // The remapped shadowJar is the final desired mod jar archiveVersion.set(project.version.toString()) archiveClassifier.set("shaded") mergeServiceFiles() diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 3c043a55..dd533bf1 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -16,6 +16,21 @@ configurations { } tasks { + named("mergeShadowAndJarJar") { + from ( + zipTree( shadowJar.map { it.outputs.files.singleFile } ).matching { + exclude("fabric.mod.json") + exclude("LICENSE") + }, + zipTree( jar.map { it.outputs.files.singleFile } ).matching { + include("META-INF/jars/**") + include("fabric.mod.json") + include("LICENSE") + } + ) + archiveBaseName.set("${modId}-fabric") + } + /* remapJar { dependsOn(shadowJar) inputFile.set(shadowJar.get().archiveFile) diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts index b9344733..86d367b4 100644 --- a/neoforge/build.gradle.kts +++ b/neoforge/build.gradle.kts @@ -42,13 +42,27 @@ dependencies { } tasks { - /* remapJar { - dependsOn(shadowJar) - inputFile.set(shadowJar.get().archiveFile) + named("mergeShadowAndJarJar") { + from ( + zipTree( shadowJar.map { it.outputs.files.singleFile } ).matching { + exclude("LICENSE") + }, + zipTree( jar.map { it.outputs.files.singleFile } ).matching { + include("META-INF/jars/**") + include("META-INF/jarjar/**") + include("LICENSE") + } + ) archiveBaseName.set("${modId}-neoforge") - archiveClassifier.set("") - archiveVersion.set("") - }*/ + } + + /* remapJar { + dependsOn(shadowJar) + inputFile.set(shadowJar.get().archiveFile) + archiveBaseName.set("${modId}-neoforge") + archiveClassifier.set("") + archiveVersion.set("") + }*/ shadowJar { archiveClassifier.set("dev-shadow") diff --git a/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java b/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java index d18d5a3f..d309ce1f 100644 --- a/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java +++ b/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java @@ -17,6 +17,11 @@ public void debug(@NotNull String s) { this.logger.debug(s); } + @Override + public void debugUnchecked(@NotNull String message) { + + } + @Override public void info(@NotNull String s) { this.logger.info(s); diff --git a/test/build.gradle.kts b/test/build.gradle.kts index ab3d9c81..92f04d21 100644 --- a/test/build.gradle.kts +++ b/test/build.gradle.kts @@ -26,6 +26,21 @@ tasks { dependsOn(named("runDatagen")) // Make sure the sources jar gets our generated files } + named("mergeShadowAndJarJar") { + from ( + zipTree( shadowJar.map { it.outputs.files.singleFile } ).matching { + exclude("fabric.mod.json") + exclude("LICENSE") + }, + zipTree( jar.map { it.outputs.files.singleFile } ).matching { + include("META-INF/jars/**") + include("fabric.mod.json") + include("LICENSE") + } + ) + archiveBaseName.set("${modId}-test-mod-fabric") + } + /* remapJar { dependsOn(shadowJar) inputFile.set(shadowJar.get().archiveFile) diff --git a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/EquipmentGeneration.java b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/EquipmentGeneration.java index 35567b50..0d7bf2cc 100644 --- a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/EquipmentGeneration.java +++ b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/EquipmentGeneration.java @@ -1,6 +1,6 @@ package org.geysermc.hydraulic.fabric.test.datagen; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.FabricPackOutput; import net.minecraft.client.resources.model.EquipmentClientInfo; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataProvider; @@ -19,7 +19,7 @@ public class EquipmentGeneration implements DataProvider { private final PackOutput.PathProvider pathProvider; - public EquipmentGeneration(FabricDataOutput packOutput) { + public EquipmentGeneration(FabricPackOutput packOutput) { this.pathProvider = packOutput.createPathProvider(PackOutput.Target.RESOURCE_PACK, "equipment"); } diff --git a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/LanguageGeneration.java b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/LanguageGeneration.java index 55c30fa4..73c70190 100644 --- a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/LanguageGeneration.java +++ b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/LanguageGeneration.java @@ -1,6 +1,6 @@ package org.geysermc.hydraulic.fabric.test.datagen; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.FabricPackOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider; import net.minecraft.core.HolderLookup; import org.geysermc.hydraulic.fabric.test.ModBlocks; @@ -9,7 +9,7 @@ import java.util.concurrent.CompletableFuture; public class LanguageGeneration extends FabricLanguageProvider { - protected LanguageGeneration(FabricDataOutput dataOutput, CompletableFuture registryLookup) { + protected LanguageGeneration(FabricPackOutput dataOutput, CompletableFuture registryLookup) { super(dataOutput, registryLookup); } diff --git a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java index c927d7fd..5e6598c1 100644 --- a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java +++ b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java @@ -1,7 +1,7 @@ package org.geysermc.hydraulic.fabric.test.datagen; import net.fabricmc.fabric.api.client.datagen.v1.provider.FabricModelProvider; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; +import net.fabricmc.fabric.api.datagen.v1.FabricPackOutput; import net.minecraft.client.data.models.BlockModelGenerators; import net.minecraft.client.data.models.ItemModelGenerators; import net.minecraft.client.data.models.model.ModelTemplate; @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; public class ModelGeneration extends FabricModelProvider { - public ModelGeneration(FabricDataOutput output) { + public ModelGeneration(FabricPackOutput output) { super(output); } diff --git a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/TagGeneration.java b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/TagGeneration.java index 0f0b1f36..a32616e7 100644 --- a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/TagGeneration.java +++ b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/TagGeneration.java @@ -1,7 +1,7 @@ package org.geysermc.hydraulic.fabric.test.datagen; -import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; -import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider; +import net.fabricmc.fabric.api.datagen.v1.FabricPackOutput; +import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagsProvider; import net.minecraft.core.HolderLookup; import net.minecraft.tags.BlockTags; import org.geysermc.hydraulic.fabric.test.ModBlocks; @@ -9,8 +9,8 @@ import java.util.concurrent.CompletableFuture; public class TagGeneration { - public static class Blocks extends FabricTagProvider.BlockTagProvider { - public Blocks(FabricDataOutput output, CompletableFuture registriesFuture) { + public static class Blocks extends FabricTagsProvider.BlockTagsProvider { + public Blocks(FabricPackOutput output, CompletableFuture registriesFuture) { super(output, registriesFuture); } @@ -24,8 +24,8 @@ protected void addTags(HolderLookup.Provider provider) { } } - public static class Items extends FabricTagProvider.ItemTagProvider { - public Items(FabricDataOutput output, CompletableFuture registriesFuture) { + public static class Items extends FabricTagsProvider.ItemTagsProvider { + public Items(FabricPackOutput output, CompletableFuture registriesFuture) { super(output, registriesFuture); } From 8f060880ef668278df553a1bd53311af5aaebb75 Mon Sep 17 00:00:00 2001 From: SleepyPop <81194303+SleepyPopp@users.noreply.github.com> Date: Thu, 7 May 2026 14:17:27 -0400 Subject: [PATCH 3/7] Even more work on Hydraulic for Java 26.1 --- fabric/src/main/resources/fabric.mod.json | 7 ++----- fabric/src/main/resources/hydraulic-fabric.mixins.json | 2 +- .../src/main/resources/META-INF/neoforge.mods.toml | 10 ++++++---- shared/src/main/resources/hydraulic.mixins.json | 2 +- test/src/main/resources/fabric.mod.json | 7 ++----- test/src/main/resources/hydraulic_test_mod.mixins.json | 2 +- 6 files changed, 13 insertions(+), 17 deletions(-) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 662a5e8f..e9eb8755 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -11,10 +11,8 @@ "homepage": "https://geysermc.org/", "sources": "https://github.com/GeyserMC/Hydraulic" }, - "license": "MIT", "icon": "assets/hydraulic/logo.png", - "environment": "*", "entrypoints": { "main": [ @@ -25,12 +23,11 @@ "hydraulic.mixins.json", "hydraulic-fabric.mixins.json" ], - "depends": { - "fabricloader": ">=0.15", + "fabricloader": ">=0.19.2", "fabric": "*", "geyser-fabric": "*", "minecraft": ">=${minecraft_version}", - "java": ">=21" + "java": ">=25" } } \ No newline at end of file diff --git a/fabric/src/main/resources/hydraulic-fabric.mixins.json b/fabric/src/main/resources/hydraulic-fabric.mixins.json index 08ad78e2..41a25f4c 100644 --- a/fabric/src/main/resources/hydraulic-fabric.mixins.json +++ b/fabric/src/main/resources/hydraulic-fabric.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "org.geysermc.hydraulic.fabric.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ "RegistrySyncManagerMixin" ], diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index b503449e..96ae5f31 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -1,6 +1,5 @@ -modLoader="javafml" -loaderVersion="[4,)" license="MIT" + [[mods]] modId="hydraulic" version="${version}" @@ -8,17 +7,20 @@ displayName="Hydraulic" logoFile="hydraulic.png" authors="GeyserMC" description='''${description}''' + [[mixins]] config = "hydraulic.mixins.json" + [[dependencies.hydraulic]] modId="neoforge" type="required" - versionRange="[21.4.78-beta,)" + versionRange="[26.1.0.1-beta,)" ordering="NONE" side="BOTH" + [[dependencies.hydraulic]] modId="minecraft" type="required" versionRange="[${minecraft_version},)" ordering="NONE" - side="BOTH" + side="BOTH" \ No newline at end of file diff --git a/shared/src/main/resources/hydraulic.mixins.json b/shared/src/main/resources/hydraulic.mixins.json index d3bf2f62..913d2ddb 100644 --- a/shared/src/main/resources/hydraulic.mixins.json +++ b/shared/src/main/resources/hydraulic.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "org.geysermc.hydraulic.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ "ext.BlockRegistryPopulatorMixin", "ext.BlockStateSerializerMixin", diff --git a/test/src/main/resources/fabric.mod.json b/test/src/main/resources/fabric.mod.json index 8280773a..5e747375 100644 --- a/test/src/main/resources/fabric.mod.json +++ b/test/src/main/resources/fabric.mod.json @@ -11,10 +11,8 @@ "homepage": "https://geysermc.org/", "sources": "https://github.com/GeyserMC/Hydraulic" }, - "license": "MIT", "icon": "assets/hydraulic_test_mod/logo.png", - "environment": "*", "entrypoints": { "main": [ @@ -27,11 +25,10 @@ "mixins": [ "hydraulic_test_mod.mixins.json" ], - "depends": { - "fabricloader": ">=0.15", + "fabricloader": ">=0.19.2", "fabric-api": "*", "minecraft": "${minecraft_version}", - "java": ">=21" + "java": ">=25" } } \ No newline at end of file diff --git a/test/src/main/resources/hydraulic_test_mod.mixins.json b/test/src/main/resources/hydraulic_test_mod.mixins.json index 958de2c4..996b9e97 100644 --- a/test/src/main/resources/hydraulic_test_mod.mixins.json +++ b/test/src/main/resources/hydraulic_test_mod.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "org.geysermc.hydraulic.fabric.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_25", "mixins": [ ], "injectors": { From f4915fdd3954b22bf2ba25f4e0bb6b9292483555 Mon Sep 17 00:00:00 2001 From: SleepyPop <81194303+SleepyPopp@users.noreply.github.com> Date: Thu, 7 May 2026 14:25:48 -0400 Subject: [PATCH 4/7] Remove debug and add debugUnchecked --- .../java/org/geysermc/hydraulic/pack/PackLogListener.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java b/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java index d309ce1f..a64ba3fa 100644 --- a/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java +++ b/shared/src/main/java/org/geysermc/hydraulic/pack/PackLogListener.java @@ -13,15 +13,10 @@ public PackLogListener(Logger logger) { } @Override - public void debug(@NotNull String s) { + public void debugUnchecked(@NotNull String s) { this.logger.debug(s); } - @Override - public void debugUnchecked(@NotNull String message) { - - } - @Override public void info(@NotNull String s) { this.logger.info(s); From f54d219db23e5a6abd2c543dbc5dbd5dee1299ff Mon Sep 17 00:00:00 2001 From: SleepyPop <81194303+SleepyPopp@users.noreply.github.com> Date: Thu, 7 May 2026 14:39:40 -0400 Subject: [PATCH 5/7] Update fabric/src/main/resources/fabric.mod.json Co-authored-by: Eclipse --- fabric/src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index e9eb8755..fa025fa1 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -25,7 +25,7 @@ ], "depends": { "fabricloader": ">=0.19.2", - "fabric": "*", + "fabric-api": "*", "geyser-fabric": "*", "minecraft": ">=${minecraft_version}", "java": ">=25" From 3f96a704bd84d2eefd03b4627927c23ee9c0ea79 Mon Sep 17 00:00:00 2001 From: Eclipse Date: Thu, 7 May 2026 19:34:00 +0000 Subject: [PATCH 6/7] Clean up some buildscripts, fix test mod datagen --- .../hydraulic.platform-conventions.gradle.kts | 4 -- build.gradle.kts | 12 ++++++ fabric/build.gradle.kts | 1 + .../fabric/test/datagen/ModelGeneration.java | 37 +++++++++---------- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts b/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts index 04089a61..fd184aa9 100644 --- a/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts +++ b/build-logic/src/main/kotlin/hydraulic.platform-conventions.gradle.kts @@ -20,10 +20,6 @@ architectury { minecraft = minecraftVersion } -loom { - silentMojangMappingsLicense() -} - configurations { create("includeTransitive").isTransitive = true } diff --git a/build.gradle.kts b/build.gradle.kts index a3f3480a..3e676d24 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -34,5 +34,17 @@ allprojects { maven("https://maven.fabricmc.net/") maven("https://maven.neoforged.net/releases") + + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = uri("https://api.modrinth.com/maven") + } + } + filter { + includeGroup("maven.modrinth") + } + } } } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index dd533bf1..01325c02 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -67,6 +67,7 @@ dependencies { localRuntime(libs.geyser.fabric) { exclude(group = "io.netty") exclude(group = "io.netty.incubator") + exclude(group = "org.incendo") } } diff --git a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java index 5e6598c1..6b38aba1 100644 --- a/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java +++ b/test/src/main/java/org/geysermc/hydraulic/fabric/test/datagen/ModelGeneration.java @@ -4,13 +4,9 @@ import net.fabricmc.fabric.api.datagen.v1.FabricPackOutput; import net.minecraft.client.data.models.BlockModelGenerators; import net.minecraft.client.data.models.ItemModelGenerators; -import net.minecraft.client.data.models.model.ModelTemplate; import net.minecraft.client.data.models.model.ModelTemplates; -import net.minecraft.core.component.DataComponents; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import org.geysermc.hydraulic.fabric.test.HydraulicTestMod; +import org.geysermc.hydraulic.fabric.test.ModBlocks; +import org.geysermc.hydraulic.fabric.test.ModItems; import org.jetbrains.annotations.NotNull; public class ModelGeneration extends FabricModelProvider { @@ -20,24 +16,25 @@ public ModelGeneration(FabricPackOutput output) { @Override public void generateBlockStateModels(BlockModelGenerators blockModelGenerators) { - for (Block block : BuiltInRegistries.BLOCK.stream().toList()) { - if (!BuiltInRegistries.BLOCK.getKey(block).getNamespace().equals(HydraulicTestMod.MOD_ID)) continue; - - blockModelGenerators.createTrivialCube(block); - } + blockModelGenerators.createTrivialCube(ModBlocks.GOLDEN_BARREL); } @Override public void generateItemModels(ItemModelGenerators itemModelGenerators) { - for (Item item : BuiltInRegistries.ITEM.stream().toList()) { - if (!BuiltInRegistries.ITEM.getKey(item).getNamespace().equals(HydraulicTestMod.MOD_ID)) continue; - - boolean isHandheld = item.components().has(DataComponents.TOOL) || item.components().has(DataComponents.WEAPON); - - ModelTemplate modelTemplate = isHandheld ? ModelTemplates.FLAT_HANDHELD_ITEM : ModelTemplates.FLAT_ITEM; - - itemModelGenerators.generateFlatItem(item, modelTemplate); - } + itemModelGenerators.generateFlatItem(ModItems.BARREL_SWORD, ModelTemplates.FLAT_HANDHELD_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_PICKAXE, ModelTemplates.FLAT_HANDHELD_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_AXE, ModelTemplates.FLAT_HANDHELD_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_SHOVEL, ModelTemplates.FLAT_HANDHELD_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_HOE, ModelTemplates.FLAT_HANDHELD_ITEM); + + itemModelGenerators.generateFlatItem(ModItems.BARREL_HELMET, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_CHESTPLATE, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_LEGGINGS, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_BOOTS, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_HORSE_ARMOR, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_STICK, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.BARREL_PACK, ModelTemplates.FLAT_ITEM); + itemModelGenerators.generateFlatItem(ModItems.IRAURI_INGOT, ModelTemplates.FLAT_ITEM); } @Override From 635cf019c4ef8cd5ff69205078e08bc9bba34284 Mon Sep 17 00:00:00 2001 From: SleepyPop <81194303+SleepyPopp@users.noreply.github.com> Date: Thu, 7 May 2026 20:36:08 -0400 Subject: [PATCH 7/7] Remove remapJar --- fabric/build.gradle.kts | 8 -------- neoforge/build.gradle.kts | 8 -------- test/build.gradle.kts | 8 -------- 3 files changed, 24 deletions(-) diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 01325c02..44388833 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -31,14 +31,6 @@ tasks { archiveBaseName.set("${modId}-fabric") } -/* remapJar { - dependsOn(shadowJar) - inputFile.set(shadowJar.get().archiveFile) - archiveBaseName.set("${modId}-fabric") - archiveClassifier.set("") - archiveVersion.set("") - }*/ - shadowJar { archiveClassifier.set("dev-shadow") relocate("org.cloudburstmc", "org.geysermc.geyser.shaded.org.cloudburstmc") diff --git a/neoforge/build.gradle.kts b/neoforge/build.gradle.kts index 86d367b4..fc34db53 100644 --- a/neoforge/build.gradle.kts +++ b/neoforge/build.gradle.kts @@ -56,14 +56,6 @@ tasks { archiveBaseName.set("${modId}-neoforge") } - /* remapJar { - dependsOn(shadowJar) - inputFile.set(shadowJar.get().archiveFile) - archiveBaseName.set("${modId}-neoforge") - archiveClassifier.set("") - archiveVersion.set("") - }*/ - shadowJar { archiveClassifier.set("dev-shadow") } diff --git a/test/build.gradle.kts b/test/build.gradle.kts index 92f04d21..4f070007 100644 --- a/test/build.gradle.kts +++ b/test/build.gradle.kts @@ -41,14 +41,6 @@ tasks { archiveBaseName.set("${modId}-test-mod-fabric") } -/* remapJar { - dependsOn(shadowJar) - inputFile.set(shadowJar.get().archiveFile) - archiveBaseName.set("${modId}-test-mod-fabric") - archiveClassifier.set("") - archiveVersion.set("") - }*/ - shadowJar { archiveClassifier.set("dev-shadow") }