diff --git a/src/main/scala/mrtjp/mcframes/registry.scala b/src/main/scala/mrtjp/mcframes/registry.scala index 1d71e0d..6bce603 100644 --- a/src/main/scala/mrtjp/mcframes/registry.scala +++ b/src/main/scala/mrtjp/mcframes/registry.scala @@ -61,6 +61,13 @@ object StickRegistry { } def resolveStick(w: World, pos: BlockCoord, side: Int): Boolean = { + val p2 = pos.copy.offset(side) + val target = getBlock(w, p2) + if ( + target != null && + target.getBlockHardness(w, p2.x, p2.y, p2.z) < 0 + ) return false + def getFrame(pos: BlockCoord): IFrame = { val b = getBlock(w, pos) if (b.isInstanceOf[IFrame]) return b.asInstanceOf[IFrame] @@ -68,10 +75,8 @@ object StickRegistry { if (te != null) return te interactionList.find(_.canInteract(w, pos.x, pos.y, pos.z)).orNull } - val f1 = getFrame(pos) if (f1 != null && f1.stickOut(w, pos.x, pos.y, pos.z, side)) { - val p2 = pos.copy.offset(side) val f2 = getFrame(p2) return f2 == null || f2.stickIn(w, p2.x, p2.y, p2.z, side ^ 1) } diff --git a/src/main/scala/mrtjp/relocation/movement.scala b/src/main/scala/mrtjp/relocation/movement.scala index c351b32..9f8f0c0 100644 --- a/src/main/scala/mrtjp/relocation/movement.scala +++ b/src/main/scala/mrtjp/relocation/movement.scala @@ -126,6 +126,12 @@ object MovementManager2 { c: IMovementCallback ): Boolean = { if (blocks.size > RelocationConfig.moveLimit) return false + if ( + blocks.exists { b => + val block = w.getBlock(b.x, b.y, b.z) + block != null && block.getBlockHardness(w, b.x, b.y, b.z) < 0 + } + ) return false val map = new MHashMap[(Int, Int), MSet[Int]] with MMultiMap[(Int, Int), Int]