@@ -24,11 +24,11 @@ import com.lambda.interaction.construction.result.Dependable
2424import com.lambda.interaction.construction.result.results.BreakResult
2525import com.lambda.interaction.construction.result.results.GenericResult
2626import com.lambda.interaction.construction.simulation.ISimInfo
27- import com.lambda.interaction.construction.simulation.ISimInfo.Companion.simInfo
27+ import com.lambda.interaction.construction.simulation.ISimInfo.Companion.sim
28+ import com.lambda.interaction.construction.simulation.SimBuilder
29+ import com.lambda.interaction.construction.simulation.SimBuilderDsl
2830import com.lambda.interaction.construction.simulation.SimChecker
29- import com.lambda.interaction.construction.simulation.SimCheckerDsl
30- import com.lambda.interaction.construction.simulation.SimInfo
31- import com.lambda.interaction.construction.simulation.checks.PlaceChecker.Companion.checkPlacements
31+ import com.lambda.interaction.construction.simulation.checks.PlaceSim.Companion.simPlacement
3232import com.lambda.interaction.construction.verify.TargetState
3333import com.lambda.interaction.material.ContainerSelection.Companion.selectContainer
3434import com.lambda.interaction.material.StackSelection
@@ -44,7 +44,6 @@ import com.lambda.interaction.request.rotating.visibilty.lookAtBlock
4444import com.lambda.util.BlockUtils.blockState
4545import com.lambda.util.BlockUtils.calcItemBlockBreakingDelta
4646import com.lambda.util.BlockUtils.instantBreakable
47- import com.lambda.util.BlockUtils.isEmpty
4847import com.lambda.util.item.ItemStackUtils.inventoryIndex
4948import com.lambda.util.item.ItemStackUtils.inventoryIndexOrSelected
5049import com.lambda.util.world.raycast.RayCastUtils.blockResult
@@ -67,40 +66,39 @@ import net.minecraft.util.math.BlockPos
6766import net.minecraft.util.math.Direction
6867import kotlin.jvm.optionals.getOrNull
6968
70- class BreakChecker @SimCheckerDsl private constructor(simInfo : SimInfo )
69+ class BreakSim private constructor(simInfo : ISimInfo )
7170 : SimChecker <BreakResult >(), Dependable ,
7271 ISimInfo by simInfo
7372{
7473 override fun asDependent (buildResult : BuildResult ) =
7574 BreakResult .Dependency (pos, buildResult)
7675
7776 companion object {
78- @SimCheckerDsl
77+ @SimBuilderDsl
7978 context(automatedSafeContext: AutomatedSafeContext , dependable: Dependable ? )
80- suspend fun SimInfo. checkBreaks () =
81- BreakChecker (this ).run {
79+ suspend fun SimBuilder. simBreak () =
80+ BreakSim (this ).run {
8281 checkDependent(dependable)
8382 automatedSafeContext.checkBreaks()
8483 }
8584 }
8685
87- private suspend fun AutomatedSafeContext.checkBreaks (): Boolean {
86+ private suspend fun AutomatedSafeContext.checkBreaks () {
8887 if (breakConfig.avoidSupporting) player.supportingBlockPos.getOrNull()?.let { support ->
8988 if (support != pos) return @let
9089 result(BreakResult .PlayerOnTop (pos, state))
91- return true
90+ return
9291 }
9392
9493 if (targetState.getState(pos).isAir && ! state.fluidState.isEmpty && state.isReplaceable) {
9594 result(BreakResult .Submerge (pos, state))
96- return simInfo(pos, state, TargetState .Solid (emptySet()))?.checkPlacements() ? : true
95+ sim(pos, state, TargetState .Solid (emptySet())) { simPlacement() }
96+ return
9797 }
9898
99- if (state.isEmpty) return false
100-
101- if (breakConfig.avoidLiquids && affectsFluids()) return true
99+ if (breakConfig.avoidLiquids && affectsFluids()) return
102100
103- val (swapStack, stackSelection) = getSwapStack() ? : return true
101+ val (swapStack, stackSelection) = getSwapStack() ? : return
104102 val instant = instantBreakable(
105103 state, pos,
106104 if (breakConfig.swapMode.isEnabled()) swapStack else player.mainHandStack,
@@ -124,17 +122,17 @@ class BreakChecker @SimCheckerDsl private constructor(simInfo: SimInfo)
124122 )
125123 result(BreakResult .Break (pos, breakContext))
126124 }
127- return true
125+ return
128126 }
129127
130- val validHits = scanShape(pov, shape, pos, Direction .entries.toSet(), preProcessing) ? : return true
128+ val validHits = scanShape(pov, shape, pos, Direction .entries.toSet(), preProcessing) ? : return
131129
132- val bestHit = buildConfig.pointSelection.select(validHits) ? : return true
130+ val bestHit = buildConfig.pointSelection.select(validHits) ? : return
133131 val target = lookAt(bestHit.targetRotation, 0.001 )
134132 val rotationRequest = RotationRequest (target, this )
135133
136134 val breakContext = BreakContext (
137- bestHit.hit.blockResult ? : return true ,
135+ bestHit.hit.blockResult ? : return ,
138136 rotationRequest,
139137 swapStack.inventoryIndexOrSelected,
140138 stackSelection,
@@ -144,7 +142,7 @@ class BreakChecker @SimCheckerDsl private constructor(simInfo: SimInfo)
144142 )
145143
146144 result(BreakResult .Break (pos, breakContext))
147- return true
145+ return
148146 }
149147
150148 private fun AutomatedSafeContext.getSwapStack (): Pair <ItemStack , StackSelection >? {
@@ -276,7 +274,7 @@ class BreakChecker @SimCheckerDsl private constructor(simInfo: SimInfo)
276274
277275 affectedFluids.forEach { (liquidPos, liquidState) ->
278276 result(BreakResult .Submerge (liquidPos, liquidState))
279- simInfo (liquidPos, liquidState, TargetState .Solid (emptySet()))?.checkPlacements()
277+ sim (liquidPos, liquidState, TargetState .Solid (emptySet())) { simPlacement() }
280278 }
281279 result(BreakResult .BlockedByFluid (pos, state))
282280 return true
0 commit comments