From 11fbc3cd050f4c7d23704d15839301d33f4c4d7f Mon Sep 17 00:00:00 2001 From: techno-sam <77073745+techno-sam@users.noreply.github.com> Date: Wed, 3 Sep 2025 00:46:07 +0200 Subject: [PATCH] axiom compat fix crash with ChunkRenderOverrider --- build.gradle | 16 +++++++++++++- custom_mappings.tiny | 6 +++++ gradle.properties | 3 ++- libs.versions.toml | 9 ++++++++ libs/.gitignore | 1 + .../crystalline_sky/compat/Mods.java | 3 ++- ...verrider_AxiomChunkOverrideLayerMixin.java | 22 +++++++++++++++++++ .../resources/crystalline_sky.mixins.json | 1 + 8 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 libs/.gitignore create mode 100644 src/main/java/io/github/slimeistdev/crystalline_sky/mixin/client/compat/axiom/ChunkRenderOverrider_AxiomChunkOverrideLayerMixin.java diff --git a/build.gradle b/build.gradle index f445bc8..bc64aa5 100644 --- a/build.gradle +++ b/build.gradle @@ -49,6 +49,9 @@ repositories { includeGroup "com.github.Chocohead" } } + flatDir { + dir("libs") + } } dependencies { @@ -74,7 +77,18 @@ dependencies { modCompileOnly libs.sodium if (!inCI && enable_sodium.toBoolean()) { - modRuntimeOnly libs.sodium + modLocalRuntime libs.sodium + } + + modCompileOnly libs.axiom + + if (!inCI && enable_axiom.toBoolean()) { + modLocalRuntime( + libs.axiom, + libs.axiom.axiomclientapi, + libs.axiom.lattice, + libs.axiom.mixinconstraints + ) } include(implementation(annotationProcessor(libs.mixinextras.get()))) diff --git a/custom_mappings.tiny b/custom_mappings.tiny index f13fee1..541433c 100644 --- a/custom_mappings.tiny +++ b/custom_mappings.tiny @@ -1,4 +1,10 @@ tiny 2 0 official intermediary named +c uh net/minecraft/class_2483 net/minecraft/nbt/AbstractNbtList + m (I)Lvi; c method_10534 get + m (I)Lvi; d method_10536 remove +c uo net/minecraft/class_2499 net/minecraft/nbt/NbtList + m (I)Lvi; method_10534 method_10534 get + m (I)Lvi; method_10536 method_10536 remove c fac net/minecraft/class_3558 net/minecraft/world/chunk/light/ChunkLightProvider f I a field_44729 MAX_LEVEL f I b field_44730 MIN_OPACITY diff --git a/gradle.properties b/gradle.properties index f0d4ebb..aa6874a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ authors=Slimeist contributors= license=EUPL 1.2 or later # Mod Version -modVersion=0.1.0 +modVersion=0.1.1 # Branch Metadata branchName=fabric-1.21.8 compatibleVersions=1.21.8 @@ -24,3 +24,4 @@ compatibleLoaders=fabric # mod compat enable_sodium=false +enable_axiom=false diff --git a/libs.versions.toml b/libs.versions.toml index 123a4db..027ab79 100644 --- a/libs.versions.toml +++ b/libs.versions.toml @@ -10,6 +10,11 @@ mixinextras = "0.5.0" mm = "15.0.0-beta.3" manningham = "v2.3" sodium = "mc1.21.6-0.6.13-fabric" +axiom = "qsljLO3K" +# these have to be manually extracted from the jar and put in the flatDir libs folder (only if the enable_axiom property is true) +axiom-axiomclientapi = "1.0.0" +axiom-lattice = "1.2.12" +axiom-mixinconstraints = "1.0.9" [plugins] loom = { id = "fabric-loom", version.ref = "loom" } @@ -24,3 +29,7 @@ mixinextras = { group = "io.github.llamalad7", name = "mixinextras-fabric", vers mm = { group = "com.terraformersmc", name = "modmenu", version.ref = "mm" } manningham = { group = "com.github.Chocohead", name = "Fabric-ASM", version.ref = "manningham" } sodium = { group = "maven.modrinth", name = "sodium", version.ref = "sodium" } +axiom = { group = "maven.modrinth", name = "axiom", version.ref = "axiom" } +axiom-axiomclientapi = { group = "local", name = "axiomclientapi", version.ref = "axiom-axiomclientapi" } +axiom-lattice = { group = "local", name = "lattice", version.ref = "axiom-lattice" } +axiom-mixinconstraints = { group = "local", name = "mixinconstraints", version.ref = "axiom-mixinconstraints" } diff --git a/libs/.gitignore b/libs/.gitignore new file mode 100644 index 0000000..72e8ffc --- /dev/null +++ b/libs/.gitignore @@ -0,0 +1 @@ +* diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/compat/Mods.java b/src/main/java/io/github/slimeistdev/crystalline_sky/compat/Mods.java index f0022cb..b9df232 100644 --- a/src/main/java/io/github/slimeistdev/crystalline_sky/compat/Mods.java +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/compat/Mods.java @@ -6,7 +6,8 @@ import java.util.Optional; import java.util.function.Supplier; public enum Mods { - SODIUM("sodium"); + SODIUM("sodium"), + AXIOM("axiom"); public final String id; public final boolean isLoaded; diff --git a/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/client/compat/axiom/ChunkRenderOverrider_AxiomChunkOverrideLayerMixin.java b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/client/compat/axiom/ChunkRenderOverrider_AxiomChunkOverrideLayerMixin.java new file mode 100644 index 0000000..36f5030 --- /dev/null +++ b/src/main/java/io/github/slimeistdev/crystalline_sky/mixin/client/compat/axiom/ChunkRenderOverrider_AxiomChunkOverrideLayerMixin.java @@ -0,0 +1,22 @@ +package io.github.slimeistdev.crystalline_sky.mixin.client.compat.axiom; + +import com.moulberry.axiom.render.ChunkRenderOverrider; +import io.github.slimeistdev.crystalline_sky.annotation.mixin.ConditionalMixin; +import io.github.slimeistdev.crystalline_sky.compat.Mods; +import io.github.slimeistdev.crystalline_sky.extenders_cove.BlockRenderLayerExt; +import net.minecraft.client.render.BlockRenderLayer; +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; + +@ConditionalMixin(mods = Mods.AXIOM) +@Mixin(ChunkRenderOverrider.AxiomChunkOverrideLayer.class) +public class ChunkRenderOverrider_AxiomChunkOverrideLayerMixin { + @Inject(method = "fromVanilla", at = @At(value = "NEW", target = "()Ljava/lang/IncompatibleClassChangeError;"), cancellable = true) + private static void unexplodeSky(BlockRenderLayer layer, CallbackInfoReturnable cir) { + if (layer == BlockRenderLayerExt.CRYSTALLINE_SKY_SKY) { + cir.setReturnValue(ChunkRenderOverrider.AxiomChunkOverrideLayer.CUTOUT_MIPPED); + } + } +} diff --git a/src/main/resources/crystalline_sky.mixins.json b/src/main/resources/crystalline_sky.mixins.json index a262149..87e2ba0 100644 --- a/src/main/resources/crystalline_sky.mixins.json +++ b/src/main/resources/crystalline_sky.mixins.json @@ -23,6 +23,7 @@ "client.WorldRenderer_NoSodium_Mixin", "client.WorldRendererAccessor", "client.WorldRendererMixin", + "client.compat.axiom.ChunkRenderOverrider_AxiomChunkOverrideLayerMixin", "client.compat.sodium.DefaultMaterialsMixin", "client.compat.sodium.DefaultTerrainRenderPassesMixin", "client.compat.sodium.ShaderChunkRendererMixin",