Skip to content

[Incompatibility: <NeoForge/Fabric/NeoForge & Fabric>]: Sable (Create Aeronautics) #177

@Linaryx

Description

@Linaryx

Minecraft Version

1.21.1

Moonrise Version

0.1.0-beta.15+2eae1b1

Mod Loader

NeoForge

Logs and Crash Reports

[22:59:58] [pool-31-thread-1/FATAL] [mixin/]: Mixin apply for mod sable failed sable.mixins.json:explosion.ExplosionMixin from mod sable -> net.minecraft.world.level.Explosion: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException @At("INVOKE") on net/minecraft/world/level/Explosion::sable$redirectBlockExplosionResistance with priority 1000 cannot inject into net/minecraft/world/level/Explosion::explode()V merged by ca.spottedleaf.moonrise.mixin.collisions.ExplosionMixin with priority 1000 [INJECT_PREPARE Applicator Phase -> sable.mixins.json:explosion.ExplosionMixin from mod sable -> Prepare Injections -> handler$dog000$sable$redirectBlockExplosionResistance(Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;Ljava/util/Set;IIIIDDDDFDDDFLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lcom/llamalad7/mixinextras/sugar/ref/LocalFloatRef;Lcom/llamalad7/mixinextras/sugar/ref/LocalRef;)V -> Prepare ->  -> { target: explode()V }]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @At("INVOKE") on net/minecraft/world/level/Explosion::sable$redirectBlockExplosionResistance with priority 1000 cannot inject into net/minecraft/world/level/Explosion::explode()V merged by ca.spottedleaf.moonrise.mixin.collisions.ExplosionMixin with priority 1000 [INJECT_PREPARE Applicator Phase -> sable.mixins.json:explosion.ExplosionMixin from mod sable -> Prepare Injections -> handler$dog000$sable$redirectBlockExplosionResistance(Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;Ljava/util/Set;IIIIDDDDFDDDFLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lcom/llamalad7/mixinextras/sugar/ref/LocalFloatRef;Lcom/llamalad7/mixinextras/sugar/ref/LocalRef;)V -> Prepare ->  -> { target: explode()V }]
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.injection.code.Injector.findTargetNodes(Injector.java:312) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar#175!/:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.injection.code.Injector.find(Injector.java:248) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar#175!/:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.injection.struct.InjectionInfo.prepare(InjectionInfo.java:475) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar#175!/:0.15.2 mixin.0.8.7] {}
	at TRANSFORMER/mixinextras.neoforge@0.5.3/com.llamalad7.mixinextras.wrapper.InjectorWrapperImpl.prepare(InjectorWrapperImpl.java:56) ~[mixinextras-neoforge-0.5.3.jar#426!/:?] {re:classloading}
	at TRANSFORMER/mixinextras.neoforge@0.5.3/com.llamalad7.mixinextras.sugar.impl.SugarWrapperImpl.prepare(SugarWrapperImpl.java:70) ~[mixinextras-neoforge-0.5.3.jar#426!/:?] {re:classloading}
	at TRANSFORMER/mixinextras.neoforge@0.5.3/com.llamalad7.mixinextras.wrapper.WrapperInjectionInfo.prepare(WrapperInjectionInfo.java:64) ~[mixinextras-neoforge-0.5.3.jar#426!/:?] {re:classloading}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinTargetContext.prepareInjections(MixinTargetContext.java:1407) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.prepareInjections(MixinApplicatorStandard.java:731) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:315) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:246) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:437) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:418) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:250) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.service.modlauncher.MixinTransformationHandler.processClass(MixinTransformationHandler.java:131) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.launch.MixinLaunchPluginLegacy.processClass(MixinLaunchPluginLegacy.java:131) ~[sponge-mixin-0.15.2 mixin.0.8.7.jar:0.15.2 mixin.0.8.7] {}
	at MC-BOOTSTRAP/cpw.mods.modlauncher@11.0.5/cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:156) ~[modlauncher-11.0.5.jar:11.0.5 main.901c6ea8] {}
	at MC-BOOTSTRAP/cpw.mods.modlauncher@11.0.5/cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:94) ~[modlauncher-11.0.5.jar:?] {}
	at MC-BOOTSTRAP/cpw.mods.modlauncher@11.0.5/cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-11.0.5.jar:?] {}
	at MC-BOOTSTRAP/cpw.mods.modlauncher@11.0.5/cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:57) ~[modlauncher-11.0.5.jar:?] {}
	at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:190) ~[securejarhandler-3.0.8.jar:?] {}
	at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.lambda$findClass$20(ModuleClassLoader.java:298) ~[securejarhandler-3.0.8.jar:?] {}
	at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:311) ~[securejarhandler-3.0.8.jar:?] {}
	at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:298) ~[securejarhandler-3.0.8.jar:?] {}
	at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:214) ~[securejarhandler-3.0.8.jar:?] {}
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?] {}
	at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?] {re:mixin}
	at java.base/java.lang.Class.privateGetDeclaredMethods(Unknown Source) ~[?:?] {re:mixin}
	at java.base/java.lang.Class.getMethodsRecursive(Unknown Source) ~[?:?] {re:mixin}
	at java.base/java.lang.Class.getMethodsRecursive(Unknown Source) ~[?:?] {re:mixin}
	at java.base/java.lang.Class.getMethod0(Unknown Source) ~[?:?] {re:mixin}
	at java.base/java.lang.Class.getMethod(Unknown Source) ~[?:?] {re:mixin}
	at TRANSFORMER/neoforge@21.1.227/net.neoforged.neoforge.common.CommonHooks.overridesEqualsAndHashCode(CommonHooks.java:1500) ~[neoforge-21.1.227-universal.jar#245!/:?] {re:classloading}
	at TRANSFORMER/neoforge@21.1.227/net.neoforged.neoforge.common.CommonHooks.markComponentClassAsValid(CommonHooks.java:1439) ~[neoforge-21.1.227-universal.jar#245!/:?] {re:classloading}
	at TRANSFORMER/neoforge@21.1.227/net.neoforged.neoforge.common.CommonHooks.<clinit>(CommonHooks.java:1448) ~[neoforge-21.1.227-universal.jar#245!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.item.Item$Properties.component(Item.java:437) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,re:classloading,pl:mixin:APP:fabric-item-api-v1.mixins.json:ItemSettingsMixin from mod fabric_item_api_v1,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.item.Item$Properties.fireResistant(Item.java:419) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,re:classloading,pl:mixin:APP:fabric-item-api-v1.mixins.json:ItemSettingsMixin from mod fabric_item_api_v1,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.item.Items.<clinit>(Items.java:118) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.LightBlock.getShape(LightBlock.java:64) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:classloading}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.getShape(BlockBehaviour.java:650) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.iris.json:MixinBlockStateBehavior from mod iris,pl:mixin:APP:moonrise.mixins.json:collisions.BlockStateBaseMixin from mod moonrise,pl:mixin:APP:moonrise.mixins.json:starlight.blockstate.BlockStateBaseMixin from mod moonrise,pl:mixin:APP:copycats-common.mixins.json:foundation.copycat.BlockStateBaseMixin from mod copycats,pl:mixin:APP:moreculling.mixins.json:blockstates.BlockStateBase_moreMixin from mod moreculling,pl:mixin:APP:moreculling.mixins.json:models.cullshape.BlockStateBase_cullShapeMixin from mod moreculling,pl:mixin:APP:ferritecore.blockstatecache.mixin.json:BlockStateBaseMixin from mod ferritecore,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.getShape(BlockBehaviour.java:646) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.iris.json:MixinBlockStateBehavior from mod iris,pl:mixin:APP:moonrise.mixins.json:collisions.BlockStateBaseMixin from mod moonrise,pl:mixin:APP:moonrise.mixins.json:starlight.blockstate.BlockStateBaseMixin from mod moonrise,pl:mixin:APP:copycats-common.mixins.json:foundation.copycat.BlockStateBaseMixin from mod copycats,pl:mixin:APP:moreculling.mixins.json:blockstates.BlockStateBase_moreMixin from mod moreculling,pl:mixin:APP:moreculling.mixins.json:models.cullshape.BlockStateBase_cullShapeMixin from mod moreculling,pl:mixin:APP:ferritecore.blockstatecache.mixin.json:BlockStateBaseMixin from mod ferritecore,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.state.BlockBehaviour.getCollisionShape(BlockBehaviour.java:322) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:simulated.mixins.json:accessor.BlockBehaviourAccessor from mod simulated,pl:mixin:APP:fabric-object-builder-v1.mixins.json:AbstractBlockAccessor from mod fabric_object_builder_api_v1,pl:mixin:APP:create.mixins.json:accessor.BlockBehaviourAccessor from mod create,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase$Cache.<init>(BlockBehaviour.java:920) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:copycats-common.mixins.json:foundation.copycat.BlockStateBaseCacheMixin from mod copycats,pl:mixin:APP:ferritecore.blockstatecache.mixin.json:BlockStateCacheMixin from mod ferritecore,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.initCache(BlockBehaviour.java:488) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:mixins.iris.json:MixinBlockStateBehavior from mod iris,pl:mixin:APP:moonrise.mixins.json:collisions.BlockStateBaseMixin from mod moonrise,pl:mixin:APP:moonrise.mixins.json:starlight.blockstate.BlockStateBaseMixin from mod moonrise,pl:mixin:APP:copycats-common.mixins.json:foundation.copycat.BlockStateBaseMixin from mod copycats,pl:mixin:APP:moreculling.mixins.json:blockstates.BlockStateBase_moreMixin from mod moreculling,pl:mixin:APP:moreculling.mixins.json:models.cullshape.BlockStateBase_cullShapeMixin from mod moreculling,pl:mixin:APP:ferritecore.blockstatecache.mixin.json:BlockStateBaseMixin from mod ferritecore,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.Blocks.<clinit>(Blocks.java:7811) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.world.level.block.FireBlock.bootStrap(FireBlock.java:342) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:fabric-content-registries-v0.mixins.json:FireBlockMixin from mod fabric_content_registries_v0,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.server.Bootstrap.bootStrap(Bootstrap.java:45) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,re:classloading,pl:mixin:APP:yumi_mc_core.mixins.json:BootstrapMixin from mod yumi_mc_core,pl:mixin:A}
	at TRANSFORMER/minecraft@1.21.1/net.minecraft.client.main.Main.lambda$main$0(Main.java:114) ~[client-1.21.1-20240808.144430-srg.jar#244!/:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:veil.debug.mixins.json:client.DebugMainMixin from mod veil,pl:mixin:A,pl:runtimedistcleaner:A}
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:?] {}
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?] {}
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?] {}
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?] {}
	at java.base/java.lang.Thread.run(Unknown Source) [?:?] {re:mixin}

Additional Context

Description

There is a startup crash caused by a mod incompatibility between Moonrise and Sable on NeoForge 1.21.1.

The exact incompatibility point appears to be:

  • Vanilla target method: net.minecraft.world.level.Explosion::explode()V
  • Sable mixin: sable.mixins.json:explosion.ExplosionMixin
  • Moonrise mixin already merged into the same method: ca.spottedleaf.moonrise.mixin.collisions.ExplosionMixin

From the crash log, Sable fails to inject because Moonrise has already merged/modified the same target method.

This looks like a direct mixin conflict on explosion/collision logic.

Versions

  • Minecraft: 1.21.1
  • NeoForge: 21.1.227
  • Moonrise: 0.1.0-beta.15+2eae1b1
  • Moonrise Compats: 0.1.0-beta.15+2eae1b1.5
  • Sable: 1.1.3

Crash log

[22Apr2026 21:10:27.514] [main/WARN] [mixin/]: Method overwrite conflict for isUnobstructed in sable.mixins.json:block_placement.EntityGetterMixin from mod sable, previously written by ca.spottedleaf.moonrise.mixin.collisions.EntityGetterMixin. Skipping method.

[22Apr2026 21:10:32.178] [pool-31-thread-1/FATAL] [mixin/]: Mixin apply for mod sable failed sable.mixins.json:explosion.ExplosionMixin from mod sable -> net.minecraft.world.level.Explosion: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException @At("INVOKE") on net/minecraft/world/level/Explosion::sable$redirectBlockExplosionResistance with priority 1000 cannot inject into net/minecraft/world/level/Explosion::explode()V merged by ca.spottedleaf.moonrise.mixin.collisions.ExplosionMixin with priority 1000 [INJECT_PREPARE Applicator Phase -> sable.mixins.json:explosion.ExplosionMixin from mod sable -> Prepare Injections -> handler$dog000$sable$redirectBlockExplosionResistance(Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;Ljava/util/Set;IIIIDDDDFDDDFLnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;Lcom/llamalad7/mixinextras/sugar/ref/LocalFloatRef;Lcom/llamalad7/mixinextras/sugar/ref/LocalRef;)V -> Prepare ->  -> { target: explode()V }]

org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @At("INVOKE") on net/minecraft/world/level/Explosion::sable$redirectBlockExplosionResistance with priority 1000 cannot inject into net/minecraft/world/level/Explosion::explode()V merged by ca.spottedleaf.moonrise.mixin.collisions.ExplosionMixin with priority 1000

Notes

Moonrise is being used for low-level world/collision/threading optimizations, while Sable is used for physical block/sub-level simulation.

Both mods seem to touch the same explosion/collision code path, and the crash happens during mixin application before the game fully starts.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions