@@ -12,7 +12,7 @@ import HighwayTools.multiBuilding
1212import HighwayTools.saveFood
1313import HighwayTools.saveTools
1414import HighwayTools.storageManagement
15- import com.lambda.client.commons.extension.ceilToInt
15+ import HighwayTools.width
1616import com.lambda.client.event.SafeClientEvent
1717import com.lambda.client.manager.managers.PlayerInventoryManager
1818import com.lambda.client.util.items.countItem
@@ -33,6 +33,7 @@ import net.minecraft.item.ItemFood
3333import net.minecraft.item.ItemPickaxe
3434import net.minecraft.util.math.AxisAlignedBB
3535import net.minecraft.util.math.BlockPos
36+ import net.minecraft.util.math.Vec3d
3637import trombone.blueprint.BlueprintGenerator.blueprint
3738import trombone.blueprint.BlueprintGenerator.generateBluePrint
3839import trombone.blueprint.BlueprintGenerator.isInsideBlueprintBuild
@@ -86,7 +87,7 @@ object TaskManager {
8687
8788 when {
8889 /* start padding */
89- shouldBeSpared (blockPos) -> { /* Ignore task */ }
90+ startPadding (blockPos) -> { /* Ignore task */ }
9091
9192 /* out of reach */
9293 eyePos.distanceTo(blockPos.toVec3dCenter()) >= maxReach + 1 -> { /* Ignore task */ }
@@ -164,9 +165,6 @@ object TaskManager {
164165
165166 fun SafeClientEvent.runTasks () {
166167 when {
167- /* Wait for PIM to finish all inventory transactions */
168- ! PlayerInventoryManager .isDone() -> {}
169-
170168 /* Finish the container task first */
171169 containerTask.taskState != TaskState .DONE -> {
172170 containerTask.updateTask(this )
@@ -293,14 +291,14 @@ object TaskManager {
293291 return false
294292 }
295293
296- // ToDo: Fix padding for diagonal
297- private fun shouldBeSpared ( blockPos : BlockPos ) =
298- startingBlockPos.add(
299- startingDirection
300- . clockwise(4 )
301- .directionVec
302- .multiply((maxReach * 2 ).ceilToInt() - 1 )
303- ).distanceTo(blockPos) < maxReach * 2
294+ private fun startPadding ( c : BlockPos ) = isBehindPos(startingBlockPos.add(startingDirection.directionVec), c)
295+
296+ fun isBehindPos ( origin : BlockPos , check : BlockPos ): Boolean {
297+ val a = origin.add( startingDirection.counterClockwise( 2 ).directionVec.multiply(width))
298+ val b = origin.add(startingDirection. clockwise(2 ).directionVec.multiply(width) )
299+
300+ return ((b.x - a.x) * (check.z - a.z) - (b.z - a.z) * (check.x - a.x)) > 0
301+ }
304302
305303 private fun shouldBeIgnored (blockPos : BlockPos , currentState : IBlockState ) =
306304 ignoreBlocks.contains(currentState.block.registryName.toString())
0 commit comments