Skip to content

Commit 6629d7b

Browse files
committed
timeout redundant secondary breaks after 10 seconds if they should have already been broken
1 parent ac20dff commit 6629d7b

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ import com.lambda.interaction.managers.breaking.BreakManager.calcBreakDelta
2828
import com.lambda.threading.runSafeAutomated
2929
import com.lambda.util.Describable
3030
import com.lambda.util.NamedEnum
31-
import net.minecraft.client.network.ClientPlayerEntity
32-
import net.minecraft.client.world.ClientWorld
3331
import net.minecraft.entity.ItemEntity
3432
import net.minecraft.item.ItemStack
3533
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket
@@ -118,10 +116,8 @@ data class BreakInfo(
118116

119117
context(safeContext: SafeContext)
120118
fun setBreakingTextureStage(
121-
player: ClientPlayerEntity,
122-
world: ClientWorld,
123119
stage: Int = getBreakTextureProgress()
124-
) = world.setBlockBreakingInfo(player.id, context.blockPos, stage)
120+
) = safeContext.world.setBlockBreakingInfo(safeContext.player.id, context.blockPos, stage)
125121

126122
context(safeContext: SafeContext)
127123
private fun getBreakTextureProgress(): Int = with(safeContext) {

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,6 @@ object BrokenBlockHandler : PostActionHandler<BreakInfo>() {
160160
val setState = world.setBlockState(ctx.blockPos, fluidState.blockState, 11)
161161
if (setState) block.onBroken(world, ctx.blockPos, ctx.cachedState)
162162

163-
if (info.breakConfig.breakingTexture) info.setBreakingTextureStage(player, world, -1)
163+
if (info.breakConfig.breakingTexture) info.setBreakingTextureStage(-1)
164164
}
165165
}

0 commit comments

Comments
 (0)