maintain y while exploring
This commit is contained in:
parent
c8419dc362
commit
5a0ccac0a1
@ -610,6 +610,13 @@ public final class Settings {
|
|||||||
*/
|
*/
|
||||||
public final Setting<Integer> exploreChunkSetMinimumSize = new Setting<>(10);
|
public final Setting<Integer> exploreChunkSetMinimumSize = new Setting<>(10);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempt to maintain Y coordinate while exploring
|
||||||
|
* <p>
|
||||||
|
* -1 to disable
|
||||||
|
*/
|
||||||
|
public final Setting<Integer> exploreMaintainY = new Setting<>(64);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replant nether wart
|
* Replant nether wart
|
||||||
*/
|
*/
|
||||||
|
@ -22,6 +22,7 @@ import baritone.api.cache.ICachedWorld;
|
|||||||
import baritone.api.pathing.goals.Goal;
|
import baritone.api.pathing.goals.Goal;
|
||||||
import baritone.api.pathing.goals.GoalComposite;
|
import baritone.api.pathing.goals.GoalComposite;
|
||||||
import baritone.api.pathing.goals.GoalXZ;
|
import baritone.api.pathing.goals.GoalXZ;
|
||||||
|
import baritone.api.pathing.goals.GoalYLevel;
|
||||||
import baritone.api.process.IExploreProcess;
|
import baritone.api.process.IExploreProcess;
|
||||||
import baritone.api.process.PathingCommand;
|
import baritone.api.process.PathingCommand;
|
||||||
import baritone.api.process.PathingCommandType;
|
import baritone.api.process.PathingCommandType;
|
||||||
@ -133,11 +134,25 @@ public class ExploreProcess extends BaritoneProcessHelper implements IExplorePro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (centers.size() >= count) {
|
if (centers.size() >= count) {
|
||||||
return centers.stream().map(pos -> new GoalXZ(pos.getX(), pos.getZ())).toArray(Goal[]::new);
|
return centers.stream().map(pos -> createGoal(pos.getX(), pos.getZ())).toArray(Goal[]::new);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Goal createGoal(int x, int z) {
|
||||||
|
if (Baritone.settings().exploreMaintainY.value == -1) {
|
||||||
|
return new GoalXZ(x, z);
|
||||||
|
}
|
||||||
|
// don't use a goalblock because we still want isInGoal to return true if X and Z are correct
|
||||||
|
// we just want to try and maintain Y on the way there, not necessarily end at that specific Y
|
||||||
|
return new GoalXZ(x, z) {
|
||||||
|
@Override
|
||||||
|
public double heuristic(int x, int y, int z) {
|
||||||
|
return super.heuristic(x, y, z) + GoalYLevel.calculate(Baritone.settings().exploreMaintainY.value, y);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private enum Status {
|
private enum Status {
|
||||||
EXPLORED, NOT_EXPLORED, UNKNOWN;
|
EXPLORED, NOT_EXPLORED, UNKNOWN;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user