Skip to content

Commit 5bc4afd

Browse files
committed
use main hand stack if nothing else is faster rather than first hotbar slot
1 parent 157e466 commit 5bc4afd

File tree

1 file changed

+17
-10
lines changed
  • common/src/main/kotlin/com/lambda/interaction/construction/simulation

1 file changed

+17
-10
lines changed

common/src/main/kotlin/com/lambda/interaction/construction/simulation/BuildSimulator.kt

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -781,17 +781,24 @@ object BuildSimulator {
781781
return acc
782782
}
783783

784-
val matchingStacks = swapCandidates.associateWith { it.matchingStacks(stackSelection) }
785-
val (_, toolPair) = matchingStacks.mapValues { (_, stacks) ->
786-
stacks.associateWith { state.calcItemBlockBreakingDelta(player, world, pos, it) }
787-
.maxByOrNull { it.value }
788-
?.toPair()
789-
}.entries.maxByOrNull { it.value?.second ?: 0f }?.toPair() ?: return acc
790-
791-
if (toolPair == null) return acc
784+
val swapStack = swapCandidates.map { it.matchingStacks(stackSelection) }
785+
.asSequence()
786+
.flatten()
787+
.let { containerStacks ->
788+
var bestStack = player.mainHandStack
789+
var bestBreakDelta = state.calcItemBlockBreakingDelta(player, world, pos, bestStack)
790+
containerStacks.forEach { stack ->
791+
val breakDelta = state.calcItemBlockBreakingDelta(player, world, pos, stack)
792+
if (breakDelta > bestBreakDelta) {
793+
bestBreakDelta = breakDelta
794+
bestStack = stack
795+
}
796+
}
797+
bestStack
798+
}
792799

793-
breakContext.hotbarIndex = player.hotbar.indexOf(toolPair.first)
794-
breakContext.instantBreak = instantBreakable(state, pos, toolPair.first, breaking.breakThreshold)
800+
breakContext.hotbarIndex = player.hotbar.indexOf(swapStack)
801+
breakContext.instantBreak = instantBreakable(state, pos, swapStack, breaking.breakThreshold)
795802
acc.add(BreakResult.Break(pos, breakContext))
796803
return acc
797804
}

0 commit comments

Comments
 (0)