fix weird behavior where allowBreak false broke #goto
This commit is contained in:
parent
fe491e4a7d
commit
43d5458a25
@ -30,6 +30,7 @@ import baritone.api.utils.input.Input;
|
|||||||
import baritone.pathing.movement.CalculationContext;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
import baritone.utils.BaritoneProcessHelper;
|
import baritone.utils.BaritoneProcessHelper;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.inventory.ContainerPlayer;
|
import net.minecraft.inventory.ContainerPlayer;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -57,7 +58,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG
|
|||||||
start = ctx.playerFeet();
|
start = ctx.playerFeet();
|
||||||
blacklist = new ArrayList<>();
|
blacklist = new ArrayList<>();
|
||||||
arrivalTickCount = 0;
|
arrivalTickCount = 0;
|
||||||
rescan(new ArrayList<>(), new CalculationContext(baritone));
|
rescan(new ArrayList<>(), new GetToBlockCalculationContext(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -68,7 +69,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG
|
|||||||
@Override
|
@Override
|
||||||
public synchronized PathingCommand onTick(boolean calcFailed, boolean isSafeToCancel) {
|
public synchronized PathingCommand onTick(boolean calcFailed, boolean isSafeToCancel) {
|
||||||
if (knownLocations == null) {
|
if (knownLocations == null) {
|
||||||
rescan(new ArrayList<>(), new CalculationContext(baritone));
|
rescan(new ArrayList<>(), new GetToBlockCalculationContext(false));
|
||||||
}
|
}
|
||||||
if (knownLocations.isEmpty()) {
|
if (knownLocations.isEmpty()) {
|
||||||
if (Baritone.settings().exploreForBlocks.value && !calcFailed) {
|
if (Baritone.settings().exploreForBlocks.value && !calcFailed) {
|
||||||
@ -77,6 +78,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG
|
|||||||
public boolean isInGoal(int x, int y, int z) {
|
public boolean isInGoal(int x, int y, int z) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double heuristic() {
|
public double heuristic() {
|
||||||
return Double.NEGATIVE_INFINITY;
|
return Double.NEGATIVE_INFINITY;
|
||||||
@ -106,7 +108,7 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG
|
|||||||
int mineGoalUpdateInterval = Baritone.settings().mineGoalUpdateInterval.value;
|
int mineGoalUpdateInterval = Baritone.settings().mineGoalUpdateInterval.value;
|
||||||
if (mineGoalUpdateInterval != 0 && tickCount++ % mineGoalUpdateInterval == 0) { // big brain
|
if (mineGoalUpdateInterval != 0 && tickCount++ % mineGoalUpdateInterval == 0) { // big brain
|
||||||
List<BlockPos> current = new ArrayList<>(knownLocations);
|
List<BlockPos> current = new ArrayList<>(knownLocations);
|
||||||
CalculationContext context = new CalculationContext(baritone, true);
|
CalculationContext context = new GetToBlockCalculationContext(true);
|
||||||
Baritone.getExecutor().execute(() -> rescan(current, context));
|
Baritone.getExecutor().execute(() -> rescan(current, context));
|
||||||
}
|
}
|
||||||
if (goal.isInGoal(ctx.playerFeet()) && goal.isInGoal(baritone.getPathingBehavior().pathStart()) && isSafeToCancel) {
|
if (goal.isInGoal(ctx.playerFeet()) && goal.isInGoal(baritone.getPathingBehavior().pathStart()) && isSafeToCancel) {
|
||||||
@ -151,6 +153,20 @@ public final class GetToBlockProcess extends BaritoneProcessHelper implements IG
|
|||||||
return !newBlacklist.isEmpty();
|
return !newBlacklist.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this is to signal to MineProcess that we don't care about the allowBreak setting
|
||||||
|
// it is NOT to be used to actually calculate a path
|
||||||
|
public class GetToBlockCalculationContext extends CalculationContext {
|
||||||
|
|
||||||
|
public GetToBlockCalculationContext(boolean forUseOnAnotherThread) {
|
||||||
|
super(GetToBlockProcess.super.baritone, forUseOnAnotherThread);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double breakCostMultiplierAt(int x, int y, int z, IBlockState current) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// safer than direct double comparison from distanceSq
|
// safer than direct double comparison from distanceSq
|
||||||
private boolean areAdjacent(BlockPos posA, BlockPos posB) {
|
private boolean areAdjacent(BlockPos posA, BlockPos posB) {
|
||||||
int diffX = Math.abs(posA.getX() - posB.getX());
|
int diffX = Math.abs(posA.getX() - posB.getX());
|
||||||
|
Loading…
Reference in New Issue
Block a user