From 176205fb443f86a6e8015e8a211f73f4984eca33 Mon Sep 17 00:00:00 2001 From: tobinio Date: Wed, 31 Jul 2024 16:53:36 +0200 Subject: [PATCH] fabric config & indium compatability --- build.gradle | 4 +- gradle.properties | 2 +- .../sodium/BlockRenderContextAccessor.java | 19 +++++++ .../mixin/client/sodium/BlockRenderMixin.java | 43 --------------- .../client/sodium/BlockRendererAccessor.java | 29 ----------- .../sodium/ChunkBuilderMeshingTaskMixin.java | 52 +++++++++++++++++++ .../dense-flowers.client.mixins.json | 6 +-- src/main/resources/fabric.mod.json | 17 +++--- 8 files changed, 86 insertions(+), 86 deletions(-) create mode 100644 src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderContextAccessor.java delete mode 100644 src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderMixin.java delete mode 100644 src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRendererAccessor.java create mode 100644 src/client/java/tobinio/denseflowers/mixin/client/sodium/ChunkBuilderMeshingTaskMixin.java diff --git a/build.gradle b/build.gradle index 92d4cc6..c5e30e4 100644 --- a/build.gradle +++ b/build.gradle @@ -52,9 +52,11 @@ dependencies { processResources { inputs.property "version", project.version + inputs.property "loader_version", project.loader_version filesMatching("fabric.mod.json") { - expand "version": project.version + expand "version": project.version, + "loader_version": project.loader_version } } diff --git a/gradle.properties b/gradle.properties index b1b3f0c..bae54d3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.21+build.9 loader_version=0.15.11 # Mod Properties -mod_version=1.0.0 +mod_version=0.1.0+mc1.21.0 maven_group=tobinio.denseflowers archives_base_name=dense-flowers diff --git a/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderContextAccessor.java b/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderContextAccessor.java new file mode 100644 index 0000000..d964133 --- /dev/null +++ b/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderContextAccessor.java @@ -0,0 +1,19 @@ +package tobinio.denseflowers.mixin.client.sodium; + +import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderContext; +import org.joml.Vector3f; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +/** + * Created: 31.07.24 + * + * @author Tobias Frischmann + */ +@Mixin (BlockRenderContext.class) +public interface BlockRenderContextAccessor { + @Mutable + @Accessor (remap = false) + void setOrigin(Vector3f origin); +} diff --git a/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderMixin.java b/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderMixin.java deleted file mode 100644 index b0fe74c..0000000 --- a/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRenderMixin.java +++ /dev/null @@ -1,43 +0,0 @@ -package tobinio.denseflowers.mixin.client.sodium; - -import com.llamalad7.mixinextras.sugar.Local; -import me.jellysquid.mods.sodium.client.model.color.ColorProvider; -import me.jellysquid.mods.sodium.client.model.light.LightPipeline; -import me.jellysquid.mods.sodium.client.render.chunk.compile.ChunkBuildBuffers; -import me.jellysquid.mods.sodium.client.render.chunk.compile.buffers.ChunkModelBuilder; -import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderContext; -import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer; -import me.jellysquid.mods.sodium.client.render.chunk.terrain.material.Material; -import net.minecraft.block.BlockState; -import net.minecraft.block.FlowerBlock; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.util.math.Vec3d; -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.CallbackInfo; -import tobinio.denseflowers.OffsetGenerator; - -import java.util.List; - -/** - * Created: 31.07.24 - * - * @author Tobias Frischmann - */ -@Mixin (BlockRenderer.class) -public class BlockRenderMixin { - @Inject (method = "renderModel", at = @At (value = "INVOKE", target = "Lme/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer;renderQuadList(Lme/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderContext;Lme/jellysquid/mods/sodium/client/render/chunk/terrain/material/Material;Lme/jellysquid/mods/sodium/client/model/light/LightPipeline;Lme/jellysquid/mods/sodium/client/model/color/ColorProvider;Lnet/minecraft/util/math/Vec3d;Lme/jellysquid/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuilder;Ljava/util/List;Lnet/minecraft/util/math/Direction;)V", ordinal = 1)) - private void render(BlockRenderContext ctx, ChunkBuildBuffers buffers, CallbackInfo ci, @Local Material material, - @Local LightPipeline lighter, @Local ColorProvider colorizer, - @Local ChunkModelBuilder meshBuilder, @Local List all) { - - if (ctx.state().getBlock() instanceof FlowerBlock) { - var renderer = (BlockRendererAccessor) this; - - for (Vec3d flowerOffset : OffsetGenerator.getFlowerOffsets(ctx.state(), ctx.world(), ctx.pos())) { - renderer.callRenderQuadList(ctx, material, lighter, colorizer, flowerOffset, meshBuilder, all, null); - } - } - } -} diff --git a/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRendererAccessor.java b/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRendererAccessor.java deleted file mode 100644 index 0d98b6b..0000000 --- a/src/client/java/tobinio/denseflowers/mixin/client/sodium/BlockRendererAccessor.java +++ /dev/null @@ -1,29 +0,0 @@ -package tobinio.denseflowers.mixin.client.sodium; - -import me.jellysquid.mods.sodium.client.model.color.ColorProvider; -import me.jellysquid.mods.sodium.client.model.light.LightPipeline; -import me.jellysquid.mods.sodium.client.render.chunk.compile.buffers.ChunkModelBuilder; -import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderContext; -import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer; -import me.jellysquid.mods.sodium.client.render.chunk.terrain.material.Material; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.Vec3d; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.List; - -/** - * Created: 31.07.24 - * - * @author Tobias Frischmann - */ -@Mixin (BlockRenderer.class) -public interface BlockRendererAccessor { - @Invoker - void callRenderQuadList(BlockRenderContext ctx, Material material, LightPipeline lighter, - ColorProvider colorizer, Vec3d offset, - ChunkModelBuilder builder, List quads, Direction cullFace); -} diff --git a/src/client/java/tobinio/denseflowers/mixin/client/sodium/ChunkBuilderMeshingTaskMixin.java b/src/client/java/tobinio/denseflowers/mixin/client/sodium/ChunkBuilderMeshingTaskMixin.java new file mode 100644 index 0000000..c77fde0 --- /dev/null +++ b/src/client/java/tobinio/denseflowers/mixin/client/sodium/ChunkBuilderMeshingTaskMixin.java @@ -0,0 +1,52 @@ +package tobinio.denseflowers.mixin.client.sodium; + +import com.llamalad7.mixinextras.sugar.Local; +import me.jellysquid.mods.sodium.client.render.chunk.compile.ChunkBuildBuffers; +import me.jellysquid.mods.sodium.client.render.chunk.compile.ChunkBuildContext; +import me.jellysquid.mods.sodium.client.render.chunk.compile.ChunkBuildOutput; +import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderCache; +import me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderContext; +import me.jellysquid.mods.sodium.client.render.chunk.compile.tasks.ChunkBuilderMeshingTask; +import me.jellysquid.mods.sodium.client.util.task.CancellationToken; +import net.minecraft.block.FlowerBlock; +import net.minecraft.util.math.Vec3d; +import org.joml.Vector3f; +import org.joml.Vector3fc; +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; +import tobinio.denseflowers.OffsetGenerator; + +/** + * Created: 31.07.24 + * + * @author Tobias Frischmann + */ +@Mixin (value = ChunkBuilderMeshingTask.class, priority = 995) +public class ChunkBuilderMeshingTaskMixin { + @Inject (method = "execute(Lme/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildContext;Lme/jellysquid/mods/sodium/client/util/task/CancellationToken;)Lme/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildOutput;", at = @At (value = "INVOKE", target = "Lme/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderer;renderModel(Lme/jellysquid/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderContext;Lme/jellysquid/mods/sodium/client/render/chunk/compile/ChunkBuildBuffers;)V", remap = false), remap = false) + private void execute(ChunkBuildContext buildContext, CancellationToken cancellationToken, + CallbackInfoReturnable cir, @Local BlockRenderContext ctx, + @Local ChunkBuildBuffers buffers, @Local BlockRenderCache cache) { + if (ctx.state().getBlock() instanceof FlowerBlock) { + Vector3fc origin = ctx.origin(); + var baseOffset = ctx.state().getModelOffset(ctx.world(), ctx.pos()); + + var context = (BlockRenderContextAccessor) ctx; + + for (Vec3d flowerOffset : OffsetGenerator.getFlowerOffsets(ctx.state(), ctx.world(), ctx.pos())) { + + var newOrigen = new Vector3f(origin); + newOrigen.sub((float) baseOffset.getX(), (float) baseOffset.getY(), (float) baseOffset.getZ()); + newOrigen.add((float) flowerOffset.getX(), (float) flowerOffset.getY(), (float) flowerOffset.getZ()); + + context.setOrigin(newOrigen); + + cache.getBlockRenderer().renderModel((BlockRenderContext) context, buffers); + } + + context.setOrigin((Vector3f) origin); + } + } +} diff --git a/src/client/resources/dense-flowers.client.mixins.json b/src/client/resources/dense-flowers.client.mixins.json index 656669b..5c88318 100644 --- a/src/client/resources/dense-flowers.client.mixins.json +++ b/src/client/resources/dense-flowers.client.mixins.json @@ -3,14 +3,14 @@ "package": "tobinio.denseflowers.mixin.client", "compatibilityLevel": "JAVA_21", "client": [ + "AbstractBlockAccessor", "SectionBuilderMixin", - "sodium.BlockRendererAccessor", - "sodium.BlockRenderMixin" + "sodium.ChunkBuilderMeshingTaskMixin" ], "injectors": { "defaultRequire": 1 }, "mixins": [ - "AbstractBlockAccessor" + "sodium.BlockRenderContextAccessor" ] } \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 1e4e715..f38d98f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -3,15 +3,17 @@ "id": "dense-flowers", "version": "${version}", "name": "Dense Flowers", - "description": "This is an example description! Tell everyone what your mod is about!", + "description": "Render Flowers more dense", "authors": [ - "Me!" + "ToBinio" ], "contact": { - "homepage": "https://fabricmc.net/", - "sources": "https://github.com/FabricMC/fabric-example-mod" + "repo": "https://github.com/toBinio/dense-flowers", + "homepage": "https://github.com/toBinio/dense-flowers", + "issues": "https://github.com/toBinio/dense-flowers/issues", + "sources": "https://github.com/toBinio/dense-flowers" }, - "license": "CC0-1.0", + "license": "MIT", "icon": "assets/dense-flowers/icon.png", "environment": "*", "entrypoints": { @@ -30,12 +32,9 @@ } ], "depends": { - "fabricloader": ">=0.15.11", + "fabricloader": ">=${loader_version}", "minecraft": "~1.21", "java": ">=21", "fabric-api": "*" - }, - "suggests": { - "another-mod": "*" } } \ No newline at end of file -- 2.51.2