+12
-11
src/main/java/com/github/puregero/minecraftstresstest/Bot.java
+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();