Send PacketPlayOutPlayerInfo before adding entity

This commit is contained in:
ThisTestUser
2021-08-25 15:57:06 -04:00
parent 0a2c1e7e88
commit 7c15dc0d94

View File

@@ -119,21 +119,23 @@ public class Bot extends EntityPlayer {
bot.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch()); bot.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
bot.getBukkitEntity().setNoDamageTicks(0); bot.getBukkitEntity().setNoDamageTicks(0);
bot.renderAll(); Bukkit.getOnlinePlayers().forEach(p -> ((CraftPlayer) p).getHandle().playerConnection.sendPacket(
new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, bot)));
if(mobTargeting) if(mobTargeting)
nmsWorld.addPlayerJoin(bot); nmsWorld.addPlayerJoin(bot);
else else
nmsWorld.addEntity(bot); nmsWorld.addEntity(bot);
bot.renderAll();
TerminatorPlus.getInstance().getManager().add(bot); TerminatorPlus.getInstance().getManager().add(bot);
return bot; return bot;
} }
private void renderAll() { private void renderAll() {
Packet<?>[] packets = getRenderPackets(); Packet<?>[] packets = getRenderPacketsNoTab();
Bukkit.getOnlinePlayers().forEach(p -> render(((CraftPlayer) p).getHandle().playerConnection, packets, false)); Bukkit.getOnlinePlayers().forEach(p -> renderNoTab(((CraftPlayer) p).getHandle().playerConnection, packets, false));
} }
private void render(PlayerConnection connection, Packet<?>[] packets, boolean login) { private void render(PlayerConnection connection, Packet<?>[] packets, boolean login) {
@@ -147,6 +149,17 @@ public class Bot extends EntityPlayer {
connection.sendPacket(packets[3]); connection.sendPacket(packets[3]);
} }
} }
private void renderNoTab(PlayerConnection connection, Packet<?>[] packets, boolean login) {
connection.sendPacket(packets[0]);
connection.sendPacket(packets[1]);
if (login) {
scheduler.runTaskLater(plugin, () -> connection.sendPacket(packets[2]), 10);
} else {
connection.sendPacket(packets[2]);
}
}
public void render(PlayerConnection connection, boolean login) { public void render(PlayerConnection connection, boolean login) {
render(connection, getRenderPackets(), login); render(connection, getRenderPackets(), login);
@@ -160,6 +173,14 @@ public class Bot extends EntityPlayer {
new PacketPlayOutEntityHeadRotation(this, (byte) ((this.yaw * 256f) / 360f)) new PacketPlayOutEntityHeadRotation(this, (byte) ((this.yaw * 256f) / 360f))
}; };
} }
private Packet<?>[] getRenderPacketsNoTab() {
return new Packet[] {
new PacketPlayOutNamedEntitySpawn(this),
new PacketPlayOutEntityMetadata(this.getId(), this.getDataWatcher(), true),
new PacketPlayOutEntityHeadRotation(this, (byte) ((this.yaw * 256f) / 360f))
};
}
public void setDefaultItem(ItemStack item) { public void setDefaultItem(ItemStack item) {
this.defaultItem = item; this.defaultItem = item;