fixed walking through fire
This commit is contained in:
parent
524a32375d
commit
df1f6da526
@ -21,6 +21,7 @@ import baritone.bot.utils.BlockStateInterface;
|
||||
import baritone.bot.utils.Helper;
|
||||
import baritone.bot.utils.Rotation;
|
||||
import baritone.bot.utils.Utils;
|
||||
import net.minecraft.block.BlockFire;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.util.math.*;
|
||||
|
||||
@ -61,6 +62,7 @@ public final class LookBehaviorUtils implements Helper {
|
||||
return Optional.of(new Rotation(mc.player.rotationYaw, mc.player.rotationPitch + 0.0001f));
|
||||
}
|
||||
Optional<Rotation> possibleRotation = reachableCenter(pos);
|
||||
System.out.println("center: " + possibleRotation);
|
||||
if (possibleRotation.isPresent())
|
||||
return possibleRotation;
|
||||
|
||||
@ -99,10 +101,17 @@ public final class LookBehaviorUtils implements Helper {
|
||||
protected static Optional<Rotation> reachableOffset(BlockPos pos, Vec3d offsetPos) {
|
||||
Rotation rotation = Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F), offsetPos);
|
||||
RayTraceResult result = rayTraceTowards(rotation);
|
||||
if (result != null
|
||||
&& result.typeOfHit == RayTraceResult.Type.BLOCK
|
||||
&& result.getBlockPos().equals(pos))
|
||||
System.out.println(result);
|
||||
if (result != null && result.typeOfHit == RayTraceResult.Type.BLOCK) {
|
||||
if (result.getBlockPos().equals(pos)) {
|
||||
return Optional.of(rotation);
|
||||
}
|
||||
if (BlockStateInterface.get(pos).getBlock() instanceof BlockFire) {
|
||||
if (result.getBlockPos().equals(pos.down())) {
|
||||
return Optional.of(rotation);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
|
@ -111,8 +111,10 @@ public abstract class Movement implements Helper, MovementHelper {
|
||||
if (state.getStatus() == MovementStatus.WAITING)
|
||||
return true;
|
||||
|
||||
boolean somethingInTheWay = false;
|
||||
for (BlockPos blockPos : positionsToBreak) {
|
||||
if (!MovementHelper.canWalkThrough(blockPos)) {
|
||||
somethingInTheWay = true;
|
||||
Optional<Rotation> reachable = LookBehaviorUtils.reachable(blockPos);
|
||||
if (reachable.isPresent()) {
|
||||
state.setTarget(new MovementState.MovementTarget(reachable.get())).setInput(Input.CLICK_LEFT, true);
|
||||
@ -120,6 +122,12 @@ public abstract class Movement implements Helper, MovementHelper {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (somethingInTheWay) {
|
||||
// There's a block or blocks that we can't walk through, but we have no target rotation to reach any
|
||||
// So don't return true, actually set state to unreachable
|
||||
state.setStatus(MovementStatus.UNREACHABLE);
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -50,11 +50,10 @@ public class MovementFall extends Movement {
|
||||
if (!BlockStateInterface.isWater(dest) && src.getY() - dest.getY() > 3) {
|
||||
placeBucketCost = ActionCosts.PLACE_ONE_BLOCK_COST;
|
||||
}
|
||||
double cost = getTotalHardnessOfBlocksToBreak(context.getToolSet());
|
||||
if (cost != 0) {
|
||||
if (getTotalHardnessOfBlocksToBreak(context.getToolSet()) != 0) {
|
||||
return COST_INF;
|
||||
}
|
||||
return WALK_OFF_BLOCK_COST + FALL_N_BLOCKS_COST[positionsToBreak.length - 1] + cost + placeBucketCost;
|
||||
return WALK_OFF_BLOCK_COST + FALL_N_BLOCKS_COST[positionsToBreak.length - 1] + placeBucketCost;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -75,7 +74,7 @@ public class MovementFall extends Movement {
|
||||
state.setStatus(MovementStatus.UNREACHABLE);
|
||||
return state;
|
||||
}
|
||||
if (playerFeet().getY() - dest.getY() < mc.playerController.getBlockReachDistance()) {
|
||||
if (player().posY - dest.getY() < mc.playerController.getBlockReachDistance()) {
|
||||
player().inventory.currentItem = player().inventory.getSlotFor(STACK_BUCKET_WATER);
|
||||
targetRotation = LookBehaviorUtils.reachable(dest.down());
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
package baritone.bot.utils;
|
||||
|
||||
import net.minecraft.block.BlockFire;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@ -79,6 +80,10 @@ public final class Utils {
|
||||
double xDiff = (bbox.minX + bbox.maxX) / 2;
|
||||
double yDiff = (bbox.minY + bbox.maxY) / 2;
|
||||
double zDiff = (bbox.minZ + bbox.maxZ) / 2;
|
||||
if (b.getBlock() instanceof BlockFire) {//look at bottom of fire when putting it out
|
||||
yDiff = 0;
|
||||
}
|
||||
System.out.println(xDiff + " " + yDiff + " " + zDiff);
|
||||
return new Vec3d(
|
||||
orig.getX() + xDiff,
|
||||
orig.getY() + yDiff,
|
||||
|
Loading…
Reference in New Issue
Block a user