Clean up Optional bad practices
This commit is contained in:
parent
aa635360a2
commit
23db615695
@ -4,26 +4,20 @@ import baritone.bot.behavior.Behavior;
|
||||
import baritone.bot.event.events.TickEvent;
|
||||
import baritone.bot.utils.Rotation;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class LookBehavior extends Behavior {
|
||||
|
||||
public static final LookBehavior INSTANCE = new LookBehavior();
|
||||
|
||||
private LookBehavior() {
|
||||
target = Optional.empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Target's values are as follows:
|
||||
*
|
||||
* getFirst() -> yaw
|
||||
* getSecond() -> pitch
|
||||
*/
|
||||
private Optional<Rotation> target;
|
||||
private Rotation target;
|
||||
|
||||
public void updateTarget(Rotation target) {
|
||||
this.target = Optional.of(target);
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -33,11 +27,10 @@ public class LookBehavior extends Behavior {
|
||||
|
||||
@Override
|
||||
public void onPlayerUpdate() {
|
||||
if(target.isPresent()) {
|
||||
player().setPositionAndRotation(player().posX, player().posY, player().posZ,
|
||||
target.get().getFirst(), target.get().getSecond());
|
||||
target = Optional.empty();
|
||||
if (target != null) {
|
||||
player().rotationYaw = target.getFirst();
|
||||
player().rotationPitch = target.getSecond();
|
||||
target = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -9,9 +9,9 @@ import net.minecraft.util.math.*;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public final class LookBehaviorUtils implements Helper{
|
||||
public final class LookBehaviorUtils implements Helper {
|
||||
|
||||
public static final Vec3d[] BLOCK_SIDE_MULTIPLIERS = new Vec3d[]{
|
||||
public static final Vec3d[] BLOCK_SIDE_MULTIPLIERS = new Vec3d[] {
|
||||
new Vec3d(0, 0.5, 0.5),
|
||||
new Vec3d(1, 0.5, 0.5),
|
||||
new Vec3d(0.5, 0, 0.5),
|
||||
@ -35,10 +35,10 @@ public final class LookBehaviorUtils implements Helper{
|
||||
}
|
||||
|
||||
public static Optional<Rotation> reachable(BlockPos pos) {
|
||||
Optional possibleRotation = reachableCenter(pos);
|
||||
if(possibleRotation.isPresent()) {
|
||||
Optional<Rotation> possibleRotation = reachableCenter(pos);
|
||||
if (possibleRotation.isPresent())
|
||||
return possibleRotation;
|
||||
}
|
||||
|
||||
IBlockState bstate = BlockStateInterface.get(pos);
|
||||
AxisAlignedBB bbox = bstate.getBoundingBox(mc.world, pos);
|
||||
for (Vec3d vecMult : BLOCK_SIDE_MULTIPLIERS) {
|
||||
@ -49,14 +49,13 @@ public final class LookBehaviorUtils implements Helper{
|
||||
double y = pos.getY() + yDiff;
|
||||
double z = pos.getZ() + zDiff;
|
||||
possibleRotation = reachableRotation(pos, new Vec3d(x, y, z));
|
||||
if (possibleRotation.isPresent()) {
|
||||
if (possibleRotation.isPresent())
|
||||
return possibleRotation;
|
||||
}
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
private static RayTraceResult raytraceTowards(Rotation rotation) {
|
||||
private static RayTraceResult rayTraceTowards(Rotation rotation) {
|
||||
double blockReachDistance = (double) mc.playerController.getBlockReachDistance();
|
||||
Vec3d vec3 = mc.player.getPositionEyes(1.0F);
|
||||
Vec3d vec31 = calcVec3dFromRotation(rotation);
|
||||
@ -75,8 +74,8 @@ public final class LookBehaviorUtils implements Helper{
|
||||
protected static Optional<Rotation> reachableRotation(BlockPos pos, Vec3d offset) {
|
||||
Rotation rotation = Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F),
|
||||
offset);
|
||||
RayTraceResult result = raytraceTowards(rotation);
|
||||
if(result != null
|
||||
RayTraceResult result = rayTraceTowards(rotation);
|
||||
if (result != null
|
||||
&& result.typeOfHit == RayTraceResult.Type.BLOCK
|
||||
&& result.getBlockPos().equals(pos))
|
||||
return Optional.of(rotation);
|
||||
@ -91,13 +90,12 @@ public final class LookBehaviorUtils implements Helper{
|
||||
protected static Optional<Rotation> reachableCenter(BlockPos pos) {
|
||||
Rotation rotation = Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F),
|
||||
Utils.calcCenterFromCoords(pos, mc.world));
|
||||
RayTraceResult result = raytraceTowards(rotation);
|
||||
if(result != null
|
||||
RayTraceResult result = rayTraceTowards(rotation);
|
||||
if (result != null
|
||||
&& result.typeOfHit == RayTraceResult.Type.BLOCK
|
||||
&& result.getBlockPos().equals(pos))
|
||||
return Optional.of(rotation);
|
||||
return Optional.empty();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -108,11 +108,10 @@ public abstract class Movement implements Helper, MovementHelper {
|
||||
* @return Status
|
||||
*/
|
||||
public MovementStatus update() {
|
||||
|
||||
MovementState latestState = updateState(currentState);
|
||||
latestState.getTarget().rotation.ifPresent(LookBehavior.INSTANCE::updateTarget);
|
||||
//TODO calculate movement inputs from latestState.getGoal().position
|
||||
//latestState.getTarget().position.ifPresent(null); NULL CONSUMER REALLY SHOULDN'T BE THE FINAL THING YOU SHOULD REALLY REPLACE THIS WITH ALMOST ACTUALLY ANYTHING ELSE JUST PLEASE DON'T LEAVE IT AS IT IS THANK YOU KANYE
|
||||
latestState.getTarget().getRotation().ifPresent(LookBehavior.INSTANCE::updateTarget);
|
||||
// TODO: calculate movement inputs from latestState.getGoal().position
|
||||
// latestState.getTarget().position.ifPresent(null); NULL CONSUMER REALLY SHOULDN'T BE THE FINAL THING YOU SHOULD REALLY REPLACE THIS WITH ALMOST ACTUALLY ANYTHING ELSE JUST PLEASE DON'T LEAVE IT AS IT IS THANK YOU KANYE
|
||||
latestState.inputState.forEach((input, forced) -> {
|
||||
Baritone.INSTANCE.getInputOverrideHandler().setInputForceState(input, forced);
|
||||
System.out.println(input + " AND " + forced);
|
||||
@ -128,18 +127,16 @@ public abstract class Movement implements Helper, MovementHelper {
|
||||
|
||||
|
||||
private boolean prepared(MovementState state) {
|
||||
if (state.getStatus() == MovementStatus.WAITING) {
|
||||
if (state.getStatus() == MovementStatus.WAITING)
|
||||
return true;
|
||||
}
|
||||
for(BlockPos blockPos : positionsToBreak) {
|
||||
|
||||
for (BlockPos blockPos : positionsToBreak) {
|
||||
if(!MovementHelper.canWalkThrough(blockPos, BlockStateInterface.get(blockPos))) {
|
||||
Optional<Rotation> reachable = LookBehaviorUtils.reachable(blockPos);
|
||||
reachable.ifPresent(rotation -> {
|
||||
state.setTarget(new MovementState.MovementTarget(Optional.empty(), reachable))
|
||||
.setInput(Input.CLICK_LEFT, true);
|
||||
});
|
||||
if (reachable.isPresent())
|
||||
if (reachable.isPresent()) {
|
||||
state.setTarget(new MovementState.MovementTarget(reachable.get())).setInput(Input.CLICK_LEFT, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -11,8 +11,8 @@ import java.util.Optional;
|
||||
public class MovementState {
|
||||
|
||||
private MovementStatus status;
|
||||
private MovementTarget goal = new MovementTarget(Optional.empty(), Optional.empty());
|
||||
private MovementTarget target = new MovementTarget(Optional.empty(), Optional.empty());
|
||||
private MovementTarget goal = new MovementTarget();
|
||||
private MovementTarget target = new MovementTarget();
|
||||
protected final Map<Input, Boolean> inputState = new HashMap<>();
|
||||
|
||||
public MovementState setStatus(MovementStatus status) {
|
||||
@ -30,19 +30,39 @@ public class MovementState {
|
||||
* <p>
|
||||
* TODO: Decide desiredMovement type
|
||||
*/
|
||||
public Optional<Vec3d> position;
|
||||
public Vec3d position;
|
||||
/**
|
||||
* Yaw and pitch angles that must be matched
|
||||
* <p>
|
||||
* getFirst() -> YAW
|
||||
* getSecond() -> PITCH
|
||||
*/
|
||||
public Optional<Rotation> rotation;
|
||||
public Rotation rotation;
|
||||
|
||||
public MovementTarget(Optional<Vec3d> position, Optional<Rotation> rotation) {
|
||||
public MovementTarget() {
|
||||
this(null, null);
|
||||
}
|
||||
|
||||
public MovementTarget(Vec3d position) {
|
||||
this(position, null);
|
||||
}
|
||||
|
||||
public MovementTarget(Rotation rotation) {
|
||||
this(null, rotation);
|
||||
}
|
||||
|
||||
public MovementTarget(Vec3d position, Rotation rotation) {
|
||||
this.position = position;
|
||||
this.rotation = rotation;
|
||||
}
|
||||
|
||||
public final Optional<Vec3d> getPosition() {
|
||||
return Optional.of(this.position);
|
||||
}
|
||||
|
||||
public final Optional<Rotation> getRotation() {
|
||||
return Optional.of(this.rotation);
|
||||
}
|
||||
}
|
||||
|
||||
public MovementTarget getGoal() {
|
||||
|
@ -6,13 +6,11 @@ import baritone.bot.pathing.movement.MovementHelper;
|
||||
import baritone.bot.pathing.movement.MovementState;
|
||||
import baritone.bot.pathing.movement.MovementState.MovementStatus;
|
||||
import baritone.bot.utils.BlockStateInterface;
|
||||
import baritone.bot.utils.Rotation;
|
||||
import baritone.bot.utils.ToolSet;
|
||||
import baritone.bot.utils.Utils;
|
||||
import net.minecraft.block.BlockFalling;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class MovementAscend extends Movement {
|
||||
BlockPos[] against = new BlockPos[3];
|
||||
@ -67,7 +65,6 @@ public class MovementAscend extends Movement {
|
||||
|
||||
@Override
|
||||
public MovementState updateState(MovementState state) {
|
||||
|
||||
super.updateState(state);
|
||||
System.out.println("Ticking with state " + state.getStatus());
|
||||
switch (state.getStatus()) {
|
||||
@ -81,10 +78,9 @@ public class MovementAscend extends Movement {
|
||||
state.setStatus(MovementStatus.SUCCESS);
|
||||
return state;
|
||||
}
|
||||
|
||||
state.setTarget(new MovementState.MovementTarget(Optional.empty(), Optional.of(Utils.calcRotationFromVec3d(new Vec3d(player().posX, player().posY + 1.62, player().posZ), Utils.calcCenterFromCoords(positionsToBreak[0], world())))));
|
||||
state.setInput(InputOverrideHandler.Input.JUMP, true).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||
return state;
|
||||
Rotation rotationToBlock = Utils.calcRotationFromVec3d(playerHead(), Utils.calcCenterFromCoords(positionsToBreak[0], world()));
|
||||
return state.setTarget(new MovementState.MovementTarget(rotationToBlock))
|
||||
.setInput(InputOverrideHandler.Input.JUMP, true).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import baritone.bot.pathing.movement.Movement;
|
||||
import baritone.bot.pathing.movement.MovementHelper;
|
||||
import baritone.bot.pathing.movement.MovementState;
|
||||
import baritone.bot.utils.BlockStateInterface;
|
||||
import baritone.bot.utils.Rotation;
|
||||
import baritone.bot.utils.ToolSet;
|
||||
import baritone.bot.utils.Utils;
|
||||
import net.minecraft.block.Block;
|
||||
@ -14,9 +15,6 @@ import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class MovementTraverse extends Movement {
|
||||
|
||||
@ -98,8 +96,9 @@ public class MovementTraverse extends Movement {
|
||||
state.setStatus(MovementState.MovementStatus.SUCCESS);
|
||||
return state;
|
||||
}
|
||||
state.setTarget(new MovementState.MovementTarget(Optional.empty(), Optional.of(Utils.calcRotationFromVec3d(new Vec3d(player().posX, player().posY + 1.62, player().posZ), Utils.calcCenterFromCoords(positionsToBreak[0], world()))))).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||
return state;
|
||||
Rotation rotationToBlock = Utils.calcRotationFromVec3d(playerHead(), Utils.calcCenterFromCoords(positionsToBreak[0], world()));
|
||||
return state.setTarget(new MovementState.MovementTarget(rotationToBlock))
|
||||
.setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||
|
||||
default:
|
||||
return state;
|
||||
|
@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
import net.minecraft.client.multiplayer.WorldClient;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
|
||||
/**
|
||||
@ -26,6 +27,10 @@ public interface Helper {
|
||||
return new BlockPos(mc.player.posX, mc.player.posY, mc.player.posZ);
|
||||
}
|
||||
|
||||
default Vec3d playerHead() {
|
||||
return new Vec3d(mc.player.posX, mc.player.posY + mc.player.getEyeHeight(), mc.player.posZ);
|
||||
}
|
||||
|
||||
default void displayChatMessageRaw(String message) {
|
||||
mc.ingameGUI.getChatGUI().printChatMessage(new TextComponentString(message));
|
||||
}
|
||||
|
@ -152,11 +152,11 @@ public class LookManager extends Manager {
|
||||
double faceX = (pos.getX() + side.getX() + 1.0D) * 0.5D;
|
||||
double faceY = (pos.getY() + side.getY()) * 0.5D;
|
||||
double faceZ = (pos.getZ() + side.getZ() + 1.0D) * 0.5D;
|
||||
RayTraceResult blah = raytraceTowards(faceX, faceY, faceZ);
|
||||
RayTraceResult blah = rayTraceTowards(faceX, faceY, faceZ);
|
||||
return blah != null && blah.typeOfHit == RayTraceResult.Type.BLOCK && blah.getBlockPos().equals(pos) && blah.sideHit == dir;
|
||||
}
|
||||
|
||||
public static RayTraceResult raytraceTowards(double x, double y, double z) {
|
||||
public static RayTraceResult rayTraceTowards(double x, double y, double z) {
|
||||
return raytraceTowards(pitchAndYaw(x, y, z));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user