Move Behavior to api

This commit is contained in:
Brady 2018-09-12 17:53:29 -05:00
parent fb8ee44447
commit 0a0209d2e1
No known key found for this signature in database
GPG Key ID: 73A788379A197567
11 changed files with 41 additions and 52 deletions

View File

@ -15,19 +15,18 @@
* along with Baritone. If not, see <https://www.gnu.org/licenses/>. * along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/ */
package baritone.behavior; package baritone.api.behavior;
import baritone.api.event.listener.AbstractGameEventListener; import baritone.api.event.listener.AbstractGameEventListener;
import baritone.utils.Helper; import baritone.api.utils.interfaces.Toggleable;
import baritone.utils.interfaces.Toggleable;
/** /**
* A generic bot behavior. * A type of game event listener that can be toggled.
* *
* @author Brady * @author Brady
* @since 8/1/2018 6:29 PM * @since 8/1/2018 6:29 PM
*/ */
public class Behavior implements AbstractGameEventListener, Toggleable, Helper { public class Behavior implements AbstractGameEventListener, Toggleable {
/** /**
* Whether or not this behavior is enabled * Whether or not this behavior is enabled
@ -51,35 +50,18 @@ public class Behavior implements AbstractGameEventListener, Toggleable, Helper {
*/ */
@Override @Override
public final boolean setEnabled(boolean enabled) { public final boolean setEnabled(boolean enabled) {
boolean newState = getNewState(this.enabled, enabled); if (enabled == this.enabled)
if (newState == this.enabled) {
return this.enabled; return this.enabled;
}
if (this.enabled = newState) { if (this.enabled = enabled) {
onStart(); this.onEnable();
} else { } else {
onCancel(); this.onDisable();
} }
return this.enabled; return this.enabled;
} }
/**
* Function to determine what the new enabled state of this
* {@link Behavior} should be given the old state, and the
* proposed state. Intended to be overridden by behaviors
* that should always be active, given that the bot itself is
* active.
*
* @param oldState The old state
* @param proposedState The proposed state
* @return The new state
*/
public boolean getNewState(boolean oldState, boolean proposedState) {
return proposedState;
}
/** /**
* @return Whether or not this {@link Behavior} is active. * @return Whether or not this {@link Behavior} is active.
*/ */
@ -87,14 +69,4 @@ public class Behavior implements AbstractGameEventListener, Toggleable, Helper {
public final boolean isEnabled() { public final boolean isEnabled() {
return this.enabled; return this.enabled;
} }
/**
* Called when the state changes from disabled to enabled
*/
public void onStart() {}
/**
* Called when the state changes from enabled to disabled
*/
public void onCancel() {}
} }

View File

@ -15,7 +15,7 @@
* along with Baritone. If not, see <https://www.gnu.org/licenses/>. * along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/ */
package baritone.utils.interfaces; package baritone.api.utils.interfaces;
/** /**
* @author Brady * @author Brady
@ -41,4 +41,14 @@ public interface Toggleable {
* @return Whether or not this {@link Toggleable} object is enabled * @return Whether or not this {@link Toggleable} object is enabled
*/ */
boolean isEnabled(); boolean isEnabled();
/**
* Called when the state changes from disabled to enabled
*/
default void onEnable() {}
/**
* Called when the state changes from enabled to disabled
*/
default void onDisable() {}
} }

View File

@ -18,7 +18,7 @@
package baritone; package baritone;
import baritone.api.event.listener.IGameEventListener; import baritone.api.event.listener.IGameEventListener;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.behavior.impl.*; import baritone.behavior.impl.*;
import baritone.event.GameEventHandler; import baritone.event.GameEventHandler;
import baritone.utils.InputOverrideHandler; import baritone.utils.InputOverrideHandler;

View File

@ -18,7 +18,7 @@
package baritone.behavior.impl; package baritone.behavior.impl;
import baritone.api.event.events.TickEvent; import baritone.api.event.events.TickEvent;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.pathing.goals.GoalNear; import baritone.pathing.goals.GoalNear;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;

View File

@ -17,11 +17,12 @@
package baritone.behavior.impl; package baritone.behavior.impl;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.cache.Waypoint; import baritone.cache.Waypoint;
import baritone.cache.WorldProvider; import baritone.cache.WorldProvider;
import baritone.api.event.events.BlockInteractEvent; import baritone.api.event.events.BlockInteractEvent;
import baritone.utils.BlockStateInterface; import baritone.utils.BlockStateInterface;
import baritone.utils.Helper;
import net.minecraft.block.BlockBed; import net.minecraft.block.BlockBed;
/** /**
@ -33,7 +34,7 @@ import net.minecraft.block.BlockBed;
* @author Brady * @author Brady
* @since 8/22/2018 * @since 8/22/2018
*/ */
public final class LocationTrackingBehavior extends Behavior { public final class LocationTrackingBehavior extends Behavior implements Helper {
public static final LocationTrackingBehavior INSTANCE = new LocationTrackingBehavior(); public static final LocationTrackingBehavior INSTANCE = new LocationTrackingBehavior();

View File

@ -21,10 +21,11 @@ import baritone.Baritone;
import baritone.Settings; import baritone.Settings;
import baritone.api.event.events.PlayerUpdateEvent; import baritone.api.event.events.PlayerUpdateEvent;
import baritone.api.event.events.RotationMoveEvent; import baritone.api.event.events.RotationMoveEvent;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.utils.Helper;
import baritone.utils.Rotation; import baritone.utils.Rotation;
public class LookBehavior extends Behavior { public class LookBehavior extends Behavior implements Helper {
public static final LookBehavior INSTANCE = new LookBehavior(); public static final LookBehavior INSTANCE = new LookBehavior();

View File

@ -3,7 +3,8 @@ package baritone.behavior.impl;
import baritone.api.event.events.PacketEvent; import baritone.api.event.events.PacketEvent;
import baritone.api.event.events.PlayerUpdateEvent; import baritone.api.event.events.PlayerUpdateEvent;
import baritone.api.event.events.type.EventState; import baritone.api.event.events.type.EventState;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.utils.Helper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
import net.minecraft.network.play.client.CPacketCloseWindow; import net.minecraft.network.play.client.CPacketCloseWindow;
@ -20,7 +21,7 @@ import java.util.*;
* @author Brady * @author Brady
* @since 8/6/2018 9:47 PM * @since 8/6/2018 9:47 PM
*/ */
public class MemoryBehavior extends Behavior { public class MemoryBehavior extends Behavior implements Helper {
public static MemoryBehavior INSTANCE = new MemoryBehavior(); public static MemoryBehavior INSTANCE = new MemoryBehavior();

View File

@ -18,7 +18,7 @@
package baritone.behavior.impl; package baritone.behavior.impl;
import baritone.api.event.events.PathEvent; import baritone.api.event.events.PathEvent;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.cache.CachedChunk; import baritone.cache.CachedChunk;
import baritone.cache.ChunkPacker; import baritone.cache.ChunkPacker;
import baritone.cache.WorldProvider; import baritone.cache.WorldProvider;
@ -27,6 +27,7 @@ import baritone.pathing.goals.Goal;
import baritone.pathing.goals.GoalComposite; import baritone.pathing.goals.GoalComposite;
import baritone.pathing.goals.GoalTwoBlocks; import baritone.pathing.goals.GoalTwoBlocks;
import baritone.utils.BlockStateInterface; import baritone.utils.BlockStateInterface;
import baritone.utils.Helper;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.chunk.EmptyChunk; import net.minecraft.world.chunk.EmptyChunk;
@ -42,7 +43,8 @@ import java.util.stream.Collectors;
* *
* @author leijurv * @author leijurv
*/ */
public class MineBehavior extends Behavior { public class MineBehavior extends Behavior implements Helper {
public static final MineBehavior INSTANCE = new MineBehavior(); public static final MineBehavior INSTANCE = new MineBehavior();
private MineBehavior() { private MineBehavior() {

View File

@ -22,7 +22,7 @@ import baritone.api.event.events.PathEvent;
import baritone.api.event.events.PlayerUpdateEvent; import baritone.api.event.events.PlayerUpdateEvent;
import baritone.api.event.events.RenderEvent; import baritone.api.event.events.RenderEvent;
import baritone.api.event.events.TickEvent; import baritone.api.event.events.TickEvent;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.pathing.calc.AStarPathFinder; import baritone.pathing.calc.AStarPathFinder;
import baritone.pathing.calc.AbstractNodeCostSearch; import baritone.pathing.calc.AbstractNodeCostSearch;
import baritone.pathing.calc.IPathFinder; import baritone.pathing.calc.IPathFinder;
@ -31,6 +31,7 @@ import baritone.pathing.movement.MovementHelper;
import baritone.pathing.path.IPath; import baritone.pathing.path.IPath;
import baritone.pathing.path.PathExecutor; import baritone.pathing.path.PathExecutor;
import baritone.utils.BlockStateInterface; import baritone.utils.BlockStateInterface;
import baritone.utils.Helper;
import baritone.utils.PathRenderer; import baritone.utils.PathRenderer;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -40,7 +41,7 @@ import java.awt.*;
import java.util.Collections; import java.util.Collections;
import java.util.Optional; import java.util.Optional;
public final class PathingBehavior extends Behavior { public final class PathingBehavior extends Behavior implements Helper {
public static final PathingBehavior INSTANCE = new PathingBehavior(); public static final PathingBehavior INSTANCE = new PathingBehavior();

View File

@ -25,7 +25,7 @@ import baritone.cache.WorldProvider;
import baritone.utils.BlockStateInterface; import baritone.utils.BlockStateInterface;
import baritone.utils.Helper; import baritone.utils.Helper;
import baritone.utils.InputOverrideHandler; import baritone.utils.InputOverrideHandler;
import baritone.utils.interfaces.Toggleable; import baritone.api.utils.interfaces.Toggleable;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.Chunk;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;

View File

@ -20,7 +20,7 @@ package baritone.utils;
import baritone.Baritone; import baritone.Baritone;
import baritone.Settings; import baritone.Settings;
import baritone.api.event.events.ChatEvent; import baritone.api.event.events.ChatEvent;
import baritone.behavior.Behavior; import baritone.api.behavior.Behavior;
import baritone.behavior.impl.FollowBehavior; import baritone.behavior.impl.FollowBehavior;
import baritone.behavior.impl.MineBehavior; import baritone.behavior.impl.MineBehavior;
import baritone.behavior.impl.PathingBehavior; import baritone.behavior.impl.PathingBehavior;
@ -41,7 +41,8 @@ import net.minecraft.util.math.BlockPos;
import java.util.*; import java.util.*;
public class ExampleBaritoneControl extends Behavior { public class ExampleBaritoneControl extends Behavior implements Helper {
public static ExampleBaritoneControl INSTANCE = new ExampleBaritoneControl(); public static ExampleBaritoneControl INSTANCE = new ExampleBaritoneControl();
private ExampleBaritoneControl() { private ExampleBaritoneControl() {