getUser();
+}
diff --git a/src/main/java/baritone/BaritoneProvider.java b/src/main/java/baritone/BaritoneProvider.java
index b7c49b2c..58a73369 100644
--- a/src/main/java/baritone/BaritoneProvider.java
+++ b/src/main/java/baritone/BaritoneProvider.java
@@ -19,8 +19,9 @@ package baritone;
import baritone.api.IBaritone;
import baritone.api.IBaritoneProvider;
+import baritone.api.bot.IUserManager;
import baritone.api.cache.IWorldScanner;
-import baritone.bot.IBaritoneUser;
+import baritone.api.bot.IBaritoneUser;
import baritone.bot.UserManager;
import baritone.cache.WorldScanner;
import baritone.utils.player.PrimaryPlayerContext;
@@ -55,4 +56,9 @@ public final class BaritoneProvider implements IBaritoneProvider {
public IWorldScanner getWorldScanner() {
return WorldScanner.INSTANCE;
}
+
+ @Override
+ public IUserManager getUserManager() {
+ return UserManager.INSTANCE;
+ }
}
diff --git a/src/main/java/baritone/bot/BaritoneUser.java b/src/main/java/baritone/bot/BaritoneUser.java
index d6223a7a..c23b8afa 100644
--- a/src/main/java/baritone/bot/BaritoneUser.java
+++ b/src/main/java/baritone/bot/BaritoneUser.java
@@ -19,6 +19,8 @@ package baritone.bot;
import baritone.Baritone;
import baritone.api.IBaritone;
+import baritone.api.bot.IBaritoneUser;
+import baritone.api.bot.IUserManager;
import baritone.api.utils.IPlayerController;
import baritone.bot.spec.BotWorld;
import baritone.bot.spec.EntityBot;
@@ -33,7 +35,7 @@ import net.minecraft.util.Session;
* @author Brady
* @since 11/6/2018
*/
-class BaritoneUser implements IBaritoneUser {
+public class BaritoneUser implements IBaritoneUser {
private final UserManager manager;
private final NetworkManager networkManager;
@@ -56,24 +58,17 @@ class BaritoneUser implements IBaritoneUser {
this.baritone.init(); // actually massive iq
}
- @Override
+ public void onLoginSuccess(GameProfile profile, INetHandlerPlayClient netHandlerPlayClient) {
+ this.profile = profile;
+ this.netHandlerPlayClient = netHandlerPlayClient;
+ }
+
public void onWorldLoad(BotWorld world, EntityBot player, IPlayerController playerController) {
this.world = world;
this.player = player;
this.playerController = playerController;
}
- @Override
- public IPlayerController getPlayerController() {
- return this.playerController;
- }
-
- @Override
- public void onLoginSuccess(GameProfile profile, INetHandlerPlayClient netHandlerPlayClient) {
- this.profile = profile;
- this.netHandlerPlayClient = netHandlerPlayClient;
- }
-
@Override
public NetworkManager getNetworkManager() {
return this.networkManager;
@@ -89,6 +84,11 @@ class BaritoneUser implements IBaritoneUser {
return this.player;
}
+ @Override
+ public IPlayerController getPlayerController() {
+ return this.playerController;
+ }
+
@Override
public Session getSession() {
return this.session;
diff --git a/src/main/java/baritone/bot/BotPlayerContext.java b/src/main/java/baritone/bot/BotPlayerContext.java
index a2fcae03..7a2dc84e 100644
--- a/src/main/java/baritone/bot/BotPlayerContext.java
+++ b/src/main/java/baritone/bot/BotPlayerContext.java
@@ -17,12 +17,11 @@
package baritone.bot;
+import baritone.api.bot.IBaritoneUser;
import baritone.api.cache.IWorldData;
import baritone.api.utils.IPlayerContext;
import baritone.api.utils.IPlayerController;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World;
public class BotPlayerContext implements IPlayerContext {
diff --git a/src/main/java/baritone/bot/UserManager.java b/src/main/java/baritone/bot/UserManager.java
index 019096a7..55409ad8 100644
--- a/src/main/java/baritone/bot/UserManager.java
+++ b/src/main/java/baritone/bot/UserManager.java
@@ -18,13 +18,15 @@
package baritone.bot;
import baritone.api.BaritoneAPI;
+import baritone.api.bot.IBaritoneUser;
+import baritone.api.bot.IUserManager;
+import baritone.api.bot.connect.IConnectionResult;
import baritone.api.event.events.TickEvent;
import baritone.api.event.events.type.EventState;
import baritone.api.event.listener.AbstractGameEventListener;
import baritone.bot.connect.ConnectionResult;
import baritone.bot.handler.BotNetHandlerLoginClient;
import baritone.utils.Helper;
-import com.mojang.authlib.GameProfile;
import net.minecraft.client.multiplayer.ServerAddress;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.network.EnumConnectionState;
@@ -37,17 +39,15 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Collections;
import java.util.List;
-import java.util.Optional;
-import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
-import static baritone.bot.connect.ConnectionStatus.*;
+import static baritone.api.bot.connect.ConnectionStatus.*;
/**
* @author Brady
* @since 11/6/2018
*/
-public final class UserManager implements Helper {
+public final class UserManager implements IUserManager, Helper {
public static final UserManager INSTANCE = new UserManager();
@@ -79,24 +79,27 @@ public final class UserManager implements Helper {
* @param session The user session
* @return The result of the attempted connection
*/
- public final ConnectionResult connect(Session session) {
+ @Override
+ public final IConnectionResult connect(Session session) {
ServerData data = mc.getCurrentServerData();
if (data == null) {
return ConnectionResult.failed(NO_CURRENT_CONNECTION);
}
// Connect to the server from the parsed server data
- return connect(session, ServerAddress.fromString(data.serverIP));
+ return connect0(session, ServerAddress.fromString(data.serverIP));
}
/**
* Connects a new user with the specified {@link Session} to the specified server.
+ *
+ * Hi Mickey :)
*
* @param session The user session
* @param address The address of the server to connect to
* @return The result of the attempted connection
*/
- private ConnectionResult connect(Session session, ServerAddress address) {
+ private IConnectionResult connect0(Session session, ServerAddress address) {
InetAddress inetAddress;
try {
@@ -114,7 +117,7 @@ public final class UserManager implements Helper {
);
// Create User
- IBaritoneUser user = new BaritoneUser(this, networkManager, session);
+ BaritoneUser user = new BaritoneUser(this, networkManager, session);
this.users.add(user);
// Setup login handler and send connection packets
@@ -140,10 +143,13 @@ public final class UserManager implements Helper {
}
/**
- * Disconnects the specified {@link IBaritoneUser} from its current server.
- *
- * @param user The user to disconnect
+ * @return The bot world provider
*/
+ public final BotWorldProvider getWorldProvider() {
+ return this.worldProvider;
+ }
+
+ @Override
public final void disconnect(IBaritoneUser user) {
// It's probably fine to pass null to this, because the handlers aren't doing anything with it
// noinspection ConstantConditions
@@ -151,33 +157,7 @@ public final class UserManager implements Helper {
this.users.remove(user);
}
- /**
- * Finds the {@link IBaritoneUser} associated with the specified {@link GameProfile}
- *
- * @param profile The game profile of the user
- * @return The user, {@link Optional#empty()} if no match or {@code profile} is {@code null}
- */
- public final Optional getUserByProfile(GameProfile profile) {
- return profile == null ? Optional.empty() : this.users.stream().filter(user -> user.getProfile().equals(profile)).findFirst();
- }
-
- /**
- * Finds the {@link IBaritoneUser} associated with the specified {@link UUID}
- *
- * @param uuid The uuid of the user
- * @return The user, {@link Optional#empty()} if no match or {@code uuid} is {@code null}
- */
- public final Optional getUserByUUID(UUID uuid) {
- return uuid == null ? Optional.empty() : this.users.stream().filter(user -> user.getProfile().getId().equals(uuid)).findFirst();
- }
-
- /**
- * @return The bot world provider
- */
- public final BotWorldProvider getWorldProvider() {
- return this.worldProvider;
- }
-
+ @Override
public final List users() {
return Collections.unmodifiableList(this.users);
}
diff --git a/src/main/java/baritone/bot/connect/ConnectionResult.java b/src/main/java/baritone/bot/connect/ConnectionResult.java
index 277f93f0..e2c36332 100644
--- a/src/main/java/baritone/bot/connect/ConnectionResult.java
+++ b/src/main/java/baritone/bot/connect/ConnectionResult.java
@@ -17,33 +17,46 @@
package baritone.bot.connect;
-import baritone.bot.IBaritoneUser;
+import baritone.api.bot.IBaritoneUser;
+import baritone.api.bot.connect.ConnectionStatus;
+import baritone.api.bot.connect.IConnectionResult;
import java.util.Objects;
+import java.util.Optional;
-import static baritone.bot.connect.ConnectionStatus.SUCCESS;
+import static baritone.api.bot.connect.ConnectionStatus.SUCCESS;
/**
* @author Brady
* @since 11/6/2018
*/
-public class ConnectionResult {
+public final class ConnectionResult implements IConnectionResult {
/**
* The result status
*/
- public final ConnectionStatus status;
+ private final ConnectionStatus status;
/**
* The user created, if the status is {@link ConnectionStatus#SUCCESS}
*/
- public final IBaritoneUser user;
+ private final IBaritoneUser user;
private ConnectionResult(ConnectionStatus status, IBaritoneUser user) {
this.status = status;
this.user = user;
}
+ @Override
+ public ConnectionStatus getStatus() {
+ return this.status;
+ }
+
+ @Override
+ public Optional getUser() {
+ return Optional.ofNullable(user);
+ }
+
/**
* Creates a new failed {@link ConnectionResult}.
*
diff --git a/src/main/java/baritone/bot/handler/BotNetHandlerLoginClient.java b/src/main/java/baritone/bot/handler/BotNetHandlerLoginClient.java
index 5006622a..9f6d8333 100644
--- a/src/main/java/baritone/bot/handler/BotNetHandlerLoginClient.java
+++ b/src/main/java/baritone/bot/handler/BotNetHandlerLoginClient.java
@@ -17,7 +17,8 @@
package baritone.bot.handler;
-import baritone.bot.IBaritoneUser;
+import baritone.api.bot.IBaritoneUser;
+import baritone.bot.BaritoneUser;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.exceptions.AuthenticationException;
import com.mojang.authlib.exceptions.AuthenticationUnavailableException;
@@ -59,9 +60,9 @@ public class BotNetHandlerLoginClient extends NetHandlerLoginClient {
/**
* The bot of this connection
*/
- private final IBaritoneUser user;
+ private final BaritoneUser user;
- public BotNetHandlerLoginClient(NetworkManager networkManager, IBaritoneUser user) {
+ public BotNetHandlerLoginClient(NetworkManager networkManager, BaritoneUser user) {
super(networkManager, Minecraft.getMinecraft(), null);
this.networkManager = networkManager;
this.mc = Minecraft.getMinecraft();
diff --git a/src/main/java/baritone/bot/handler/BotNetHandlerPlayClient.java b/src/main/java/baritone/bot/handler/BotNetHandlerPlayClient.java
index ceb1362c..366be9df 100644
--- a/src/main/java/baritone/bot/handler/BotNetHandlerPlayClient.java
+++ b/src/main/java/baritone/bot/handler/BotNetHandlerPlayClient.java
@@ -17,7 +17,7 @@
package baritone.bot.handler;
-import baritone.bot.IBaritoneUser;
+import baritone.bot.BaritoneUser;
import baritone.bot.spec.BotPlayerController;
import baritone.bot.spec.BotWorld;
import baritone.bot.spec.EntityBot;
@@ -86,7 +86,7 @@ public class BotNetHandlerPlayClient extends NetHandlerPlayClient {
/**
* The bot of this connection
*/
- private final IBaritoneUser user;
+ private final BaritoneUser user;
/**
* The bot entity
@@ -103,7 +103,7 @@ public class BotNetHandlerPlayClient extends NetHandlerPlayClient {
*/
private BotPlayerController playerController;
- public BotNetHandlerPlayClient(NetworkManager networkManager, IBaritoneUser user, Minecraft client, GameProfile profile) {
+ public BotNetHandlerPlayClient(NetworkManager networkManager, BaritoneUser user, Minecraft client, GameProfile profile) {
// noinspection ConstantConditions
super(client, null, networkManager, profile);
this.networkManager = networkManager;
diff --git a/src/main/java/baritone/bot/spec/BotPlayerController.java b/src/main/java/baritone/bot/spec/BotPlayerController.java
index 5869520e..23cfce58 100644
--- a/src/main/java/baritone/bot/spec/BotPlayerController.java
+++ b/src/main/java/baritone/bot/spec/BotPlayerController.java
@@ -18,18 +18,18 @@
package baritone.bot.spec;
import baritone.api.utils.IPlayerController;
-import baritone.bot.IBaritoneUser;
+import baritone.api.bot.IBaritoneUser;
import net.minecraft.block.Block;
import net.minecraft.block.BlockCommandBlock;
import net.minecraft.block.BlockStructure;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.ClickType;
import net.minecraft.item.ItemStack;
-import net.minecraft.item.ItemSword;
import net.minecraft.network.play.client.CPacketClickWindow;
import net.minecraft.network.play.client.CPacketHeldItemChange;
import net.minecraft.network.play.client.CPacketPlayerDigging;
@@ -66,7 +66,7 @@ public class BotPlayerController implements IPlayerController {
public boolean onPlayerDamageBlock(BlockPos pos, EnumFacing side) {
this.syncHeldItem();
- EntityBot player = this.user.getEntity();
+ EntityPlayerSP player = this.user.getEntity();
World world = player.world;
if (this.blockHitDelay > 0) {
@@ -145,7 +145,7 @@ public class BotPlayerController implements IPlayerController {
}
private boolean clickBlock(BlockPos pos, EnumFacing side) {
- EntityBot player = this.user.getEntity();
+ EntityPlayerSP player = this.user.getEntity();
World world = player.world;
if (!canBreak(player, pos)) {
@@ -180,7 +180,7 @@ public class BotPlayerController implements IPlayerController {
}
private void handleBreak(BlockPos pos) {
- EntityBot player = this.user.getEntity();
+ EntityPlayerSP player = this.user.getEntity();
World world = player.world;
IBlockState state = world.getBlockState(pos);
diff --git a/src/main/java/baritone/bot/spec/EntityBot.java b/src/main/java/baritone/bot/spec/EntityBot.java
index 1edbf9ed..4f97557f 100644
--- a/src/main/java/baritone/bot/spec/EntityBot.java
+++ b/src/main/java/baritone/bot/spec/EntityBot.java
@@ -17,7 +17,7 @@
package baritone.bot.spec;
-import baritone.bot.IBaritoneUser;
+import baritone.api.bot.IBaritoneUser;
import baritone.utils.PlayerMovementInput;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
diff --git a/src/main/java/baritone/utils/ExampleBaritoneControl.java b/src/main/java/baritone/utils/ExampleBaritoneControl.java
index a1b16bf5..502e3d4b 100644
--- a/src/main/java/baritone/utils/ExampleBaritoneControl.java
+++ b/src/main/java/baritone/utils/ExampleBaritoneControl.java
@@ -19,6 +19,7 @@ package baritone.utils;
import baritone.Baritone;
import baritone.api.Settings;
+import baritone.api.bot.connect.IConnectionResult;
import baritone.api.cache.IRememberedInventory;
import baritone.api.cache.IWaypoint;
import baritone.api.event.events.ChatEvent;
@@ -544,7 +545,7 @@ public class ExampleBaritoneControl extends Behavior implements Helper {
// TODO: Temporary command to test bots offline
if (msg.equals("bot")) {
System.out.println("DOING A BOT");
- ConnectionResult result = UserManager.INSTANCE.connect(new Session("Bot" + System.currentTimeMillis() % 1000, UUID.randomUUID().toString(), "", ""));
+ IConnectionResult result = UserManager.INSTANCE.connect(new Session("Bot" + System.currentTimeMillis() % 1000, UUID.randomUUID().toString(), "", ""));
System.out.println(result);
return true;
}