parent
5c7ffe6ed1
commit
50fd63647b
@ -147,6 +147,13 @@ public class Settings {
|
|||||||
*/
|
*/
|
||||||
public Setting<Integer> maxFallHeightBucket = new Setting<>(20);
|
public Setting<Integer> maxFallHeightBucket = new Setting<>(20);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is it okay to sprint through a descend followed by a diagonal?
|
||||||
|
* The player overshoots the landing, but not enough to fall off. And the diagonal ensures that there isn't
|
||||||
|
* lava or anything that's !canWalkInto in that space, so it's technically safe, just a little sketchy.
|
||||||
|
*/
|
||||||
|
public Setting<Boolean> allowOvershootDiagonalDescend = new Setting<>(true);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If your goal is a GoalBlock in an unloaded chunk, assume it's far enough away that the Y coord
|
* If your goal is a GoalBlock in an unloaded chunk, assume it's far enough away that the Y coord
|
||||||
* doesn't matter yet, and replace it with a GoalXZ to the same place before calculating a path.
|
* doesn't matter yet, and replace it with a GoalXZ to the same place before calculating a path.
|
||||||
|
@ -104,7 +104,6 @@ public abstract class Movement implements Helper, MovementHelper {
|
|||||||
* @return Status
|
* @return Status
|
||||||
*/
|
*/
|
||||||
public MovementStatus update() {
|
public MovementStatus update() {
|
||||||
player().setSprinting(false);
|
|
||||||
MovementState latestState = updateState(currentState);
|
MovementState latestState = updateState(currentState);
|
||||||
if (BlockStateInterface.isLiquid(playerFeet())) {
|
if (BlockStateInterface.isLiquid(playerFeet())) {
|
||||||
latestState.setInput(Input.JUMP, true);
|
latestState.setInput(Input.JUMP, true);
|
||||||
@ -269,6 +268,10 @@ public abstract class Movement implements Helper, MovementHelper {
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BlockPos getDirection() {
|
||||||
|
return getDest().subtract(getSrc());
|
||||||
|
}
|
||||||
|
|
||||||
public List<BlockPos> toBreakCached = null;
|
public List<BlockPos> toBreakCached = null;
|
||||||
public List<BlockPos> toPlaceCached = null;
|
public List<BlockPos> toPlaceCached = null;
|
||||||
public List<BlockPos> toWalkIntoCached = null;
|
public List<BlockPos> toWalkIntoCached = null;
|
||||||
|
@ -158,7 +158,7 @@ public interface MovementHelper extends ActionCosts, Helper {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (facing == playerFacing) == open;
|
return facing == playerFacing == open;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean avoidWalkingInto(Block block) {
|
static boolean avoidWalkingInto(Block block) {
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
|
||||||
import baritone.pathing.movement.CalculationContext;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
import baritone.pathing.movement.MovementHelper;
|
import baritone.pathing.movement.MovementHelper;
|
||||||
import baritone.pathing.movement.MovementState;
|
import baritone.pathing.movement.MovementState;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
|
import baritone.utils.InputOverrideHandler;
|
||||||
import net.minecraft.block.BlockMagma;
|
import net.minecraft.block.BlockMagma;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
@ -65,8 +65,8 @@ public class MovementDiagonal extends Movement {
|
|||||||
state.setStatus(MovementState.MovementStatus.SUCCESS);
|
state.setStatus(MovementState.MovementStatus.SUCCESS);
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
if (!BlockStateInterface.isLiquid(playerFeet()) && Baritone.settings().allowSprint.get()) {
|
if (!BlockStateInterface.isLiquid(playerFeet())) {
|
||||||
player().setSprinting(true);
|
state.setInput(InputOverrideHandler.Input.SPRINT, true);
|
||||||
}
|
}
|
||||||
MovementHelper.moveTowards(state, dest);
|
MovementHelper.moveTowards(state, dest);
|
||||||
return state;
|
return state;
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
package baritone.pathing.movement.movements;
|
package baritone.pathing.movement.movements;
|
||||||
|
|
||||||
import baritone.Baritone;
|
|
||||||
import baritone.behavior.impl.LookBehaviorUtils;
|
import baritone.behavior.impl.LookBehaviorUtils;
|
||||||
import baritone.pathing.movement.CalculationContext;
|
import baritone.pathing.movement.CalculationContext;
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
@ -190,8 +189,8 @@ public class MovementTraverse extends Movement {
|
|||||||
state.setStatus(MovementState.MovementStatus.SUCCESS);
|
state.setStatus(MovementState.MovementStatus.SUCCESS);
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
if (wasTheBridgeBlockAlwaysThere && !BlockStateInterface.isLiquid(playerFeet()) && Baritone.settings().allowSprint.get()) {
|
if (wasTheBridgeBlockAlwaysThere && !BlockStateInterface.isLiquid(playerFeet())) {
|
||||||
player().setSprinting(true);
|
state.setInput(InputOverrideHandler.Input.SPRINT, true);
|
||||||
}
|
}
|
||||||
Block destDown = BlockStateInterface.get(dest.down()).getBlock();
|
Block destDown = BlockStateInterface.get(dest.down()).getBlock();
|
||||||
if (ladder && (destDown instanceof BlockVine || destDown instanceof BlockLadder)) {
|
if (ladder && (destDown instanceof BlockVine || destDown instanceof BlockLadder)) {
|
||||||
|
@ -22,6 +22,9 @@ import baritone.event.events.TickEvent;
|
|||||||
import baritone.pathing.movement.ActionCosts;
|
import baritone.pathing.movement.ActionCosts;
|
||||||
import baritone.pathing.movement.Movement;
|
import baritone.pathing.movement.Movement;
|
||||||
import baritone.pathing.movement.MovementState;
|
import baritone.pathing.movement.MovementState;
|
||||||
|
import baritone.pathing.movement.movements.MovementDescend;
|
||||||
|
import baritone.pathing.movement.movements.MovementDiagonal;
|
||||||
|
import baritone.pathing.movement.movements.MovementTraverse;
|
||||||
import baritone.utils.BlockStateInterface;
|
import baritone.utils.BlockStateInterface;
|
||||||
import baritone.utils.Helper;
|
import baritone.utils.Helper;
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
import net.minecraft.client.entity.EntityPlayerSP;
|
||||||
@ -228,6 +231,7 @@ public class PathExecutor implements Helper {
|
|||||||
onTick(event);
|
onTick(event);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
sprintIfRequested();
|
||||||
ticksOnCurrent++;
|
ticksOnCurrent++;
|
||||||
if (ticksOnCurrent > currentMovementInitialCostEstimate + Baritone.settings().movementTimeoutTicks.get()) {
|
if (ticksOnCurrent > currentMovementInitialCostEstimate + Baritone.settings().movementTimeoutTicks.get()) {
|
||||||
// only fail if the total time has exceeded the initial estimate
|
// only fail if the total time has exceeded the initial estimate
|
||||||
@ -245,6 +249,59 @@ public class PathExecutor implements Helper {
|
|||||||
return false; // movement is in progress
|
return false; // movement is in progress
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void sprintIfRequested() {
|
||||||
|
if (!Baritone.settings().allowSprint.get()) {
|
||||||
|
player().setSprinting(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Baritone.INSTANCE.getInputOverrideHandler().isInputForcedDown(mc.gameSettings.keyBindSprint)) {
|
||||||
|
if (!player().isSprinting()) {
|
||||||
|
player().setSprinting(true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Movement movement = path.movements().get(pathPosition);
|
||||||
|
if (movement instanceof MovementDescend && pathPosition < path.length() - 2) {
|
||||||
|
Movement next = path.movements().get(pathPosition + 1);
|
||||||
|
if (next instanceof MovementDescend) {
|
||||||
|
if (next.getDirection().equals(movement.getDirection())) {
|
||||||
|
if (playerFeet().equals(movement.getDest())) {
|
||||||
|
pathPosition++;
|
||||||
|
Baritone.INSTANCE.getInputOverrideHandler().clearAllKeys();
|
||||||
|
}
|
||||||
|
if (!player().isSprinting()) {
|
||||||
|
player().setSprinting(true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (next instanceof MovementTraverse) {
|
||||||
|
if (next.getDirection().down().equals(movement.getDirection())) {
|
||||||
|
if (playerFeet().equals(movement.getDest())) {
|
||||||
|
pathPosition++;
|
||||||
|
Baritone.INSTANCE.getInputOverrideHandler().clearAllKeys();
|
||||||
|
}
|
||||||
|
if (!player().isSprinting()) {
|
||||||
|
player().setSprinting(true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (next instanceof MovementDiagonal && Baritone.settings().allowOvershootDiagonalDescend.get()) {
|
||||||
|
if (playerFeet().equals(movement.getDest())) {
|
||||||
|
pathPosition++;
|
||||||
|
Baritone.INSTANCE.getInputOverrideHandler().clearAllKeys();
|
||||||
|
}
|
||||||
|
if (!player().isSprinting()) {
|
||||||
|
player().setSprinting(true);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
displayChatMessageRaw("Turning off sprinting " + movement + " " + next + " " + movement.getDirection() + " " + next.getDirection().down() + " " + next.getDirection().down().equals(movement.getDirection()));
|
||||||
|
}
|
||||||
|
player().setSprinting(false);
|
||||||
|
}
|
||||||
|
|
||||||
public int getPosition() {
|
public int getPosition() {
|
||||||
return pathPosition;
|
return pathPosition;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user