diff --git a/src/api/java/baritone/api/IBaritone.java b/src/api/java/baritone/api/IBaritone.java index 5ca54a25..14805375 100644 --- a/src/api/java/baritone/api/IBaritone.java +++ b/src/api/java/baritone/api/IBaritone.java @@ -22,6 +22,7 @@ import baritone.api.behavior.IMemoryBehavior; import baritone.api.behavior.IPathingBehavior; import baritone.api.cache.IWorldProvider; import baritone.api.event.listener.IEventBus; +import baritone.api.pathing.calc.IPathingControlManager; import baritone.api.process.ICustomGoalProcess; import baritone.api.process.IFollowProcess; import baritone.api.process.IGetToBlockProcess; @@ -59,6 +60,8 @@ public interface IBaritone { */ IMineProcess getMineProcess(); + IPathingControlManager getPathingControlManager(); + /** * @return The {@link IPathingBehavior} instance * @see IPathingBehavior diff --git a/src/comms/java/comms/upward/MessageStatus.java b/src/comms/java/comms/upward/MessageStatus.java index 55a29828..7a5e74af 100644 --- a/src/comms/java/comms/upward/MessageStatus.java +++ b/src/comms/java/comms/upward/MessageStatus.java @@ -29,17 +29,59 @@ public class MessageStatus implements iMessage { public final double x; public final double y; public final double z; + public final float yaw; + public final float pitch; + public final boolean onGround; + public final float health; + public final float saturation; + public final int foodLevel; + public final boolean hasCurrentSegment; + public final boolean hasNextSegment; + public final boolean calcInProgress; + public final double ticksRemainingInCurrent; + public final boolean calcFailedLastTick; + public final boolean safeToCancel; + public final String currentGoal; + public final String currentProcess; public MessageStatus(DataInputStream in) throws IOException { this.x = in.readDouble(); this.y = in.readDouble(); this.z = in.readDouble(); + this.yaw = in.readFloat(); + this.pitch = in.readFloat(); + this.onGround = in.readBoolean(); + this.health = in.readFloat(); + this.saturation = in.readFloat(); + this.foodLevel = in.readInt(); + this.hasCurrentSegment = in.readBoolean(); + this.hasNextSegment = in.readBoolean(); + this.calcInProgress = in.readBoolean(); + this.ticksRemainingInCurrent = in.readDouble(); + this.calcFailedLastTick = in.readBoolean(); + this.safeToCancel = in.readBoolean(); + this.currentGoal = in.readUTF(); + this.currentProcess = in.readUTF(); } - public MessageStatus(double x, double y, double z) { + public MessageStatus(double x, double y, double z, float yaw, float pitch, boolean onGround, float health, float saturation, int foodLevel, boolean hasCurrentSegment, boolean hasNextSegment, boolean calcInProgress, double ticksRemainingInCurrent, boolean calcFailedLastTick, boolean safeToCancel, String currentGoal, String currentProcess) { this.x = x; this.y = y; this.z = z; + this.yaw = yaw; + this.pitch = pitch; + this.onGround = onGround; + this.health = health; + this.saturation = saturation; + this.foodLevel = foodLevel; + this.hasCurrentSegment = hasCurrentSegment; + this.hasNextSegment = hasNextSegment; + this.calcInProgress = calcInProgress; + this.ticksRemainingInCurrent = ticksRemainingInCurrent; + this.calcFailedLastTick = calcFailedLastTick; + this.safeToCancel = safeToCancel; + this.currentGoal = currentGoal; + this.currentProcess = currentProcess; } @Override @@ -47,6 +89,20 @@ public class MessageStatus implements iMessage { out.writeDouble(x); out.writeDouble(y); out.writeDouble(z); + out.writeFloat(yaw); + out.writeFloat(pitch); + out.writeBoolean(onGround); + out.writeFloat(health); + out.writeFloat(saturation); + out.writeInt(foodLevel); + out.writeBoolean(hasCurrentSegment); + out.writeBoolean(hasNextSegment); + out.writeBoolean(calcInProgress); + out.writeDouble(ticksRemainingInCurrent); + out.writeBoolean(calcFailedLastTick); + out.writeBoolean(safeToCancel); + out.writeUTF(currentGoal); + out.writeUTF(currentProcess); } @Override diff --git a/src/main/java/baritone/Baritone.java b/src/main/java/baritone/Baritone.java index 0b42e112..7ee40e55 100755 --- a/src/main/java/baritone/Baritone.java +++ b/src/main/java/baritone/Baritone.java @@ -139,6 +139,7 @@ public class Baritone implements IBaritone { this.gameEventHandler.registerEventListener(behavior); } + @Override public PathingControlManager getPathingControlManager() { return this.pathingControlManager; } diff --git a/src/main/java/baritone/behavior/ControllerBehavior.java b/src/main/java/baritone/behavior/ControllerBehavior.java index f1deb618..3f8329bd 100644 --- a/src/main/java/baritone/behavior/ControllerBehavior.java +++ b/src/main/java/baritone/behavior/ControllerBehavior.java @@ -20,6 +20,7 @@ package baritone.behavior; import baritone.Baritone; import baritone.api.event.events.ChatEvent; import baritone.api.event.events.TickEvent; +import baritone.api.process.IBaritoneProcess; import baritone.utils.Helper; import comms.BufferedConnection; import comms.IConnection; @@ -43,10 +44,33 @@ public class ControllerBehavior extends Behavior implements IMessageListener { if (event.getType() == TickEvent.Type.OUT) { return; } - trySend(new MessageStatus(ctx.player().posX, ctx.player().posY, ctx.player().posZ)); + trySend(buildStatus()); readAndHandle(); } + public MessageStatus buildStatus() { + // TODO inventory + return new MessageStatus( + ctx.player().posX, + ctx.player().posY, + ctx.player().posZ, + ctx.player().rotationYaw, + ctx.player().rotationPitch, + ctx.player().onGround, + ctx.player().getHealth(), + ctx.player().getFoodStats().getSaturationLevel(), + ctx.player().getFoodStats().getFoodLevel(), + baritone.getPathingBehavior().getCurrent() != null, + baritone.getPathingBehavior().getNext() != null, + baritone.getPathingBehavior().getInProgress().isPresent(), + baritone.getPathingBehavior().ticksRemainingInSegment().orElse(0D), + baritone.getPathingBehavior().calcFailedLastTick(), + baritone.getPathingBehavior().isSafeToCancel(), + baritone.getPathingBehavior().getGoal() + "", + baritone.getPathingControlManager().mostRecentInControl().map(IBaritoneProcess::displayName).orElse("") + ); + } + private void readAndHandle() { if (conn == null) { return;