diff --git a/src/main/java/net/wurstclient/mixin/SodiumBlockOcclusionCacheMixin.java b/src/main/java/net/wurstclient/mixin/SodiumBlockOcclusionCacheMixin.java index 0d331286..14eb452d 100644 --- a/src/main/java/net/wurstclient/mixin/SodiumBlockOcclusionCacheMixin.java +++ b/src/main/java/net/wurstclient/mixin/SodiumBlockOcclusionCacheMixin.java @@ -22,16 +22,13 @@ import net.wurstclient.events.ShouldDrawSideListener.ShouldDrawSideEvent; @Pseudo @Mixin(targets = { - // current target - "me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockOcclusionCache", - // < Sodium 0.5.0 - "me.jellysquid.mods.sodium.client.render.occlusion.BlockOcclusionCache"}, + "net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockOcclusionCache"}, remap = false) public class SodiumBlockOcclusionCacheMixin { /** * This mixin hides and shows regular full blocks when using X-Ray with - * Sodium installed. + * Sodium installed. Last updated for Sodium 0.6.0-beta.1+mc1.21. */ @Inject(at = @At("HEAD"), method = "shouldDrawSide", cancellable = true) public void shouldDrawSide(BlockState state, BlockView world, BlockPos pos, diff --git a/src/main/java/net/wurstclient/mixin/SodiumFluidRendererMixin.java b/src/main/java/net/wurstclient/mixin/SodiumFluidRendererMixin.java index 86d69c83..fccdc98d 100644 --- a/src/main/java/net/wurstclient/mixin/SodiumFluidRendererMixin.java +++ b/src/main/java/net/wurstclient/mixin/SodiumFluidRendererMixin.java @@ -9,11 +9,13 @@ package net.wurstclient.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.block.BlockState; +import net.minecraft.fluid.Fluid; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockRenderView; @@ -22,26 +24,29 @@ import net.wurstclient.events.ShouldDrawSideListener.ShouldDrawSideEvent; @Pseudo @Mixin(targets = { - // current target - "me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.FluidRenderer", - // < Sodium 0.4.9 - "me.jellysquid.mods.sodium.client.render.pipeline.FluidRenderer"}, + "net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.DefaultFluidRenderer"}, remap = false) public class SodiumFluidRendererMixin { + @Unique + private ThreadLocal mutablePosForExposedCheck = + ThreadLocal.withInitial(BlockPos.Mutable::new); + /** * This mixin hides and shows fluids when using X-Ray with Sodium installed. + * Last updated for Sodium 0.6.0-beta.1+mc1.21. */ - @Inject(at = @At("HEAD"), method = "isSideExposed", cancellable = true) - private void isSideExposed(BlockRenderView world, int x, int y, int z, - Direction dir, float height, CallbackInfoReturnable cir) + @Inject(at = @At("HEAD"), method = "isFluidOccluded", cancellable = true) + private void onIsFluidOccluded(BlockRenderView world, int x, int y, int z, + Direction dir, BlockState state, Fluid fluid, + CallbackInfoReturnable cir) { - BlockPos pos = new BlockPos(x, y, z); - BlockState state = world.getBlockState(pos); + BlockPos.Mutable pos = mutablePosForExposedCheck.get(); + pos.set(x, y, z); ShouldDrawSideEvent event = new ShouldDrawSideEvent(state, pos); EventManager.fire(event); if(event.isRendered() != null) - cir.setReturnValue(event.isRendered()); + cir.setReturnValue(!event.isRendered()); } } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c881efd7..023db277 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -36,7 +36,8 @@ "breaks": { "wi_zoom": "*", "wi-zoom": "*", - "vulkanmod": "*" + "vulkanmod": "*", + "sodium": "<0.6.0-beta.1" }, "custom": { "modmenu": {