|
|
|
|
@@ -35,11 +35,11 @@ import org.bukkit.*;
|
|
|
|
|
import org.bukkit.block.Block;
|
|
|
|
|
import org.bukkit.block.BlockFace;
|
|
|
|
|
import org.bukkit.block.data.Waterlogged;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R1.CraftEquipmentSlot;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R1.CraftServer;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R2.CraftEquipmentSlot;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R2.CraftServer;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R2.CraftWorld;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R2.entity.CraftPlayer;
|
|
|
|
|
import org.bukkit.craftbukkit.v1_19_R2.inventory.CraftItemStack;
|
|
|
|
|
import org.bukkit.enchantments.Enchantment;
|
|
|
|
|
import org.bukkit.entity.Damageable;
|
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
@@ -49,11 +49,7 @@ import org.bukkit.util.BoundingBox;
|
|
|
|
|
import org.bukkit.util.Vector;
|
|
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
|
|
|
|
|
@@ -79,7 +75,7 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
private boolean inPlayerList;
|
|
|
|
|
|
|
|
|
|
private Bot(MinecraftServer minecraftServer, ServerLevel worldServer, GameProfile profile, boolean addToPlayerList) {
|
|
|
|
|
super(minecraftServer, worldServer, profile, null);
|
|
|
|
|
super(minecraftServer, worldServer, profile);
|
|
|
|
|
|
|
|
|
|
this.plugin = TerminatorPlus.getInstance();
|
|
|
|
|
this.scheduler = Bukkit.getScheduler();
|
|
|
|
|
@@ -126,7 +122,7 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
bot.setRot(loc.getYaw(), loc.getPitch());
|
|
|
|
|
bot.getBukkitEntity().setNoDamageTicks(0);
|
|
|
|
|
Bukkit.getOnlinePlayers().forEach(p -> ((CraftPlayer) p).getHandle().connection.send(
|
|
|
|
|
new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER, bot)));
|
|
|
|
|
new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, bot)));
|
|
|
|
|
if (addPlayerList)
|
|
|
|
|
nmsWorld.addNewPlayer(bot);
|
|
|
|
|
else
|
|
|
|
|
@@ -205,9 +201,10 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
|
|
|
|
|
private Packet<?>[] getRenderPackets() {
|
|
|
|
|
return new Packet[]{
|
|
|
|
|
new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER, this),
|
|
|
|
|
new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, this),
|
|
|
|
|
new ClientboundAddPlayerPacket(this),
|
|
|
|
|
new ClientboundSetEntityDataPacket(this.getId(), this.entityData, true),
|
|
|
|
|
//new ClientboundSetEntityDataPacket(this.getId(), this.entityData, true),
|
|
|
|
|
new ClientboundSetEntityDataPacket(this.getId(), this.entityData.packDirty()),
|
|
|
|
|
new ClientboundRotateHeadPacket(this, (byte) ((this.yHeadRot * 256f) / 360f))
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
@@ -215,7 +212,8 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
private Packet<?>[] getRenderPacketsNoInfo() {
|
|
|
|
|
return new Packet[]{
|
|
|
|
|
new ClientboundAddPlayerPacket(this),
|
|
|
|
|
new ClientboundSetEntityDataPacket(this.getId(), this.entityData, true),
|
|
|
|
|
//new ClientboundSetEntityDataPacket(this.getId(), this.entityData, true),
|
|
|
|
|
new ClientboundSetEntityDataPacket(this.getId(), this.entityData.packDirty()),
|
|
|
|
|
new ClientboundRotateHeadPacket(this, (byte) ((this.yHeadRot * 256f) / 360f))
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
@@ -411,14 +409,16 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
this.blocking = true;
|
|
|
|
|
this.blockUse = true;
|
|
|
|
|
startUsingItem(InteractionHand.OFF_HAND);
|
|
|
|
|
sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, true));
|
|
|
|
|
//sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, true));
|
|
|
|
|
sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData.packDirty()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void stopBlocking(int cooldown) {
|
|
|
|
|
this.blocking = false;
|
|
|
|
|
stopUsingItem();
|
|
|
|
|
scheduler.runTaskLater(plugin, () -> this.blockUse = false, cooldown);
|
|
|
|
|
sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, true));
|
|
|
|
|
//sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, true));
|
|
|
|
|
sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData.packDirty()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@@ -426,6 +426,7 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
return isBlocking();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void setShield(boolean enabled) {
|
|
|
|
|
this.shield = enabled;
|
|
|
|
|
|
|
|
|
|
@@ -621,7 +622,7 @@ public class Bot extends ServerPlayer implements Terminator {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void removeTab() {
|
|
|
|
|
sendPacket(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.REMOVE_PLAYER, this));
|
|
|
|
|
sendPacket(new ClientboundPlayerInfoRemovePacket(Arrays.asList(this.getUUID())));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setRemoveOnDeath(boolean enabled) {
|
|
|
|
|
|