diff --git a/pom.xml b/pom.xml
index 4c201f0..9deaa4b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.1
+ 3.8.1
8
8
@@ -50,6 +50,39 @@
maven-jar-plugin
2.3.1
+
+ net.md-5
+ specialsource-maven-plugin
+ 1.2.2
+
+
+ package
+
+ remap
+
+ remap-obf
+
+ org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:txt:maps-mojang
+ true
+ org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-mojang
+ true
+ remapped-obf
+
+
+
+ package
+
+ remap
+
+ remap-spigot
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar
+ org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:csrg:maps-spigot
+ org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-obf
+
+
+
+
@@ -77,7 +110,8 @@
org.spigotmc
spigot
- 1.16.5-R0.1-SNAPSHOT
+ 1.18.1-R0.1-SNAPSHOT
+ remapped-mojang
provided
diff --git a/src/main/java/net/nuggetmc/tplus/bot/Bot.java b/src/main/java/net/nuggetmc/tplus/bot/Bot.java
index 2fe4eb3..8bc6a1f 100644
--- a/src/main/java/net/nuggetmc/tplus/bot/Bot.java
+++ b/src/main/java/net/nuggetmc/tplus/bot/Bot.java
@@ -4,8 +4,27 @@ import com.mojang.authlib.GameProfile;
import com.mojang.datafixers.util.Pair;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
-import net.minecraft.server.v1_16_R3.Chunk;
-import net.minecraft.server.v1_16_R3.*;
+import net.minecraft.network.Connection;
+import net.minecraft.network.protocol.Packet;
+import net.minecraft.network.protocol.PacketFlow;
+import net.minecraft.network.protocol.game.*;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.syncher.EntityDataSerializers;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.server.network.ServerGamePacketListenerImpl;
+import net.minecraft.util.Mth;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.EquipmentSlot;
+import net.minecraft.world.entity.MoverType;
+import net.minecraft.world.entity.Pose;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.chunk.LevelChunk;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
import net.nuggetmc.tplus.TerminatorPlus;
import net.nuggetmc.tplus.bot.agent.Agent;
import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork;
@@ -19,14 +38,15 @@ import org.bukkit.World;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
-import org.bukkit.craftbukkit.v1_16_R3.CraftServer;
-import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
-import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
-import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack;
+import org.bukkit.craftbukkit.v1_18_R1.CraftServer;
+import org.bukkit.craftbukkit.v1_18_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer;
+import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack;
import org.bukkit.entity.Damageable;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitScheduler;
+import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;
import javax.annotation.Nullable;
@@ -35,7 +55,7 @@ import java.util.Collections;
import java.util.Objects;
import java.util.UUID;
-public class Bot extends EntityPlayer {
+public class Bot extends ServerPlayer {
private final TerminatorPlus plugin;
private final BukkitScheduler scheduler;
@@ -76,8 +96,8 @@ public class Bot extends EntityPlayer {
private final Vector offset;
- private Bot(MinecraftServer minecraftServer, WorldServer worldServer, GameProfile profile, PlayerInteractManager manager) {
- super(minecraftServer, worldServer, profile, manager);
+ private Bot(MinecraftServer minecraftServer, ServerLevel worldServer, GameProfile profile) {
+ super(minecraftServer, worldServer, profile);
this.plugin = TerminatorPlus.getInstance();
this.scheduler = Bukkit.getScheduler();
@@ -90,7 +110,7 @@ public class Bot extends EntityPlayer {
this.removeOnDeath = true;
this.offset = MathUtils.circleOffset(3);
- datawatcher.set(new DataWatcherObject<>(16, DataWatcherRegistry.a), (byte) 0xFF);
+ //this.entityData.set(new EntityDataAccessor<>(16, EntityDataSerializers.BYTE), (byte) 0xFF);
}
public static Bot createBot(Location loc, String name) {
@@ -99,28 +119,28 @@ public class Bot extends EntityPlayer {
public static Bot createBot(Location loc, String name, String[] skin) {
MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
- WorldServer nmsWorld = ((CraftWorld) Objects.requireNonNull(loc.getWorld())).getHandle();
+ ServerLevel nmsWorld = ((CraftWorld) Objects.requireNonNull(loc.getWorld())).getHandle();
UUID uuid = BotUtils.randomSteveUUID();
CustomGameProfile profile = new CustomGameProfile(uuid, ChatUtils.trim16(name), skin);
- PlayerInteractManager interactManager = new PlayerInteractManager(nmsWorld);
- Bot bot = new Bot(nmsServer, nmsWorld, profile, interactManager);
+ Bot bot = new Bot(nmsServer, nmsWorld, profile);
- bot.playerConnection = new PlayerConnection(nmsServer, new NetworkManager(EnumProtocolDirection.CLIENTBOUND) {
+ bot.connection = new ServerGamePacketListenerImpl(nmsServer, new Connection(PacketFlow.CLIENTBOUND) {
@Override
- public void sendPacket(Packet> packet, @Nullable GenericFutureListener extends Future super Void>> genericfuturelistener) { }
+ public void send(Packet> packet, @Nullable GenericFutureListener extends Future super Void>> genericfuturelistener) {
+ }
}, bot);
- bot.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
+ bot.setPos(loc.getX(), loc.getY(), loc.getZ());
+ bot.setRot(loc.getYaw(), loc.getPitch());
bot.getBukkitEntity().setNoDamageTicks(0);
- Bukkit.getOnlinePlayers().forEach(p -> ((CraftPlayer) p).getHandle().playerConnection.sendPacket(
- new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, bot)));
-
- nmsWorld.addEntity(bot);
+ Bukkit.getOnlinePlayers().forEach(p -> ((CraftPlayer) p).getHandle().connection.send(
+ new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER, bot)));
+ nmsWorld.addFreshEntity(bot);
bot.renderAll();
TerminatorPlus.getInstance().getManager().add(bot);
@@ -130,50 +150,50 @@ public class Bot extends EntityPlayer {
private void renderAll() {
Packet>[] packets = getRenderPacketsNoInfo();
- Bukkit.getOnlinePlayers().forEach(p -> renderNoInfo(((CraftPlayer) p).getHandle().playerConnection, packets, false));
+ Bukkit.getOnlinePlayers().forEach(p -> renderNoInfo(((CraftPlayer) p).getHandle().connection, packets, false));
}
- private void render(PlayerConnection connection, Packet>[] packets, boolean login) {
- connection.sendPacket(packets[0]);
- connection.sendPacket(packets[1]);
- connection.sendPacket(packets[2]);
+ private void render(ServerGamePacketListenerImpl connection, Packet>[] packets, boolean login) {
+ connection.send(packets[0]);
+ connection.send(packets[1]);
+ connection.send(packets[2]);
if (login) {
- scheduler.runTaskLater(plugin, () -> connection.sendPacket(packets[3]), 10);
+ scheduler.runTaskLater(plugin, () -> connection.send(packets[3]), 10);
} else {
- connection.sendPacket(packets[3]);
+ connection.send(packets[3]);
}
}
- private void renderNoInfo(PlayerConnection connection, Packet>[] packets, boolean login) {
- connection.sendPacket(packets[0]);
- connection.sendPacket(packets[1]);
+ private void renderNoInfo(ServerGamePacketListenerImpl connection, Packet>[] packets, boolean login) {
+ connection.send(packets[0]);
+ connection.send(packets[1]);
if (login) {
- scheduler.runTaskLater(plugin, () -> connection.sendPacket(packets[2]), 10);
+ scheduler.runTaskLater(plugin, () -> connection.send(packets[2]), 10);
} else {
- connection.sendPacket(packets[2]);
+ connection.send(packets[2]);
}
}
- public void render(PlayerConnection connection, boolean login) {
+ public void render(ServerGamePacketListenerImpl connection, boolean login) {
render(connection, getRenderPackets(), login);
}
private Packet>[] getRenderPackets() {
return new Packet[] {
- new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, this),
- new PacketPlayOutNamedEntitySpawn(this),
- new PacketPlayOutEntityMetadata(this.getId(), this.getDataWatcher(), true),
- new PacketPlayOutEntityHeadRotation(this, (byte) ((this.yaw * 256f) / 360f))
+ new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER, this),
+ new ClientboundAddPlayerPacket(this),
+ new ClientboundSetEntityDataPacket(this.getId(), this.entityData, true),
+ new ClientboundRotateHeadPacket(this, (byte) ((this.yHeadRot * 256f) / 360f))
};
}
private Packet>[] getRenderPacketsNoInfo() {
return new Packet[] {
- new PacketPlayOutNamedEntitySpawn(this),
- new PacketPlayOutEntityMetadata(this.getId(), this.getDataWatcher(), true),
- new PacketPlayOutEntityHeadRotation(this, (byte) ((this.yaw * 256f) / 360f))
+ new ClientboundAddPlayerPacket(this),
+ new ClientboundSetEntityDataPacket(this.getId(), this.entityData, true),
+ new ClientboundRotateHeadPacket(this, (byte) ((this.yHeadRot * 256f) / 360f))
};
}
@@ -211,7 +231,7 @@ public class Bot extends EntityPlayer {
}
private void sendPacket(Packet> packet) {
- Bukkit.getOnlinePlayers().forEach(p -> ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet));
+ Bukkit.getOnlinePlayers().forEach(p -> ((CraftPlayer) p).getHandle().connection.send(packet));
}
@Override
@@ -225,7 +245,7 @@ public class Bot extends EntityPlayer {
aliveTicks++;
if (fireTicks > 0) --fireTicks;
- if (noDamageTicks > 0) --noDamageTicks;
+ if (invulnerableTime > 0) --invulnerableTime;
if (jumpTicks > 0) --jumpTicks;
if (noFallTicks > 0) --noFallTicks;
@@ -253,19 +273,19 @@ public class Bot extends EntityPlayer {
fireDamageCheck();
fallDamageCheck();
- if(locY() < -64) {
- an();
+ if(position().y < -64) {
+ die(DamageSource.OUT_OF_WORLD);
}
oldVelocity = velocity.clone();
}
private void loadChunks() {
- net.minecraft.server.v1_16_R3.World world = getWorld();
+ Level world = getLevel();
- for (int i = chunkX - 1; i <= chunkX + 1; i++) {
- for (int j = chunkZ - 1; j <= chunkZ + 1; j++) {
- Chunk chunk = world.getChunkAt(i, j);
+ for (int i = chunkPosition().x - 1; i <= chunkPosition().x + 1; i++) {
+ for (int j = chunkPosition().z - 1; j <= chunkPosition().z + 1; j++) {
+ LevelChunk chunk = world.getChunk(i, j);
if (!chunk.loaded) {
chunk.loaded = true;
@@ -293,13 +313,13 @@ public class Bot extends EntityPlayer {
ignite();
}
- if (noDamageTicks == 0) {
+ if (invulnerableTime == 0) {
if (lava) {
- damageEntity(DamageSource.LAVA, 4);
- noDamageTicks = 20;//this used to be 12 ticks but that would cause the bot to take damage too quickly
+ hurt(DamageSource.LAVA, 4);
+ invulnerableTime = 20;//this used to be 12 ticks but that would cause the bot to take damage too quickly
} else if (fireTicks > 1) {
- damageEntity(DamageSource.FIRE, 1);
- noDamageTicks = 20;
+ hurt(DamageSource.IN_FIRE, 1);
+ invulnerableTime = 20;
}
}
@@ -314,8 +334,8 @@ public class Bot extends EntityPlayer {
}
public void setOnFirePackets(boolean onFire) {
- datawatcher.set(new DataWatcherObject<>(0, DataWatcherRegistry.a), onFire ? (byte) 1 : (byte) 0);
- sendPacket(new PacketPlayOutEntityMetadata(getId(), datawatcher, false));
+ //entityData.set(new EntityDataAccessor<>(0, EntityDataSerializers.BYTE), onFire ? (byte) 1 : (byte) 0);
+ //sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, false));
}
public boolean isOnFire() {
@@ -329,7 +349,7 @@ public class Bot extends EntityPlayer {
plugin.getManager().getAgent().onFallDamage(event);
if (!event.isCancelled()) {
- damageEntity(DamageSource.FALL, (float) Math.pow(3.6, -oldVelocity.getY()));
+ hurt(DamageSource.FALL, (float) Math.pow(3.6, -oldVelocity.getY()));
}
}
}
@@ -347,15 +367,15 @@ public class Bot extends EntityPlayer {
private void startBlocking() {
this.blocking = true;
this.blockUse = true;
- c(EnumHand.OFF_HAND);
- sendPacket(new PacketPlayOutEntityMetadata(getId(), datawatcher, true));
+ startUsingItem(InteractionHand.OFF_HAND);
+ sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, true));
}
private void stopBlocking(int cooldown) {
this.blocking = false;
- clearActiveItem();
+ stopUsingItem();
scheduler.runTaskLater(plugin, () -> this.blockUse = false, cooldown);
- sendPacket(new PacketPlayOutEntityMetadata(getId(), datawatcher, true));
+ sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, true));
}
public boolean isBlocking() {
@@ -365,6 +385,7 @@ public class Bot extends EntityPlayer {
public void setShield(boolean enabled) {
this.shield = enabled;
+ System.out.println("set shield");
setItemOffhand(new org.bukkit.inventory.ItemStack(enabled ? Material.SHIELD : Material.AIR));
}
@@ -390,7 +411,7 @@ public class Bot extends EntityPlayer {
}
}
- this.move(EnumMoveType.SELF, new Vec3D(velocity.getX(), y, velocity.getZ()));
+ this.move(MoverType.SELF, new Vec3(velocity.getX(), y, velocity.getZ()));
}
@Override
@@ -442,7 +463,7 @@ public class Bot extends EntityPlayer {
}
public void punch() {
- swingHand(EnumHand.MAIN_HAND);
+ swing(InteractionHand.MAIN_HAND);
}
public boolean checkGround() {
@@ -453,7 +474,7 @@ public class Bot extends EntityPlayer {
}
World world = getBukkitEntity().getWorld();
- AxisAlignedBB box = getBoundingBox();
+ AABB box = getBoundingBox();
double[] xVals = new double[] {
box.minX,
@@ -467,7 +488,7 @@ public class Bot extends EntityPlayer {
for (double x : xVals) {
for (double z : zVals) {
- Location loc = new Location(world, x, locY() - 0.01, z);
+ Location loc = new Location(world, x, position().y - 0.01, z);
Block block = world.getBlockAt(loc);
if (block.getType().isSolid() && BotUtils.solidAt(loc)) {
@@ -500,7 +521,7 @@ public class Bot extends EntityPlayer {
}
private void removeTab() {
- sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, this));
+ sendPacket(new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.REMOVE_PLAYER, this));
}
public void setRemoveOnDeath(boolean enabled) {
@@ -508,12 +529,12 @@ public class Bot extends EntityPlayer {
}
private void setDead() {
- sendPacket(new PacketPlayOutEntityDestroy(getId()));
+ sendPacket(new ClientboundRemoveEntitiesPacket(getId()));
this.dead = true;
- this.defaultContainer.b(this);
- if (this.activeContainer != null) {
- this.activeContainer.b(this);
+ this.inventoryMenu.removed(this);
+ if (this.containerMenu != null) {
+ this.containerMenu.removed(this);
}
}
@@ -530,12 +551,6 @@ public class Bot extends EntityPlayer {
}
}
- @Override
- public void die() {
- super.die();
- this.dieCheck();
- }
-
@Override
public void die(DamageSource damageSource) {
super.die(damageSource);
@@ -543,13 +558,13 @@ public class Bot extends EntityPlayer {
}
@Override
- public void collide(Entity entity) {
- if (!this.isSameVehicle(entity) && !entity.noclip && !this.noclip) {
- double d0 = entity.locX() - this.locX();
- double d1 = entity.locZ() - this.locZ();
- double d2 = MathHelper.a(d0, d1);
+ public void push(Entity entity) {
+ if (!this.isPassengerOfSameVehicle(entity) && !entity.noPhysics && !this.noPhysics) {
+ double d0 = entity.getX() - this.getZ();
+ double d1 = entity.getX() - this.getZ();
+ double d2 = Mth.absMax(d0, d1);
if (d2 >= 0.009999999776482582D) {
- d2 = MathHelper.sqrt(d2);
+ d2 = Math.sqrt(d2);
d0 /= d2;
d1 /= d2;
double d3 = 1.0D / d2;
@@ -561,32 +576,30 @@ public class Bot extends EntityPlayer {
d1 *= d3;
d0 *= 0.05000000074505806D;
d1 *= 0.05000000074505806D;
- d0 *= 1.0F - this.I;
- d1 *= 1.0F - this.I;
if (!this.isVehicle()) {
- velocity.add(new Vector(-d0 * 3, 0.0D, -d1 * 3));
+ velocity.add(new Vector(-d0, 0.0D, -d1));
}
if (!entity.isVehicle()) {
- entity.i(d0, 0.0D, d1);
+ entity.push(d0, 0.0D, d1);
}
}
}
}
@Override
- public boolean damageEntity(DamageSource damagesource, float f) {
- net.minecraft.server.v1_16_R3.Entity attacker = damagesource.getEntity();
+ public boolean hurt(DamageSource damagesource, float f) {
+ Entity attacker = damagesource.getEntity();
float damage;
- boolean playerInstance = attacker instanceof EntityPlayer;
+ boolean playerInstance = attacker instanceof ServerPlayer;
Player killer;
if (playerInstance) {
- killer = ((EntityPlayer) attacker).getBukkitEntity();
+ killer = ((ServerPlayer) attacker).getBukkitEntity();
BotDamageByPlayerEvent event = new BotDamageByPlayerEvent(this, killer, f);
@@ -602,7 +615,7 @@ public class Bot extends EntityPlayer {
damage = f;
}
- boolean damaged = super.damageEntity(damagesource, damage);
+ boolean damaged = super.hurt(damagesource, damage);
if (!damaged && blocking) {
getBukkitEntity().getWorld().playSound(getLocation(), Sound.ITEM_SHIELD_BLOCK, 1, 1);
@@ -651,17 +664,17 @@ public class Bot extends EntityPlayer {
float yaw, pitch;
if (keepYaw) {
- yaw = this.yaw;
+ yaw = this.getYRot();
pitch = MathUtils.fetchPitch(dir);
} else {
float[] vals = MathUtils.fetchYawPitch(dir);
yaw = vals[0];
pitch = vals[1];
- sendPacket(new PacketPlayOutEntityHeadRotation(getBukkitEntity().getHandle(), (byte) (yaw * 256 / 360f)));
+ sendPacket(new ClientboundRotateHeadPacket(getBukkitEntity().getHandle(), (byte) (yaw * 256 / 360f)));
}
- setYawPitch(yaw, pitch);
+ setRot(yaw, pitch);
}
public void attemptBlockPlace(Location loc, Material type, boolean down) {
@@ -684,35 +697,39 @@ public class Bot extends EntityPlayer {
}
public void setItem(org.bukkit.inventory.ItemStack item) {
- setItem(item, EnumItemSlot.MAINHAND);
+ setItem(item, EquipmentSlot.MAINHAND);
}
public void setItemOffhand(org.bukkit.inventory.ItemStack item) {
- setItem(item, EnumItemSlot.OFFHAND);
+ setItem(item, EquipmentSlot.OFFHAND);
+ System.out.println("set offhand");
}
- public void setItem(org.bukkit.inventory.ItemStack item, EnumItemSlot slot) {
+ public void setItem(org.bukkit.inventory.ItemStack item, EquipmentSlot slot) {
if (item == null) item = defaultItem;
- if (slot == EnumItemSlot.MAINHAND) {
+ System.out.println("set");
+ if (slot == EquipmentSlot.MAINHAND) {
getBukkitEntity().getInventory().setItemInMainHand(item);
- } else if (slot == EnumItemSlot.OFFHAND) {
+ } else if (slot == EquipmentSlot.OFFHAND) {
getBukkitEntity().getInventory().setItemInOffHand(item);
}
- sendPacket(new PacketPlayOutEntityEquipment(getId(), new ArrayList<>(Collections.singletonList(
+ System.out.println("slot = " + slot);
+ System.out.println("item = " + item);
+ sendPacket(new ClientboundSetEquipmentPacket(getId(), new ArrayList<>(Collections.singletonList(
new Pair<>(slot, CraftItemStack.asNMSCopy(item))
))));
}
public void swim() {
getBukkitEntity().setSwimming(true);
- registerPose(EntityPose.SWIMMING);
+ registerPose(Pose.SWIMMING);
}
public void sneak() {
getBukkitEntity().setSneaking(true);
- registerPose(EntityPose.CROUCHING);
+ registerPose(Pose.CROUCHING);
}
public void stand() {
@@ -720,26 +737,27 @@ public class Bot extends EntityPlayer {
player.setSneaking(false);
player.setSwimming(false);
- registerPose(EntityPose.STANDING);
+ registerPose(Pose.STANDING);
}
- private void registerPose(EntityPose pose) {
- datawatcher.set(DataWatcherRegistry.s.a(6), pose);
- sendPacket(new PacketPlayOutEntityMetadata(getId(), datawatcher, false));
+ private void registerPose(Pose pose) {
+ //entityData.set(new EntityDataAccessor<>(6, EntityDataSerializers.POSE), pose);
+ //sendPacket(new ClientboundSetEntityDataPacket(getId(), entityData, false));
}
@Override
- public void playerTick() {
- if (this.hurtTicks > 0) {
- this.hurtTicks -= 1;
+ public void doTick() {
+ if (this.hurtTime > 0) {
+ this.hurtTime -= 1;
}
- entityBaseTick();
- tickPotionEffects();
+ baseTick();
+ tickEffects();
- this.aU = (int) this.aT;
- this.aL = this.aK;
- this.lastYaw = this.yaw;
- this.lastPitch = this.pitch;
+ this.animStepO = (int) this.animStep;
+ this.yBodyRotO = this.yBodyRot;
+ this.yHeadRotO = this.yHeadRot;
+ this.yRotO = this.getYRot();
+ this.xRotO = this.getXRot();
}
}
diff --git a/src/main/java/net/nuggetmc/tplus/bot/BotManager.java b/src/main/java/net/nuggetmc/tplus/bot/BotManager.java
index 2f152d1..a1326a4 100644
--- a/src/main/java/net/nuggetmc/tplus/bot/BotManager.java
+++ b/src/main/java/net/nuggetmc/tplus/bot/BotManager.java
@@ -1,13 +1,13 @@
package net.nuggetmc.tplus.bot;
-import net.minecraft.server.v1_16_R3.PlayerConnection;
+import net.minecraft.server.network.ServerGamePacketListenerImpl;
import net.nuggetmc.tplus.bot.agent.Agent;
import net.nuggetmc.tplus.bot.agent.legacyagent.LegacyAgent;
import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork;
import net.nuggetmc.tplus.bot.event.BotDeathEvent;
import net.nuggetmc.tplus.utils.MojangAPI;
import org.bukkit.*;
-import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
+import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -41,7 +41,7 @@ public class BotManager implements Listener {
public void add(Bot bot) {
if (joinMessages) {
- Bukkit.broadcastMessage(ChatColor.YELLOW + bot.getName() + " joined the game");
+ Bukkit.broadcastMessage(ChatColor.YELLOW + (bot.getName() + " joined the game"));
}
bots.add(bot);
@@ -58,7 +58,7 @@ public class BotManager implements Listener {
}
public List fetchNames() {
- return bots.stream().map(Bot::getName).collect(Collectors.toList());
+ return bots.stream().map(Bot::getName).map(component -> component.getString()).collect(Collectors.toList());
}
public Agent getAgent() {
@@ -166,7 +166,7 @@ public class BotManager implements Listener {
@EventHandler
public void onJoin(PlayerJoinEvent event) {
- PlayerConnection connection = ((CraftPlayer) event.getPlayer()).getHandle().playerConnection;
+ ServerGamePacketListenerImpl connection = ((CraftPlayer) event.getPlayer()).getHandle().connection;
bots.forEach(bot -> bot.render(connection, true));
}
diff --git a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java
index c440573..6546b32 100644
--- a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java
+++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java
@@ -1,7 +1,7 @@
package net.nuggetmc.tplus.bot.agent.legacyagent;
-import net.minecraft.server.v1_16_R3.BlockPosition;
-import net.minecraft.server.v1_16_R3.PacketPlayOutBlockBreakAnimation;
+import net.minecraft.core.BlockPos;
+import net.minecraft.network.protocol.game.ClientboundBlockDestructionPacket;
import net.nuggetmc.tplus.bot.Bot;
import net.nuggetmc.tplus.bot.BotManager;
import net.nuggetmc.tplus.bot.agent.Agent;
@@ -16,8 +16,7 @@ import net.nuggetmc.tplus.utils.PlayerUtils;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
-import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
-import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
+import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer;
import org.bukkit.entity.Boat;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Mob;
@@ -753,7 +752,7 @@ public class LegacyAgent extends Agent {
bot.setItem(new ItemStack(item));
if (level == LegacyLevel.EAST_D || level == LegacyLevel.NORTH_D || level == LegacyLevel.SOUTH_D || level == LegacyLevel.WEST_D) {
- bot.pitch = 69;
+ bot.setXRot(69);
scheduler.runTaskLater(plugin, () -> {
btCheck.put(player, true);
@@ -836,9 +835,9 @@ public class LegacyAgent extends Agent {
if (player.isDead()) {
this.cancel();
- PacketPlayOutBlockBreakAnimation crack = new PacketPlayOutBlockBreakAnimation(crackList.get(block), new BlockPosition(block.getX(), block.getY(), block.getZ()), -1);
+ ClientboundBlockDestructionPacket crack = new ClientboundBlockDestructionPacket(crackList.get(block), new BlockPos(block.getX(), block.getY(), block.getZ()), -1);
for (Player all : Bukkit.getOnlinePlayers()) {
- ((CraftPlayer) all).getHandle().playerConnection.sendPacket(crack);
+ ((CraftPlayer) all).getHandle().connection.send(crack);
}
crackList.remove(block);
@@ -849,9 +848,9 @@ public class LegacyAgent extends Agent {
if (!block.equals(cur) || block.getType() != cur.getType()) {
this.cancel();
- PacketPlayOutBlockBreakAnimation crack = new PacketPlayOutBlockBreakAnimation(crackList.get(block), new BlockPosition(block.getX(), block.getY(), block.getZ()), -1);
+ ClientboundBlockDestructionPacket crack = new ClientboundBlockDestructionPacket(crackList.get(block), new BlockPos(block.getX(), block.getY(), block.getZ()), -1);
for (Player all : Bukkit.getOnlinePlayers()) {
- ((CraftPlayer) all).getHandle().playerConnection.sendPacket(crack);
+ ((CraftPlayer) all).getHandle().connection.send(crack);
}
crackList.remove(block);
@@ -864,9 +863,9 @@ public class LegacyAgent extends Agent {
if (i == 9) {
this.cancel();
- PacketPlayOutBlockBreakAnimation crack = new PacketPlayOutBlockBreakAnimation(crackList.get(block), new BlockPosition(block.getX(), block.getY(), block.getZ()), -1);
+ ClientboundBlockDestructionPacket crack = new ClientboundBlockDestructionPacket(crackList.get(block), new BlockPos(block.getX(), block.getY(), block.getZ()), -1);
for (Player all : Bukkit.getOnlinePlayers()) {
- ((CraftPlayer) all).getHandle().playerConnection.sendPacket(crack);
+ ((CraftPlayer) all).getHandle().connection.send(crack);
}
if (sound != null) {
@@ -894,9 +893,9 @@ public class LegacyAgent extends Agent {
if (block.getType() == Material.BARRIER || block.getType() == Material.BEDROCK || block.getType() == Material.END_PORTAL_FRAME) return;
- PacketPlayOutBlockBreakAnimation crack = new PacketPlayOutBlockBreakAnimation(crackList.get(block), new BlockPosition(block.getX(), block.getY(), block.getZ()), i);
+ ClientboundBlockDestructionPacket crack = new ClientboundBlockDestructionPacket(crackList.get(block), new BlockPos(block.getX(), block.getY(), block.getZ()), i);
for (Player all : Bukkit.getOnlinePlayers()) {
- ((CraftPlayer) all).getHandle().playerConnection.sendPacket(crack);
+ ((CraftPlayer) all).getHandle().connection.send(crack);
}
mining.put(this, (byte) (i + 1));
@@ -1191,7 +1190,7 @@ public class LegacyAgent extends Agent {
}
case NEAREST_BOT_DIFFER: {
- String name = bot.getName();
+ String name = bot.getName().getString();
for (Bot otherBot : manager.fetch()) {
if (bot != otherBot) {
@@ -1207,13 +1206,13 @@ public class LegacyAgent extends Agent {
}
case NEAREST_BOT_DIFFER_ALPHA: {
- String name = bot.getName().replaceAll("[^A-Za-z]+", "");
+ String name = bot.getName().getString().replaceAll("[^A-Za-z]+", "");
for (Bot otherBot : manager.fetch()) {
if (bot != otherBot) {
Player player = otherBot.getBukkitEntity();
- if (!name.equals(otherBot.getName().replaceAll("[^A-Za-z]+", "")) && validateCloserEntity(player, loc, result)) {
+ if (!name.equals(otherBot.getName().getString().replaceAll("[^A-Za-z]+", "")) && validateCloserEntity(player, loc, result)) {
result = player;
}
}
diff --git a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java
index de6e5c7..c3e2b8f 100644
--- a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java
+++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java
@@ -71,7 +71,7 @@ public class LegacyMats {
Material.LAVA,
Material.TALL_GRASS,
Material.SNOW,
- Material.GRASS_PATH,
+ Material.DIRT_PATH,
Material.CAVE_AIR,
Material.VINE,
Material.FERN,
diff --git a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java
index 724aed0..24c2db7 100644
--- a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java
+++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java
@@ -1,10 +1,13 @@
package net.nuggetmc.tplus.bot.agent.legacyagent;
-import net.minecraft.server.v1_16_R3.*;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.SoundType;
+import net.minecraft.world.level.block.state.BlockState;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.block.Block;
-import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
+import org.bukkit.craftbukkit.v1_18_R1.CraftWorld;
import org.bukkit.util.Vector;
import java.lang.reflect.Field;
@@ -35,23 +38,12 @@ public class LegacyUtils {
}
public static Sound breakBlockSound(Block block) {
- try {
- World nmsWorld = ((CraftWorld) block.getWorld()).getHandle();
- net.minecraft.server.v1_16_R3.Block nmsBlock = nmsWorld.getType(new BlockPosition(block.getX(), block.getY(), block.getZ())).getBlock();
+ Level nmsWorld = ((CraftWorld) block.getWorld()).getHandle();
+ BlockState blockState = nmsWorld.getBlockState(new BlockPos(block.getX(), block.getY(), block.getZ()));
+ net.minecraft.world.level.block.Block nmsBlock = blockState.getBlock();
- SoundEffectType soundEffectType = nmsBlock.getStepSound(nmsBlock.getBlockData());
+ SoundType soundEffectType = nmsBlock.getSoundType(blockState);
- Field breakSound = SoundEffectType.class.getDeclaredField("stepSound");
- breakSound.setAccessible(true);
- SoundEffect nmsSound = (SoundEffect) breakSound.get(soundEffectType);
-
- Field keyField = SoundEffect.class.getDeclaredField("b");
- keyField.setAccessible(true);
- MinecraftKey nmsString = (MinecraftKey) keyField.get(nmsSound);
-
- return Sound.valueOf(nmsString.getKey().replace(".", "_").toUpperCase());
- } catch (IllegalAccessException | NoSuchFieldException ex) {
- return null;
- }
+ return Sound.valueOf( soundEffectType.getBreakSound().getLocation().getPath().replace(".", "_").toUpperCase());
}
}
diff --git a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java
index c9af58f..b7efe26 100644
--- a/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java
+++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java
@@ -1,6 +1,6 @@
package net.nuggetmc.tplus.bot.agent.legacyagent.ai;
-import net.minecraft.server.v1_16_R3.EntityLiving;
+import net.minecraft.world.entity.LivingEntity;
import net.nuggetmc.tplus.TerminatorPlus;
import net.nuggetmc.tplus.bot.Bot;
import net.nuggetmc.tplus.bot.BotManager;
@@ -141,7 +141,7 @@ public class IntelligenceAgent {
}
bots.forEach(bot -> {
- String name = bot.getName();
+ String name = bot.getName().getString();
while (this.bots.containsKey(name)) {
name += "_";
@@ -245,7 +245,7 @@ public class IntelligenceAgent {
}
private int aliveCount() {
- return (int) bots.values().stream().filter(EntityLiving::isAlive).count();
+ return (int) bots.values().stream().filter(LivingEntity::isAlive).count();
}
private void close() {
diff --git a/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java b/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java
index 164a4e8..f915fe9 100644
--- a/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java
+++ b/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java
@@ -12,7 +12,7 @@ import net.nuggetmc.tplus.utils.Debugger;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.SimpleCommandMap;
-import org.bukkit.craftbukkit.v1_16_R3.CraftServer;
+import org.bukkit.craftbukkit.v1_18_R1.CraftServer;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -55,7 +55,7 @@ public class CommandHandler {
commandMap.put(command.getName(), command);
bukkitCommandMap.register(fallback, command);
- Method[] methods = command.getClass().getDeclaredMethods();
+ Method[] methods = command.getClass().getMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(Command.class)) {
diff --git a/src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java b/src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java
index b96a3aa..8dfffc6 100644
--- a/src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java
+++ b/src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java
@@ -1,6 +1,6 @@
package net.nuggetmc.tplus.command.commands;
-import net.minecraft.server.v1_16_R3.EnumItemSlot;
+import net.minecraft.world.entity.EquipmentSlot;
import net.nuggetmc.tplus.TerminatorPlus;
import net.nuggetmc.tplus.bot.Bot;
import net.nuggetmc.tplus.bot.BotManager;
@@ -160,10 +160,10 @@ public class BotCommand extends CommandInstance {
bot.getBukkitEntity().updateInventory();
// packet sending to ensure
- bot.setItem(armor[0], EnumItemSlot.FEET);
- bot.setItem(armor[1], EnumItemSlot.LEGS);
- bot.setItem(armor[2], EnumItemSlot.CHEST);
- bot.setItem(armor[3], EnumItemSlot.HEAD);
+ bot.setItem(armor[0], EquipmentSlot.FEET);
+ bot.setItem(armor[1], EquipmentSlot.LEGS);
+ bot.setItem(armor[2], EquipmentSlot.CHEST);
+ bot.setItem(armor[3], EquipmentSlot.HEAD);
});
sender.sendMessage("Successfully set the armor tier to " + ChatColor.YELLOW + tier + ChatColor.RESET + " for all current bots.");
@@ -207,7 +207,7 @@ public class BotCommand extends CommandInstance {
* neural network values (network name if loaded, otherwise RANDOM)
*/
- String botName = bot.getName();
+ String botName = bot.getName().getString();
String world = ChatColor.YELLOW + bot.getBukkitEntity().getWorld().getName();
Location loc = bot.getLocation();
String strLoc = ChatColor.YELLOW + formatter.format(loc.getBlockX()) + ", " + formatter.format(loc.getBlockY()) + ", " + formatter.format(loc.getBlockZ());
diff --git a/src/main/java/net/nuggetmc/tplus/utils/Debugger.java b/src/main/java/net/nuggetmc/tplus/utils/Debugger.java
index 6dbd2e6..2dac5ad 100644
--- a/src/main/java/net/nuggetmc/tplus/utils/Debugger.java
+++ b/src/main/java/net/nuggetmc/tplus/utils/Debugger.java
@@ -1,6 +1,6 @@
package net.nuggetmc.tplus.utils;
-import net.minecraft.server.v1_16_R3.EntityLiving;
+import net.minecraft.world.entity.LivingEntity;
import net.nuggetmc.tplus.TerminatorPlus;
import net.nuggetmc.tplus.bot.Bot;
import net.nuggetmc.tplus.bot.agent.Agent;
@@ -222,7 +222,7 @@ public class Debugger {
public void tpall() {
Player player = (Player) sender;
- TerminatorPlus.getInstance().getManager().fetch().stream().filter(EntityLiving::isAlive).forEach(bot -> bot.getBukkitEntity().teleport(player));
+ TerminatorPlus.getInstance().getManager().fetch().stream().filter(LivingEntity::isAlive).forEach(bot -> bot.getBukkitEntity().teleport(player));
}
public void viewsession() {
@@ -352,14 +352,14 @@ public class Debugger {
}
public void tp() {
- Bot bot = MathUtils.getRandomSetElement(TerminatorPlus.getInstance().getManager().fetch().stream().filter(EntityLiving::isAlive).collect(Collectors.toSet()));
+ Bot bot = MathUtils.getRandomSetElement(TerminatorPlus.getInstance().getManager().fetch().stream().filter(LivingEntity::isAlive).collect(Collectors.toSet()));
if (bot == null) {
print("Failed to locate a bot.");
return;
}
- print("Located bot", ChatColor.GREEN + bot.getName() + ChatColor.RESET + ".");
+ print("Located bot", (ChatColor.GREEN.toString() + bot.getName() + ChatColor.RESET.toString() + "."));
if (sender instanceof Player) {
print("Teleporting...");