From 9da010e798ba05af4fda0ed71d3dbaf403b7065d Mon Sep 17 00:00:00 2001 From: Nito Date: Sun, 7 May 2023 23:23:31 +0200 Subject: [PATCH] add rubidium support --- build.gradle | 11 ++++++-- gradle.properties | 5 +++- .../level/WaterfallCloudGenerators.java | 20 ++++++++++++++ .../mixin/LiquidBlockRendererMixin.java | 15 +---------- .../rubidium/FluidRendererMixin.java | 26 +++++++++++++++++++ src/main/resources/effective_fg.mixins.json | 3 ++- 6 files changed, 62 insertions(+), 18 deletions(-) create mode 100644 src/main/java/bottomtextdanny/effective_fg/mixin/integration/rubidium/FluidRendererMixin.java diff --git a/build.gradle b/build.gradle index 80b384f..46b9d0c 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,10 @@ repositories{ name = "ModMaven" url = "https://modmaven.k-4u.nl" } + maven { + name "modrinth" + url "https://api.modrinth.com/maven" + } maven { url "https://www.cursemaven.com" @@ -38,7 +42,7 @@ java.toolchain.languageVersion = JavaLanguageVersion.of(17) println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) minecraft { - mappings channel: "official", version: "1.19.2" + mappings channel: "official", version: "${mc_version}" runs { @@ -88,8 +92,11 @@ mixin { sourceSets.main.resources { srcDir 'src/generated/resources' } dependencies { - minecraft 'net.minecraftforge:forge:1.19.2-43.1.25' + minecraft "net.minecraftforge:forge:${mc_version}-${forge_version}" annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + + compileOnly fg.deobf("maven.modrinth:rubidium:${project.rubidium_version}") + //runtimeOnly fg.deobf("maven.modrinth:rubidium:${project.rubidium_version}") //for testing } jar { diff --git a/gradle.properties b/gradle.properties index 878bf1f..f521fa0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,7 @@ # Sets default memory used for gradle commands. Can be overridden by user or command line properties. # This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G -org.gradle.daemon=false \ No newline at end of file +org.gradle.daemon=false +rubidium_version=0.6.2a +mc_version=1.19.2 +forge_version=43.1.25 \ No newline at end of file diff --git a/src/main/java/bottomtextdanny/effective_fg/level/WaterfallCloudGenerators.java b/src/main/java/bottomtextdanny/effective_fg/level/WaterfallCloudGenerators.java index 5f4123d..d53fc68 100644 --- a/src/main/java/bottomtextdanny/effective_fg/level/WaterfallCloudGenerators.java +++ b/src/main/java/bottomtextdanny/effective_fg/level/WaterfallCloudGenerators.java @@ -4,6 +4,7 @@ import bottomtextdanny.effective_fg.tables.EffectiveFgParticles; import bottomtextdanny.effective_fg.tables.EffectiveFgSounds; import bottomtextdanny.effective_fg.sound.LinearFadeSound; +import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientLevel; @@ -12,9 +13,12 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; +import net.minecraft.world.level.BlockAndTintGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.*; import java.util.stream.Collectors; @@ -24,6 +28,22 @@ public class WaterfallCloudGenerators { private static boolean resolvingWaterfalls; private static Level levelO = null; + public static void onRenderFluid(BlockAndTintGetter level, BlockPos pos, FluidState fluidState) { + if (!EffectiveFg.config().cascades.get()) return; + + BlockState stateDoubleUp = level.getBlockState(pos.offset(0, 2, 0)); + BlockState stateUp = level.getBlockState(pos.offset(0, 1, 0)); + if (fluidState.isSource() + && stateUp.getBlock() == Blocks.WATER + && !stateUp.getFluidState().isSource() + && stateUp.getFluidState().getOwnHeight() >= 0.77f + && stateDoubleUp.is(Blocks.WATER) && !stateDoubleUp.getFluidState().isSource()) { + if (!WaterfallCloudGenerators.isResolvingWaterfalls()) { + addGenerator(new BlockPos(pos.getX() + 0.5f, pos.getY() + 0.5f, pos.getZ() + 0.5f)); + } + } + } + public static void addGenerator(BlockPos blockPos) { GENERATORS.add(blockPos); } diff --git a/src/main/java/bottomtextdanny/effective_fg/mixin/LiquidBlockRendererMixin.java b/src/main/java/bottomtextdanny/effective_fg/mixin/LiquidBlockRendererMixin.java index 3a6ba08..c04d788 100644 --- a/src/main/java/bottomtextdanny/effective_fg/mixin/LiquidBlockRendererMixin.java +++ b/src/main/java/bottomtextdanny/effective_fg/mixin/LiquidBlockRendererMixin.java @@ -20,19 +20,6 @@ public class LiquidBlockRendererMixin { @Inject(method = "tesselate", at = @At("TAIL")) public void renderFluid(BlockAndTintGetter level, BlockPos pos, VertexConsumer buffer, BlockState state, FluidState fluidState, CallbackInfo ci) { - if (!EffectiveFg.config().cascades.get()) return; - - BlockState stateDoubleUp = level.getBlockState(pos.offset(0, 2, 0)); - BlockState stateUp = level.getBlockState(pos.offset(0, 1, 0)); - if (state.getBlock() == Blocks.WATER - && fluidState.isSource() - && stateUp.getBlock() == Blocks.WATER - && !stateUp.getFluidState().isSource() - && stateUp.getFluidState().getOwnHeight() >= 0.77f - && stateDoubleUp.is(Blocks.WATER) && !stateDoubleUp.getFluidState().isSource()) { - if (!WaterfallCloudGenerators.isResolvingWaterfalls()) { - WaterfallCloudGenerators.addGenerator(new BlockPos(pos.getX() + 0.5f, pos.getY() + 0.5f, pos.getZ() + 0.5f)); - } - } + WaterfallCloudGenerators.onRenderFluid(level, pos, fluidState); } } diff --git a/src/main/java/bottomtextdanny/effective_fg/mixin/integration/rubidium/FluidRendererMixin.java b/src/main/java/bottomtextdanny/effective_fg/mixin/integration/rubidium/FluidRendererMixin.java new file mode 100644 index 0000000..41d7749 --- /dev/null +++ b/src/main/java/bottomtextdanny/effective_fg/mixin/integration/rubidium/FluidRendererMixin.java @@ -0,0 +1,26 @@ +package bottomtextdanny.effective_fg.mixin.integration.rubidium; + + +import bottomtextdanny.effective_fg.EffectiveFg; +import bottomtextdanny.effective_fg.level.WaterfallCloudGenerators; +import me.jellysquid.mods.sodium.client.render.chunk.compile.buffers.ChunkModelBuilder; +import me.jellysquid.mods.sodium.client.render.pipeline.FluidRenderer; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndTintGetter; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(value = FluidRenderer.class, remap = false) +public class FluidRendererMixin { + + @Inject(method = "render", at = @At("HEAD")) + public void renderFluid(BlockAndTintGetter level, FluidState fluidState, BlockPos pos, BlockPos offset, ChunkModelBuilder buffers, CallbackInfoReturnable cir) + { + WaterfallCloudGenerators.onRenderFluid(level, pos, fluidState); + } +} \ No newline at end of file diff --git a/src/main/resources/effective_fg.mixins.json b/src/main/resources/effective_fg.mixins.json index 6d305d9..118f866 100644 --- a/src/main/resources/effective_fg.mixins.json +++ b/src/main/resources/effective_fg.mixins.json @@ -7,7 +7,8 @@ "client": [ "EntityMixin", "LiquidBlockRendererMixin", - "WaterFluidMixin" + "WaterFluidMixin", + "integration.rubidium.FluidRendererMixin" ], "injectors": { "defaultRequire": 1