diff --git a/build.gradle b/build.gradle index d087a6e..a6769a8 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,8 @@ dependencies { modCompileOnly("com.terraformersmc:modmenu:${project.modmenu_version}") modLocalRuntime("com.terraformersmc:modmenu:${project.modmenu_version}") + + modCompileOnly("maven.modrinth:iris:1.10.4+1.21.11-fabric") } processResources { diff --git a/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java b/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java new file mode 100644 index 0000000..d4c532d --- /dev/null +++ b/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java @@ -0,0 +1,21 @@ +package tobinio.bettersnowcoverage.compat; + +import net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer; +import net.irisshaders.iris.shaderpack.materialmap.WorldRenderingSettings; +import net.irisshaders.iris.vertices.sodium.terrain.VertexEncoderInterface; + +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; + +/** + * Created: 22.01.26 + * + * @author Tobias Frischmann + */ +public class Iris { + public static void setBlockData(BlockRenderer blockRenderer, BlockState blockState, BlockPos blockPos) { + if (WorldRenderingSettings.INSTANCE.getBlockStateIds() != null) { + ((VertexEncoderInterface) blockRenderer).beginBlock(WorldRenderingSettings.INSTANCE.getBlockStateIds().getOrDefault(blockState, -1), (byte) 0, (byte) blockState.getLuminance(), blockPos.getX(), blockPos.getY(), blockPos.getZ()); + } + } +} diff --git a/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java b/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java index 4cc7f29..35be6fb 100644 --- a/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java +++ b/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java @@ -8,6 +8,8 @@ import net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRend import net.caffeinemc.mods.sodium.client.render.chunk.compile.tasks.ChunkBuilderMeshingTask; import net.caffeinemc.mods.sodium.client.util.task.CancellationToken; import net.caffeinemc.mods.sodium.client.world.LevelSlice; +import net.fabricmc.loader.api.FabricLoader; + import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.math.BlockPos; @@ -16,6 +18,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import tobinio.bettersnowcoverage.BetterSnowChecker; +import tobinio.bettersnowcoverage.compat.Iris; /** * Created: 31.07.24 @@ -38,9 +41,16 @@ public class ChunkBuilderMeshingTaskMixin { if (snowState == BetterSnowChecker.SnowState.WITH_LAYER) { BlockState snow = Blocks.SNOW.getDefaultState(); - var model = cache.getBlockModels().getModel(snow); - cache.getBlockRenderer().renderModel(model, snow, pos.up(), modelOffset.up()); + var blockRenderer = cache.getBlockRenderer(); + var blockPos = pos.up(); + + if (FabricLoader.getInstance().isModLoaded("iris")) { + Iris.setBlockData(blockRenderer, snow, blockPos); + } + + var model = cache.getBlockModels().getModel(snow); + blockRenderer.renderModel(model, snow, blockPos, modelOffset.up()); } } }