From 5144192c7e67ac1689522fee1ad4cacf87d41e4e Mon Sep 17 00:00:00 2001 From: Nick Friday Date: Wed, 20 May 2026 14:47:20 +0300 Subject: [PATCH] Fix Create mechanical roller only paving into air Skip the block-breaking distance guard for RollerMovementBehaviour. The check measured from the kinetic block center while Create breaks and paves from the active area offset, so breaking was cancelled every tick before blocks could be cleared for replacement. Co-authored-by: Cursor --- .../BlockBreakingMovementBehaviourMixin.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/neoforge/src/main/java/dev/ryanhcode/sable/neoforge/mixin/compatibility/create/behaviour_compatibility/block_breaking_behaviour/BlockBreakingMovementBehaviourMixin.java b/neoforge/src/main/java/dev/ryanhcode/sable/neoforge/mixin/compatibility/create/behaviour_compatibility/block_breaking_behaviour/BlockBreakingMovementBehaviourMixin.java index 321f9bc7..a19f0d9f 100644 --- a/neoforge/src/main/java/dev/ryanhcode/sable/neoforge/mixin/compatibility/create/behaviour_compatibility/block_breaking_behaviour/BlockBreakingMovementBehaviourMixin.java +++ b/neoforge/src/main/java/dev/ryanhcode/sable/neoforge/mixin/compatibility/create/behaviour_compatibility/block_breaking_behaviour/BlockBreakingMovementBehaviourMixin.java @@ -3,6 +3,7 @@ import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.simibubi.create.api.behaviour.movement.MovementBehaviour; +import com.simibubi.create.content.contraptions.actors.roller.RollerMovementBehaviour; import com.simibubi.create.content.contraptions.behaviour.MovementContext; import com.simibubi.create.content.kinetics.base.BlockBreakingMovementBehaviour; import dev.ryanhcode.sable.ActiveSableCompanion; @@ -54,6 +55,10 @@ public abstract class BlockBreakingMovementBehaviourMixin implements MovementBeh @Inject(method = "tick", at = @At("HEAD"), cancellable = true) public void sable$testBreakingPosDist(final MovementContext context, final CallbackInfo ci) { + if ((Object) this instanceof RollerMovementBehaviour) { + return; + } + final CompoundTag data = context.data; if (data.contains("BreakingPos") || data.contains("LastPos")) { final BlockPos blockPos = NbtUtils.readBlockPos(data, "BreakingPos").orElseGet(() -> NbtUtils.readBlockPos(data, "LastPos").orElse(null));