diff --git a/build.gradle b/build.gradle index 0281a06..43f60db 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,11 @@ repositories{ url = "https://modmaven.k-4u.nl" } + maven { + name "modrinth" + url "https://api.modrinth.com/maven" + } + maven { url "https://www.cursemaven.com" } @@ -88,8 +93,11 @@ mixin { sourceSets.main.resources { srcDir 'src/generated/resources' } dependencies { - minecraft 'net.minecraftforge:forge:1.18.2-40.1.80' + minecraft 'net.minecraftforge:forge:1.18.2-40.2.10' 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..db25530 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,5 @@ # 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.5.6 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..41d9927 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..aa991fc --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..2d83d5d --- /dev/null +++ b/settings.gradle @@ -0,0 +1,16 @@ +pluginManagement { + repositories { + gradlePluginPortal() + mavenCentral() + maven { url = 'https://maven.minecraftforge.net/' } + maven { url = 'https://maven.parchmentmc.org' } + maven { url = 'https://repo.spongepowered.org/repository/maven-public/' } + } + resolutionStrategy { + eachPlugin { + if (requested.id.toString() == 'org.spongepowered.mixin') { + useModule("org.spongepowered:mixingradle:${requested.version}") + } + } + } +} \ 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 6ba467e..476f56b 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; @@ -11,9 +12,12 @@ import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; +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; @@ -23,6 +27,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 5e7e789..5cc6b7c 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, CallbackInfoReturnable 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..4772d93 --- /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