Skip to content

Commit 819f02e

Browse files
committed
update breaking infos if request is updated and save the current request for break callbacks
1 parent 8a06cad commit 819f02e

File tree

1 file changed

+12
-11
lines changed
  • common/src/main/kotlin/com/lambda/interaction/request/breaking

1 file changed

+12
-11
lines changed

common/src/main/kotlin/com/lambda/interaction/request/breaking/BreakManager.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,7 @@ object BreakManager : RequestHandler<BreakRequest>() {
5959

6060
init {
6161
listen<TickEvent.Pre>(Int.MIN_VALUE) {
62-
info("${breakingInfos.count { it != null }}")
63-
64-
updateRequest { true }
62+
val updated = updateRequest(true) { true }
6563

6664
for (it in breakingInfos.reversed()) {
6765
if (interaction.blockBreakingCooldown > 0) {
@@ -76,9 +74,9 @@ object BreakManager : RequestHandler<BreakRequest>() {
7674
}
7775
}
7876

79-
val request = currentRequest ?: return@listen
77+
if (!updated) return@listen
8078

81-
request.contexts.forEach { requestCtx ->
79+
currentRequest?.contexts?.forEach { requestCtx ->
8280
if (requestCtx == null) return@forEach
8381
if (!canAccept(requestCtx)) return@forEach
8482

@@ -92,15 +90,18 @@ object BreakManager : RequestHandler<BreakRequest>() {
9290
}
9391

9492
listen<WorldEvent.BlockUpdate.Server>(alwaysListen = true) { event ->
95-
var broken = false
93+
var breakBlock = false
9694
val info = pendingInteractions
9795
.firstOrNull { it.context.expectedPos == event.pos }
98-
?.also { pendingInteractions.remove(it) }
96+
?.also {
97+
pendingInteractions.remove(it)
98+
if (buildConfig.breakSettings.breakConfirmation == BreakConfirmationMode.AwaitThenBreak)
99+
breakBlock = true
100+
}
99101
?: breakingInfos
100102
.firstOrNull { it?.context?.expectedPos == event.pos }
101103
?.also {
102-
breakBlock(it)
103-
broken = true
104+
breakBlock = true
104105
}
105106
?: return@listen
106107

@@ -110,8 +111,8 @@ object BreakManager : RequestHandler<BreakRequest>() {
110111
this@BreakManager.warn("Update at ${event.pos.toShortString()} was rejected with ${event.newState} instead of ${info.context.targetState}")
111112
return@listen
112113
}
113-
if (buildConfig.breakSettings.breakConfirmation == BreakConfirmationMode.AwaitThenBreak) {
114-
if (!broken) breakBlock(info)
114+
if (breakBlock) {
115+
breakBlock(info)
115116
}
116117
currentRequest?.onBreak()
117118
}

0 commit comments

Comments
 (0)