@@ -558,6 +558,15 @@ object BreakManager : Manager<BreakRequest>(
558558 info.nullify()
559559 return @forEach
560560 }
561+ info.request.runSafeAutomated {
562+ val breakDelta = cachedState.calcBreakDelta(info.context.blockPos, player.mainHandStack)
563+ val ticksToBreak = 1.0 / breakDelta
564+ val ticksPast = info.breakingTicks - ticksToBreak
565+ if (ticksPast >= 200 ) {
566+ info.nullify()
567+ return @forEach
568+ }
569+ }
561570 info.progressedThisTick = true
562571 info.breakingTicks++
563572 } else info.cancelBreak()
@@ -640,15 +649,15 @@ object BreakManager : Manager<BreakRequest>(
640649 if (! PacketLimitHandler .canSendPackets(1 , PacketType .PlayerAction )) return @safeContext
641650 }
642651 nullify()
643- setBreakingTextureStage(player, world, - 1 )
652+ setBreakingTextureStage(- 1 )
644653 abortBreakPacket()
645654 PacketLimitHandler .sentPackets(1 , PacketType .PlayerAction )
646655 request.onCancel?.invoke(this , context.blockPos)
647656 }
648657 Secondary -> {
649658 if (breakConfig.unsafeCancels) {
650659 type = RedundantSecondary
651- setBreakingTextureStage(player, world, - 1 )
660+ setBreakingTextureStage(- 1 )
652661 request.onCancel?.invoke(this , context.blockPos)
653662 } else abandoned = true
654663 }
@@ -727,7 +736,7 @@ object BreakManager : Manager<BreakRequest>(
727736 }
728737
729738 if (breakConfig.particles) world.spawnBlockBreakingParticle(ctx.blockPos, hitResult.side)
730- if (breakConfig.breakingTexture) info.setBreakingTextureStage(player, world )
739+ if (breakConfig.breakingTexture) info.setBreakingTextureStage()
731740
732741 val swing = breakConfig.swing
733742 if (progress >= info.getBreakThreshold()) {
@@ -826,7 +835,7 @@ object BreakManager : Manager<BreakRequest>(
826835 breaking = true
827836 breakingTicks = 1
828837 soundsCooldown = 0.0f
829- if (breakConfig.breakingTexture) setBreakingTextureStage(player, world )
838+ if (breakConfig.breakingTexture) setBreakingTextureStage()
830839 }
831840 }
832841
0 commit comments