Skip to content

Commit adfbb46

Browse files
committed
more goofy not working fixes
1 parent 46df050 commit adfbb46

File tree

5 files changed

+253
-158
lines changed

5 files changed

+253
-158
lines changed

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

Lines changed: 25 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,69 +19,67 @@ package com.lambda.interaction.request.breaking
1919

2020
import com.lambda.interaction.construction.context.BreakContext
2121
import com.lambda.interaction.request.ActionInfo
22-
import com.lambda.threading.runSafe
2322
import com.lambda.util.BlockUtils.calcItemBlockBreakingDelta
24-
import com.lambda.util.collections.updatableLazy
23+
import com.lambda.util.OneSetPerTick
2524
import net.minecraft.client.network.ClientPlayerEntity
2625
import net.minecraft.client.network.ClientPlayerInteractionManager
2726
import net.minecraft.client.world.ClientWorld
2827
import net.minecraft.entity.ItemEntity
2928
import net.minecraft.entity.player.PlayerEntity
29+
import net.minecraft.item.ItemStack
3030
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket
3131
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.Action
32-
import net.minecraft.world.WorldView
32+
import net.minecraft.world.BlockView
3333

3434
data class BreakInfo(
3535
override var context: BreakContext,
3636
var type: BreakType,
3737
var request: BreakRequest
3838
) : ActionInfo {
39+
// Delegates
3940
val breakConfig get() = request.build.breaking
4041
override val pendingInteractionsList get() = request.pendingInteractions
4142

42-
var updatedThisTick = true
43-
var progressedThisTick = false
43+
// Pre Processing
44+
var shouldProgress = false
45+
var couldReBreak by OneSetPerTick(false, true)
46+
var shouldSwap by OneSetPerTick(false, true)
47+
var swapStack: ItemStack by OneSetPerTick(ItemStack.EMPTY, true)
48+
var minSwapTicks by OneSetPerTick(0, true)
4449
var serverBreakTicks = 0
4550

46-
var couldReBreak = updatableLazy {
47-
runSafe {
48-
ReBreakManager.couldReBreak(this@BreakInfo, player, world)
49-
} == true
50-
}
51+
// BreakInfo Specific
52+
var updatedThisTick by OneSetPerTick(false, resetAfterTick = true).apply { set(true) }
53+
var updatedPreProcessingThisTick by OneSetPerTick(false, true, true)
54+
var progressedThisTick by OneSetPerTick(false, true, true)
5155

52-
var shouldProgress = false
56+
// Processing
5357
var breaking = false
5458
var abandoned = false
55-
var breakingTicks = 0
56-
var soundsCooldown = 0.0f
57-
59+
var breakingTicks by OneSetPerTick(0, true)
60+
var soundsCooldown by OneSetPerTick(0f, true)
5861
var vanillaInstantBreakable = false
59-
val reBreakable get() = !vanillaInstantBreakable && isPrimary
60-
61-
val isPrimary get() = type == BreakType.Primary
62-
val isSecondary get() = type == BreakType.Secondary
63-
val isRedundant get() = type == BreakType.RedundantSecondary
64-
val isReBreaking get() = type == BreakType.ReBreak
62+
val reBreakable get() = !vanillaInstantBreakable && type == BreakType.Primary
6563

64+
// Post Processing
6665
@Volatile
6766
var broken = false; private set
6867
private var item: ItemEntity? = null
69-
7068
val callbacksCompleted
7169
@Synchronized get() = broken && (request.onItemDrop == null || item != null)
7270

7371
@Synchronized
7472
fun internalOnBreak() {
75-
if (!isReBreaking) broken = true
73+
if (type != BreakType.ReBreak) broken = true
7674
item?.let { item ->
7775
request.onItemDrop?.invoke(item)
7876
}
7977
}
8078

8179
@Synchronized
8280
fun internalOnItemDrop(item: ItemEntity) {
83-
if (!isReBreaking) this.item = item
84-
if (broken || isReBreaking) {
81+
if (type != BreakType.ReBreak) this.item = item
82+
if (broken || type == BreakType.ReBreak) {
8583
request.onItemDrop?.invoke(item)
8684
}
8785
}
@@ -90,25 +88,19 @@ data class BreakInfo(
9088
updatedThisTick = true
9189
this.context = context
9290
request?.let { this.request = it }
93-
if (isRedundant) type = BreakType.Secondary
94-
}
95-
96-
fun tickStats() {
97-
updatedThisTick = false
98-
progressedThisTick = false
91+
if (type == BreakType.RedundantSecondary) type = BreakType.Secondary
9992
}
10093

10194
fun resetCallbacks() {
10295
broken = false
10396
item = null
10497
}
10598

106-
fun shouldSwap(player: ClientPlayerEntity, world: WorldView): Boolean {
107-
if (!shouldProgress) return false
99+
fun shouldSwap(player: ClientPlayerEntity, world: BlockView): Boolean {
108100
val item = player.inventory.getStack(context.hotbarIndex)
109101
val breakDelta = context.cachedState.calcItemBlockBreakingDelta(player, world, context.blockPos, item)
110102
val breakProgress = breakDelta * (breakingTicks + 1)
111-
return if (couldReBreak.value == true)
103+
return if (couldReBreak)
112104
breakConfig.swapMode.isEnabled()
113105
else when (breakConfig.swapMode) {
114106
BreakConfig.SwapMode.None -> false

0 commit comments

Comments
 (0)