diff --git a/src/main/java/baritone/bot/EntityBot.java b/src/main/java/baritone/bot/EntityBot.java index e715a4a83..98177e068 100644 --- a/src/main/java/baritone/bot/EntityBot.java +++ b/src/main/java/baritone/bot/EntityBot.java @@ -20,10 +20,33 @@ package baritone.bot; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.entity.Entity; +import net.minecraft.entity.IMerchant; +import net.minecraft.entity.passive.AbstractHorse; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; import net.minecraft.stats.RecipeBook; import net.minecraft.stats.StatisticsManager; +import net.minecraft.tileentity.CommandBlockBaseLogic; +import net.minecraft.tileentity.TileEntityCommandBlock; +import net.minecraft.tileentity.TileEntitySign; +import net.minecraft.tileentity.TileEntityStructure; +import net.minecraft.util.EnumHand; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.world.IInteractionObject; import net.minecraft.world.World; +// Some Notes: +// TODO: Make custom movement input +// startRiding references the sound manager +// onUpdateWalkingPlayer references the gameSettings autoJump flag +// notifyDataManagerChange references the sound manager +// onLivingUpdate makes a lot of references to mc fields +// - playerController +// - currentScreen +// - gameSettings +// - tutorial + /** * @author Brady * @since 10/23/2018 @@ -31,7 +54,87 @@ import net.minecraft.world.World; @SuppressWarnings("EntityConstructor") public class EntityBot extends EntityPlayerSP { - public EntityBot(Minecraft mc, World world, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) { + private final IBaritoneUser user; + + public EntityBot(IBaritoneUser user, Minecraft mc, World world, NetHandlerPlayClient netHandlerPlayClient, StatisticsManager statisticsManager, RecipeBook recipeBook) { super(mc, world, netHandlerPlayClient, statisticsManager, recipeBook); + this.user = user; + } + + @Override + public void closeScreenAndDropStack() { + this.inventory.setItemStack(ItemStack.EMPTY); + super.closeScreen(); + } + + @Override + public void sendStatusMessage(ITextComponent chatComponent, boolean actionBar) { + // TODO: Custom message handling + } + + @Override + public void sendMessage(ITextComponent component) { + // TODO: Custom message handling + } + + @Override + public void openEditSign(TileEntitySign signTile) { + // TODO: Custom GUI handling + } + + @Override + public void displayGuiEditCommandCart(CommandBlockBaseLogic commandBlock) { + // TODO: Custom GUI handling + } + + @Override + public void displayGuiCommandBlock(TileEntityCommandBlock commandBlock) { + // TODO: Custom GUI handling + } + + @Override + public void openEditStructure(TileEntityStructure structure) { + // TODO: Custom GUI handling + } + + @Override + public void openBook(ItemStack stack, EnumHand hand) { + // TODO: Custom GUI handling + } + + @Override + public void displayGUIChest(IInventory chestInventory) { + // TODO: Custom GUI handling + } + + @Override + public void openGuiHorseInventory(AbstractHorse horse, IInventory inventoryIn) { + // TODO: Custom GUI handling + } + + @Override + public void displayGui(IInteractionObject guiOwner) { + // TODO: Custom GUI handling + } + + @Override + public void displayVillagerTradeGui(IMerchant villager) { + // TODO: Custom GUI handling + } + + @Override + public void onCriticalHit(Entity entityHit) { + // Don't render + } + + @Override + public void onEnchantmentCritical(Entity entityHit) { + // Don't render + } + + @Override + protected boolean isCurrentViewEntity() { + // Don't you even try @leijurv + return false; } } diff --git a/src/main/java/baritone/bot/IBaritoneUser.java b/src/main/java/baritone/bot/IBaritoneUser.java index ea883345c..1ef6cf9b9 100644 --- a/src/main/java/baritone/bot/IBaritoneUser.java +++ b/src/main/java/baritone/bot/IBaritoneUser.java @@ -29,11 +29,28 @@ import javax.annotation.Nullable; */ public interface IBaritoneUser { + /** + * @return The current connection handler. + */ @Nullable BotNetHandlerPlayClient getConnection(); + /** + * @return The locally managed entity for this bot. + */ @Nullable EntityBot getLocalEntity(); + /** + * Returns the remote entity reported by the server that represents this bot connection. This is only + * provided when this bot goes into the range of another connection that is being managed. + * + * @return The remote entity for this bot + */ @Nullable EntityOtherPlayerMP getRemoteEntity(); + /** + * Returns the world that this entity is in. Equivalent to calling {@link #getLocalEntity().world} + * + * @return The world that this entity is in. + */ @Nullable World getWorld(); }