Automate the stress testing of a Minecraft server network using bots

Merge branch 'nik012003-main'

PureGero a4d691b6 11041380

Changed files
+12 -11
src
main
java
com
github
puregero
minecraftstresstest
+12 -11
src/main/java/com/github/puregero/minecraftstresstest/Bot.java
··· 11 import java.util.concurrent.TimeUnit; 12 13 public class Bot extends ChannelInboundHandlerAdapter { 14 - private static final int PROTOCOL_VERSION = Integer.parseInt(System.getProperty("bot.protocol.version", "758")); // 758 is 1.18.2 15 private static final double RADIUS = Double.parseDouble(System.getProperty("bot.radius", "1000")); 16 private static final double CENTER_X = Double.parseDouble(System.getProperty("bot.x", "0")); 17 private static final double CENTER_Z = Double.parseDouble(System.getProperty("bot.z", "0")); ··· 56 FriendlyByteBuf loginStartPacket = new FriendlyByteBuf(ctx.alloc().buffer()); 57 loginStartPacket.writeVarInt(0x00); 58 loginStartPacket.writeUtf(username); 59 ctx.writeAndFlush(loginStartPacket); 60 } 61 ··· 107 108 CompletableFuture.delayedExecutor(1000,TimeUnit.MILLISECONDS).execute(() -> { 109 FriendlyByteBuf settingsPacket = new FriendlyByteBuf(ctx.alloc().buffer()); 110 - settingsPacket.writeVarInt(0x05); 111 settingsPacket.writeUtf("en_GB"); 112 settingsPacket.writeByte(2); 113 settingsPacket.writeVarInt(0); ··· 163 } 164 165 FriendlyByteBuf movePacket = new FriendlyByteBuf(ctx.alloc().buffer()); 166 - movePacket.writeVarInt(0x12); 167 movePacket.writeDouble(x); 168 movePacket.writeDouble(y); 169 movePacket.writeDouble(z); ··· 175 176 private void channelReadPlay(ChannelHandlerContext ctx, FriendlyByteBuf byteBuf) { 177 int packetId = byteBuf.readVarInt(); 178 - // System.out.println("id " + packetId + " (" + (dataLength == 0 ? length : dataLength) + ")"); 179 180 - if (packetId == 0x1A) { 181 System.out.println(username + " (" + uuid + ") was kicked due to " + byteBuf.readUtf()); 182 ctx.close(); 183 - } else if (packetId == 0x21) { 184 long id = byteBuf.readLong(); 185 186 FriendlyByteBuf keepAlivePacket = new FriendlyByteBuf(ctx.alloc().buffer()); 187 - keepAlivePacket.writeVarInt(0x0F); 188 keepAlivePacket.writeLong(id); 189 ctx.writeAndFlush(keepAlivePacket); 190 - } else if (packetId == 0x30) { 191 int id = byteBuf.readInt(); 192 193 FriendlyByteBuf keepAlivePacket = new FriendlyByteBuf(ctx.alloc().buffer()); 194 - keepAlivePacket.writeVarInt(0x1D); 195 keepAlivePacket.writeInt(id); 196 ctx.writeAndFlush(keepAlivePacket); 197 - } else if (packetId == 0x38) { 198 double dx = byteBuf.readDouble(); 199 double dy = byteBuf.readDouble(); 200 double dz = byteBuf.readDouble(); ··· 227 teleportConfirmPacket.writeVarInt(0x00); 228 teleportConfirmPacket.writeVarInt(id); 229 ctx.writeAndFlush(teleportConfirmPacket); 230 - } else if (packetId == 0x3C) { 231 String url = byteBuf.readUtf(); 232 String hash = byteBuf.readUtf(); 233 boolean forced = byteBuf.readBoolean();
··· 11 import java.util.concurrent.TimeUnit; 12 13 public class Bot extends ChannelInboundHandlerAdapter { 14 + private static final int PROTOCOL_VERSION = Integer.parseInt(System.getProperty("bot.protocol.version", "759")); // 759 is 1.19 https://wiki.vg/Protocol_version_numbers 15 private static final double RADIUS = Double.parseDouble(System.getProperty("bot.radius", "1000")); 16 private static final double CENTER_X = Double.parseDouble(System.getProperty("bot.x", "0")); 17 private static final double CENTER_Z = Double.parseDouble(System.getProperty("bot.z", "0")); ··· 56 FriendlyByteBuf loginStartPacket = new FriendlyByteBuf(ctx.alloc().buffer()); 57 loginStartPacket.writeVarInt(0x00); 58 loginStartPacket.writeUtf(username); 59 + loginStartPacket.writeBoolean(false); 60 ctx.writeAndFlush(loginStartPacket); 61 } 62 ··· 108 109 CompletableFuture.delayedExecutor(1000,TimeUnit.MILLISECONDS).execute(() -> { 110 FriendlyByteBuf settingsPacket = new FriendlyByteBuf(ctx.alloc().buffer()); 111 + settingsPacket.writeVarInt(0x07); 112 settingsPacket.writeUtf("en_GB"); 113 settingsPacket.writeByte(2); 114 settingsPacket.writeVarInt(0); ··· 164 } 165 166 FriendlyByteBuf movePacket = new FriendlyByteBuf(ctx.alloc().buffer()); 167 + movePacket.writeVarInt(0x14); 168 movePacket.writeDouble(x); 169 movePacket.writeDouble(y); 170 movePacket.writeDouble(z); ··· 176 177 private void channelReadPlay(ChannelHandlerContext ctx, FriendlyByteBuf byteBuf) { 178 int packetId = byteBuf.readVarInt(); 179 + // System.out.println("id 0x" + Integer.toHexString(packetId) + " (" + (dataLength == 0 ? length : dataLength) + ")"); 180 181 + if (packetId == 0x17) { 182 System.out.println(username + " (" + uuid + ") was kicked due to " + byteBuf.readUtf()); 183 ctx.close(); 184 + } else if (packetId == 0x1E) { 185 long id = byteBuf.readLong(); 186 187 FriendlyByteBuf keepAlivePacket = new FriendlyByteBuf(ctx.alloc().buffer()); 188 + keepAlivePacket.writeVarInt(0x11); 189 keepAlivePacket.writeLong(id); 190 ctx.writeAndFlush(keepAlivePacket); 191 + } else if (packetId == 0x2D) { 192 int id = byteBuf.readInt(); 193 194 FriendlyByteBuf keepAlivePacket = new FriendlyByteBuf(ctx.alloc().buffer()); 195 + keepAlivePacket.writeVarInt(0x1F); 196 keepAlivePacket.writeInt(id); 197 ctx.writeAndFlush(keepAlivePacket); 198 + } else if (packetId == 0x36) { 199 double dx = byteBuf.readDouble(); 200 double dy = byteBuf.readDouble(); 201 double dz = byteBuf.readDouble(); ··· 228 teleportConfirmPacket.writeVarInt(0x00); 229 teleportConfirmPacket.writeVarInt(id); 230 ctx.writeAndFlush(teleportConfirmPacket); 231 + } else if (packetId == 0x3A) { 232 String url = byteBuf.readUtf(); 233 String hash = byteBuf.readUtf(); 234 boolean forced = byteBuf.readBoolean();