Skip to content

Commit 61227a7

Browse files
committed
fix issues with breaking vanilla instant-breakable blocks alongside slower breaking blocks
1 parent f70af5e commit 61227a7

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

src/main/kotlin/com/lambda/interaction/managers/breaking/BreakManager.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ object BreakManager : Manager<BreakRequest>(
153153
private val rotated get() = rotationRequest?.done != false
154154

155155
private var breakDelay = 0
156+
private var oldGrimBreakDelay = 0
157+
var bypassingOldGrimBreakDelay = false
156158
var breaksThisTick = 0
157159
private var maxBreaksThisTick = 0
158160

@@ -173,6 +175,7 @@ object BreakManager : Manager<BreakRequest>(
173175
if (primaryBreak?.breaking == false) primaryBreak = null
174176
breakInfos.forEach { it?.tickChecks() }
175177
if (breakDelay > 0) breakDelay--
178+
if (oldGrimBreakDelay > 0) oldGrimBreakDelay--
176179
activeRequest = null
177180
breaks = mutableListOf()
178181
breaksThisTick = 0
@@ -226,6 +229,7 @@ object BreakManager : Manager<BreakRequest>(
226229
primaryBreak = null
227230
secondaryBreak = null
228231
breakDelay = 0
232+
oldGrimBreakDelay = 0
229233
}
230234

231235
immediateRenderer("BreakManager Immediate Renderer") {
@@ -461,6 +465,7 @@ object BreakManager : Manager<BreakRequest>(
461465
request.runSafeAutomated {
462466
if (tickStage !in request.breakConfig.tickStageMask) return false
463467
if (breakDelay > 0) return false
468+
if (breakConfig.breakMode == BreakMode.OldGrim && !bypassingOldGrimBreakDelay && oldGrimBreakDelay > 0) return false
464469
if (breaksThisTick >= maxBreaksThisTick) return false
465470

466471
breaks.forEach { ctx ->
@@ -517,6 +522,7 @@ object BreakManager : Manager<BreakRequest>(
517522
primary.apply {
518523
type = Secondary
519524
stopBreakPacket()
525+
if (breakConfig.breakMode == BreakMode.OldGrim) oldGrimBreakDelay = 6
520526
}
521527
PacketLimitHandler.sentPackets(1, PacketType.PlayerAction)
522528
return@let
@@ -617,7 +623,11 @@ object BreakManager : Manager<BreakRequest>(
617623
}
618624
}
619625
breaksThisTick++
620-
if (info.type == Primary && !info.vanillaInstantBreakable) breakDelay = info.getBreakDelay()
626+
if (info.type == Primary && !info.vanillaInstantBreakable) {
627+
breakDelay = breakConfig.breakDelay
628+
if (breakConfig.breakMode == BreakMode.OldGrim) oldGrimBreakDelay = 6
629+
bypassingOldGrimBreakDelay = info.bypassedDelay
630+
}
621631
info.nullify()
622632
}
623633

@@ -825,8 +835,10 @@ object BreakManager : Manager<BreakRequest>(
825835

826836
var packetCount = 1
827837
info.vanillaInstantBreakable = progress >= 1
828-
val isGrim = breakConfig.breakMode == BreakMode.Grim
829-
val oldGrim = breakConfig.breakMode == BreakMode.OldGrim && !info.vanillaInstantBreakable
838+
val breakMode = breakConfig.breakMode
839+
if (breakMode == BreakMode.OldGrim && info.vanillaInstantBreakable && oldGrimBreakDelay > 0) return false
840+
val isGrim = breakMode == BreakMode.Grim
841+
val oldGrim = breakMode == BreakMode.OldGrim && !info.vanillaInstantBreakable
830842
val requiresSecondStop = instantBreakable && !info.vanillaInstantBreakable
831843

832844
if (isGrim) packetCount++

0 commit comments

Comments
 (0)