forked from RepoMirrors/baritone
Add EventTick w/ state guarantees
This commit is contained in:
parent
89189c532e
commit
379d358408
|
@ -2,10 +2,7 @@ package baritone.bot;
|
||||||
|
|
||||||
import baritone.bot.behavior.Behavior;
|
import baritone.bot.behavior.Behavior;
|
||||||
import baritone.bot.event.IGameEventListener;
|
import baritone.bot.event.IGameEventListener;
|
||||||
import baritone.bot.event.events.ChatEvent;
|
import baritone.bot.event.events.*;
|
||||||
import baritone.bot.event.events.ChunkEvent;
|
|
||||||
import baritone.bot.event.events.RenderEvent;
|
|
||||||
import baritone.bot.event.events.WorldEvent;
|
|
||||||
import net.minecraft.client.settings.KeyBinding;
|
import net.minecraft.client.settings.KeyBinding;
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
|
|
||||||
|
@ -20,8 +17,8 @@ public final class GameEventHandler implements IGameEventListener {
|
||||||
GameEventHandler() {}
|
GameEventHandler() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void onTick() {
|
public final void onTick(TickEvent event) {
|
||||||
dispatch(Behavior::onTick);
|
dispatch(behavior -> behavior.onTick(event));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package baritone.bot.behavior.impl;
|
package baritone.bot.behavior.impl;
|
||||||
|
|
||||||
import baritone.bot.behavior.Behavior;
|
import baritone.bot.behavior.Behavior;
|
||||||
import baritone.bot.utils.Utils;
|
|
||||||
import net.minecraft.util.Tuple;
|
import net.minecraft.util.Tuple;
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ package baritone.bot.behavior.impl;
|
||||||
import baritone.bot.behavior.Behavior;
|
import baritone.bot.behavior.Behavior;
|
||||||
import baritone.bot.event.events.ChatEvent;
|
import baritone.bot.event.events.ChatEvent;
|
||||||
import baritone.bot.event.events.RenderEvent;
|
import baritone.bot.event.events.RenderEvent;
|
||||||
|
import baritone.bot.event.events.TickEvent;
|
||||||
import baritone.bot.pathing.calc.AStarPathFinder;
|
import baritone.bot.pathing.calc.AStarPathFinder;
|
||||||
import baritone.bot.pathing.calc.IPathFinder;
|
import baritone.bot.pathing.calc.IPathFinder;
|
||||||
import baritone.bot.pathing.goals.Goal;
|
import baritone.bot.pathing.goals.Goal;
|
||||||
|
@ -34,7 +35,7 @@ public class PathingBehavior extends Behavior {
|
||||||
private Goal goal;
|
private Goal goal;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTick() {
|
public void onTick(TickEvent event) {
|
||||||
//System.out.println("Ticking");
|
//System.out.println("Ticking");
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package baritone.bot.event;
|
package baritone.bot.event;
|
||||||
|
|
||||||
import baritone.bot.event.events.ChatEvent;
|
import baritone.bot.event.events.*;
|
||||||
import baritone.bot.event.events.ChunkEvent;
|
|
||||||
import baritone.bot.event.events.RenderEvent;
|
|
||||||
import baritone.bot.event.events.WorldEvent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of {@link IGameEventListener} that has all methods
|
* An implementation of {@link IGameEventListener} that has all methods
|
||||||
|
@ -21,7 +18,7 @@ import baritone.bot.event.events.WorldEvent;
|
||||||
public interface AbstractGameEventListener extends IGameEventListener {
|
public interface AbstractGameEventListener extends IGameEventListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default void onTick() {}
|
default void onTick(TickEvent event) {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default void onPlayerUpdate() {}
|
default void onPlayerUpdate() {}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
package baritone.bot.event;
|
package baritone.bot.event;
|
||||||
|
|
||||||
import baritone.bot.event.events.ChatEvent;
|
import baritone.bot.event.events.*;
|
||||||
import baritone.bot.event.events.ChunkEvent;
|
|
||||||
import baritone.bot.event.events.RenderEvent;
|
|
||||||
import baritone.bot.event.events.WorldEvent;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
import net.minecraft.client.entity.EntityPlayerSP;
|
||||||
import net.minecraft.client.multiplayer.WorldClient;
|
import net.minecraft.client.multiplayer.WorldClient;
|
||||||
|
@ -21,7 +18,7 @@ public interface IGameEventListener {
|
||||||
*
|
*
|
||||||
* @see Minecraft#runTick()
|
* @see Minecraft#runTick()
|
||||||
*/
|
*/
|
||||||
void onTick();
|
void onTick(TickEvent event);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run once per game tick from before the player rotation is sent to the server.
|
* Run once per game tick from before the player rotation is sent to the server.
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package baritone.bot.event.events;
|
||||||
|
|
||||||
|
import baritone.bot.event.events.type.EventState;
|
||||||
|
import javafx.event.EventType;
|
||||||
|
|
||||||
|
public final class TickEvent {
|
||||||
|
|
||||||
|
private final EventState state;
|
||||||
|
private final Type type;
|
||||||
|
|
||||||
|
public TickEvent(EventState state, Type type) {
|
||||||
|
this.state = state;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
/**
|
||||||
|
* When guarantees can be made about
|
||||||
|
* the game state and in-game variables.
|
||||||
|
*/
|
||||||
|
IN,
|
||||||
|
/**
|
||||||
|
* No guarantees can be made about the game state.
|
||||||
|
* This probably means we are at the main menu.
|
||||||
|
*/
|
||||||
|
OUT,
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package baritone.bot.pathing.path;
|
package baritone.bot.pathing.path;
|
||||||
|
|
||||||
import baritone.bot.behavior.Behavior;
|
import baritone.bot.behavior.Behavior;
|
||||||
|
import baritone.bot.event.events.TickEvent;
|
||||||
import baritone.bot.pathing.movement.ActionCosts;
|
import baritone.bot.pathing.movement.ActionCosts;
|
||||||
import baritone.bot.pathing.movement.Movement;
|
import baritone.bot.pathing.movement.Movement;
|
||||||
import baritone.bot.pathing.movement.MovementState;
|
import baritone.bot.pathing.movement.MovementState;
|
||||||
|
@ -33,7 +34,8 @@ public class PathExecutor extends Behavior {
|
||||||
this.pathPosition = 0;
|
this.pathPosition = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTick() {
|
@Override
|
||||||
|
public void onTick(TickEvent event) {
|
||||||
if (pathPosition >= path.length()) {
|
if (pathPosition >= path.length()) {
|
||||||
//stop bugging me, I'm done
|
//stop bugging me, I'm done
|
||||||
//TODO Baritone.INSTANCE.behaviors.remove(this)
|
//TODO Baritone.INSTANCE.behaviors.remove(this)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package baritone.launch.mixins;
|
package baritone.launch.mixins;
|
||||||
|
|
||||||
import baritone.bot.Baritone;
|
import baritone.bot.Baritone;
|
||||||
|
import baritone.bot.event.events.TickEvent;
|
||||||
import baritone.bot.event.events.WorldEvent;
|
import baritone.bot.event.events.WorldEvent;
|
||||||
import baritone.bot.event.events.type.EventState;
|
import baritone.bot.event.events.type.EventState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@ -47,7 +48,13 @@ public class MixinMinecraft {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
private void runTick(CallbackInfo ci) {
|
private void runTick(CallbackInfo ci) {
|
||||||
Baritone.INSTANCE.getGameEventHandler().onTick();
|
Minecraft mc = (Minecraft) (Object) this;
|
||||||
|
Baritone.INSTANCE.getGameEventHandler().onTick(new TickEvent(
|
||||||
|
EventState.PRE,
|
||||||
|
(mc.player != null && mc.world != null)
|
||||||
|
? TickEvent.Type.IN
|
||||||
|
: TickEvent.Type.OUT
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(
|
@Redirect(
|
||||||
|
|
Loading…
Reference in New Issue