Skip to content

Commit 957b55a

Browse files
feat: weigh current path more on ChangeAllToSameColorSolver
1 parent 2043197 commit 957b55a

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/main/kotlin/gg/skytils/skytilsmod/features/impl/dungeons/solvers/terminals/ChangeAllToSameColorSolver.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ package gg.skytils.skytilsmod.features.impl.dungeons.solvers.terminals
2020
import gg.skytils.skytilsmod.Skytils
2121
import gg.skytils.skytilsmod.Skytils.Companion.mc
2222
import gg.skytils.skytilsmod.events.impl.GuiContainerEvent
23-
import gg.skytils.skytilsmod.mixins.transformers.accessors.AccessorGuiContainer
2423
import gg.skytils.skytilsmod.utils.SuperSecretSettings
2524
import gg.skytils.skytilsmod.utils.Utils
2625
import gg.skytils.skytilsmod.utils.graphics.ScreenRenderer
@@ -45,16 +44,22 @@ object ChangeAllToSameColorSolver {
4544
).withIndex().associate { (i, c) ->
4645
c.metadata to i
4746
}
48-
private var mostCommon = -1
47+
private var mostCommon = EnumDyeColor.RED.metadata
4948

5049
@SubscribeEvent
5150
fun onForegroundEvent(event: GuiContainerEvent.ForegroundDrawnEvent) {
5251
if (!Utils.inDungeons || !Skytils.config.changeAllSameColorTerminalSolver || event.container !is ContainerChest || event.chestName != "Change all to same color!") return
5352
val grid = event.container.inventorySlots.filter {
5453
it.inventory == event.container.lowerChestInventory && it.stack?.displayName?.startsWith("§a") == true
5554
}
56-
mostCommon =
57-
ordering.keys.maxByOrNull { c -> grid.count { it.stack?.metadata == c } } ?: EnumDyeColor.RED.metadata
55+
val counts = ordering.keys.associateWith { c -> grid.count { it.stack?.metadata == c } }
56+
val currentPath = counts[mostCommon]!!
57+
val (candidate, maxCount) = counts.maxBy { it.value }
58+
59+
if (maxCount > currentPath) {
60+
mostCommon = candidate
61+
}
62+
5863
val targetIndex = ordering[mostCommon]!!
5964
val mapping = grid.filter { it.stack.metadata != mostCommon }.associateWith { slot ->
6065
val stack = slot.stack

0 commit comments

Comments
 (0)