More handlers

This commit is contained in:
Brady
2018-10-24 20:51:01 -05:00
parent 746e1f6652
commit 09a119c4ca
@@ -18,7 +18,10 @@
package baritone.bot.net;
import baritone.bot.IBaritoneUser;
import baritone.bot.entity.EntityBot;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.PacketThreadUtil;
import net.minecraft.network.play.INetHandlerPlayClient;
@@ -31,9 +34,6 @@ import net.minecraft.world.World;
import javax.annotation.Nonnull;
// Notes:
// - All methods have been given a checkThreadAndEnqueue call, before implementing the handler, verify that it is in the actual NetHandlerPlayClient method
/**
* @author Brady
* @since 10/22/2018
@@ -53,6 +53,16 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
*/
private final IBaritoneUser user;
/**
* The bot entity
*/
private EntityBot player;
/**
* The current world.
*/
private World world;
public BotNetHandlerPlayClient(NetworkManager networkManager, IThreadListener client, IBaritoneUser user) {
this.networkManager = networkManager;
this.client = client;
@@ -225,6 +235,8 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
@Override
public void handleJoinGame(@Nonnull SPacketJoinGame packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
// TODO: Set world and player
}
@Override
@@ -263,6 +275,8 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
@Override
public void handleRespawn(@Nonnull SPacketRespawn packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
// TODO: Set world and player
}
@Override
@@ -271,6 +285,10 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
@Override
public void handleHeldItemChange(@Nonnull SPacketHeldItemChange packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
if (InventoryPlayer.isHotbar(packetIn.getHeldItemHotbarIndex())) {
this.player.inventory.currentItem = packetIn.getHeldItemHotbarIndex();
}
}
@Override
@@ -281,26 +299,47 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
@Override
public void handleEntityMetadata(@Nonnull SPacketEntityMetadata packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
Entity entity = this.world.getEntityByID(packetIn.getEntityId());
if (entity != null && packetIn.getDataManagerEntries() != null) {
entity.getDataManager().setEntryValues(packetIn.getDataManagerEntries());
}
}
@Override
public void handleEntityVelocity(@Nonnull SPacketEntityVelocity packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
Entity entity = this.world.getEntityByID(packetIn.getEntityID());
if (entity != null) {
entity.setVelocity((double)packetIn.getMotionX() / 8000.0D, (double)packetIn.getMotionY() / 8000.0D, (double)packetIn.getMotionZ() / 8000.0D);
}
}
@Override
public void handleEntityEquipment(@Nonnull SPacketEntityEquipment packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
Entity entity = this.world.getEntityByID(packetIn.getEntityID());
if (entity != null) {
entity.setItemStackToSlot(packetIn.getEquipmentSlot(), packetIn.getItemStack());
}
}
@Override
public void handleSetExperience(@Nonnull SPacketSetExperience packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
this.player.setXPStats(packetIn.getExperienceBar(), packetIn.getTotalExperience(), packetIn.getLevel());
}
@Override
public void handleUpdateHealth(@Nonnull SPacketUpdateHealth packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
this.player.setPlayerSPHealth(packetIn.getHealth());
this.player.getFoodStats().setFoodLevel(packetIn.getFoodLevel());
this.player.getFoodStats().setFoodSaturationLevel(packetIn.getSaturationLevel());
}
@Override
@@ -320,9 +359,8 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
public void handleTimeUpdate(@Nonnull SPacketTimeUpdate packetIn) {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
World world = this.user.getLocalEntity().world;
world.setTotalWorldTime(packetIn.getTotalWorldTime());
world.setWorldTime(packetIn.getWorldTime());
this.world.setTotalWorldTime(packetIn.getTotalWorldTime());
this.world.setWorldTime(packetIn.getWorldTime());
// TODO: Calculate World TPS
}
@@ -359,7 +397,7 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
// We only care if we died
if (packetIn.eventType == SPacketCombatEvent.Event.ENTITY_DIED) {
if (packetIn.playerId == this.user.getLocalEntity().getEntityId()) {
if (packetIn.playerId == this.player.getEntityId()) {
// Perform an instantaneous respawn
this.networkManager.sendPacket(new CPacketClientStatus(CPacketClientStatus.State.PERFORM_RESPAWN));
}
@@ -399,9 +437,9 @@ public class BotNetHandlerPlayClient implements INetHandlerPlayClient {
PacketThreadUtil.checkThreadAndEnqueue(packetIn, this, this.client);
if (packetIn.getTicks() == 0) { // There is no cooldown
this.user.getLocalEntity().getCooldownTracker().removeCooldown(packetIn.getItem());
this.player.getCooldownTracker().removeCooldown(packetIn.getItem());
} else {
this.user.getLocalEntity().getCooldownTracker().setCooldown(packetIn.getItem(), packetIn.getTicks());
this.player.getCooldownTracker().setCooldown(packetIn.getItem(), packetIn.getTicks());
}
}