From 093464aa4b9ed924c1b8c2e24f60aedb6c42a7bf Mon Sep 17 00:00:00 2001 From: MCMDEV Date: Sun, 20 Feb 2022 12:17:26 +0100 Subject: [PATCH] Update to 1.18.1 --- pom.xml | 38 ++- src/main/java/net/nuggetmc/tplus/bot/Bot.java | 246 ++++++++++-------- .../net/nuggetmc/tplus/bot/BotManager.java | 10 +- .../bot/agent/legacyagent/LegacyAgent.java | 31 ++- .../bot/agent/legacyagent/LegacyMats.java | 2 +- .../bot/agent/legacyagent/LegacyUtils.java | 28 +- .../legacyagent/ai/IntelligenceAgent.java | 6 +- .../tplus/command/CommandHandler.java | 4 +- .../tplus/command/commands/BotCommand.java | 12 +- .../net/nuggetmc/tplus/utils/Debugger.java | 8 +- 10 files changed, 214 insertions(+), 171 deletions(-) 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> genericfuturelistener) { } + public void send(Packet packet, @Nullable GenericFutureListener> 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...");