From 75d82e44bd927a2f8257907b2baf193c6b4fa7e7 Mon Sep 17 00:00:00 2001
From: SerendipityR <48401197+SerendipityR-2022@users.noreply.github.com>
Date: Sun, 1 Jan 2023 15:57:25 +0800
Subject: [PATCH] =?UTF-8?q?=E5=81=87=E4=BA=BA=E8=87=AA=E5=8A=A8=E9=87=8D?=
=?UTF-8?q?=E7=94=9F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
EndMinecraftPlusV2.iml | 1 +
VersionSupport-107/VersionSupport-107.iml | 38 +++++++++++++++++++
.../VersionControl/VersionSupport107.java | 21 ++++++++++
.../VersionControl/VersionSupport578.java | 1 +
.../EndMinecraftPlusV2.java | 2 +-
.../OldVersion/AttackUtils/BotAttack.java | 28 ++++++++++++--
6 files changed, 86 insertions(+), 5 deletions(-)
create mode 100644 VersionSupport-107/VersionSupport-107.iml
create mode 100644 VersionSupport-107/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport107.java
diff --git a/EndMinecraftPlusV2.iml b/EndMinecraftPlusV2.iml
index 44e2880..26b60f9 100644
--- a/EndMinecraftPlusV2.iml
+++ b/EndMinecraftPlusV2.iml
@@ -93,5 +93,6 @@
+
\ No newline at end of file
diff --git a/VersionSupport-107/VersionSupport-107.iml b/VersionSupport-107/VersionSupport-107.iml
new file mode 100644
index 0000000..d506428
--- /dev/null
+++ b/VersionSupport-107/VersionSupport-107.iml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/VersionSupport-107/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport107.java b/VersionSupport-107/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport107.java
new file mode 100644
index 0000000..e451396
--- /dev/null
+++ b/VersionSupport-107/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport107.java
@@ -0,0 +1,21 @@
+package cn.serendipityr.EndMinecraftPlusV2.VersionControl;
+
+import org.spacehq.mc.protocol.data.game.ClientRequest;
+import org.spacehq.mc.protocol.packet.ingame.client.ClientKeepAlivePacket;
+import org.spacehq.mc.protocol.packet.ingame.client.ClientRequestPacket;
+import org.spacehq.mc.protocol.packet.ingame.server.ServerKeepAlivePacket;
+import org.spacehq.packetlib.Session;
+
+public class VersionSupport107 {
+ public static void sendRespawnPacket(Session session) {
+ ClientRequestPacket clientRequestPacket = new ClientRequestPacket(ClientRequest.RESPAWN);
+
+ session.send(clientRequestPacket);
+ }
+
+ public static void sendKeepAlivePacket(Session session, ServerKeepAlivePacket packet) {
+ ClientKeepAlivePacket clientKeepAlivePacket = new ClientKeepAlivePacket(packet.getPingId());
+
+ session.send(clientKeepAlivePacket);
+ }
+}
diff --git a/VersionSupport-578/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport578.java b/VersionSupport-578/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport578.java
index b3ad4cd..18a4be1 100644
--- a/VersionSupport-578/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport578.java
+++ b/VersionSupport-578/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/VersionSupport578.java
@@ -2,6 +2,7 @@ package cn.serendipityr.EndMinecraftPlusV2.VersionControl;
import com.github.steveice10.mc.protocol.data.message.Message;
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientChatPacket;
+import com.github.steveice10.mc.protocol.packet.ingame.server.ServerKeepAlivePacket;
import com.github.steveice10.packetlib.ProxyInfo;
import com.github.steveice10.packetlib.Session;
import com.github.steveice10.packetlib.tcp.TcpSessionFactory;
diff --git a/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java b/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java
index b688f64..b618ca4 100644
--- a/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java
+++ b/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java
@@ -8,7 +8,7 @@ import cn.serendipityr.EndMinecraftPlusV2.VersionControl.AttackManager;
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.ProtocolLibs;
public class EndMinecraftPlusV2 {
- public static String ver = "1.4.5";
+ public static String ver = "1.4.6";
public static Integer CfgVer = 6;
public static Boolean isLinux = false;
diff --git a/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/OldVersion/AttackUtils/BotAttack.java b/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/OldVersion/AttackUtils/BotAttack.java
index 16c3bd7..2538bf9 100644
--- a/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/OldVersion/AttackUtils/BotAttack.java
+++ b/src/cn/serendipityr/EndMinecraftPlusV2/VersionControl/OldVersion/AttackUtils/BotAttack.java
@@ -7,16 +7,19 @@ import cn.serendipityr.EndMinecraftPlusV2.VersionControl.OldVersion.ACProtocol.A
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.OldVersion.ACProtocol.AntiCheat3;
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.OldVersion.CatAntiCheat.CatAntiCheat;
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.OldVersion.ForgeProtocol.MCForge;
+import cn.serendipityr.EndMinecraftPlusV2.VersionControl.VersionSupport107;
import io.netty.util.internal.ConcurrentSet;
import org.spacehq.mc.protocol.MinecraftProtocol;
import org.spacehq.mc.protocol.data.game.ItemStack;
import org.spacehq.mc.protocol.data.game.values.ClientRequest;
import org.spacehq.mc.protocol.data.message.Message;
import org.spacehq.mc.protocol.packet.ingame.client.ClientChatPacket;
+import org.spacehq.mc.protocol.packet.ingame.client.ClientKeepAlivePacket;
import org.spacehq.mc.protocol.packet.ingame.client.ClientPluginMessagePacket;
import org.spacehq.mc.protocol.packet.ingame.client.ClientRequestPacket;
import org.spacehq.mc.protocol.packet.ingame.client.player.ClientPlayerMovementPacket;
import org.spacehq.mc.protocol.packet.ingame.server.*;
+import org.spacehq.mc.protocol.packet.ingame.server.entity.player.ServerPlayerHealthPacket;
import org.spacehq.mc.protocol.packet.ingame.server.entity.player.ServerPlayerPositionRotationPacket;
import org.spacehq.mc.protocol.packet.ingame.server.entity.player.ServerUpdateHealthPacket;
import org.spacehq.opennbt.NBTIO;
@@ -27,6 +30,9 @@ import org.spacehq.opennbt.tag.builtin.Tag;
import org.spacehq.packetlib.Client;
import org.spacehq.packetlib.Session;
import org.spacehq.packetlib.event.session.*;
+import org.spacehq.packetlib.io.NetInput;
+import org.spacehq.packetlib.io.buffer.ByteBufferNetInput;
+import org.spacehq.packetlib.io.stream.StreamNetInput;
import org.spacehq.packetlib.io.stream.StreamNetOutput;
import org.spacehq.packetlib.packet.Packet;
import org.spacehq.packetlib.tcp.TcpSessionFactory;
@@ -38,6 +44,7 @@ import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.Socket;
+import java.nio.ByteBuffer;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -506,8 +513,15 @@ public class BotAttack extends IAttack {
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + message.getFullText(), "BotAttack");
}
} else if (recvPacket instanceof ServerKeepAlivePacket) {
- // ClientKeepAlivePacket keepAlivePacket = new ClientKeepAlivePacket(((ServerKeepAlivePacket) recvPacket).getPingId());
- // session.send(keepAlivePacket);
+ if (MCForge.getProtocolVersion() >= 107) {
+ VersionSupport107.sendKeepAlivePacket(session, (ServerKeepAlivePacket) recvPacket);
+ } else {
+ ClientKeepAlivePacket keepAlivePacket = new ClientKeepAlivePacket(((ServerKeepAlivePacket) recvPacket).getPingId());
+ session.send(keepAlivePacket);
+ }
+
+ // LogUtil.doLog(0, "[" + username + "] 已发送KeepAlive数据包。", "BotAttack");
+
if (!joinedPlayers.contains(session)) {
joinedPlayers.add(session);
}
@@ -515,11 +529,17 @@ public class BotAttack extends IAttack {
if (!alivePlayers.contains(session)) {
alivePlayers.add(session);
}
- } else if (recvPacket instanceof ServerUpdateHealthPacket) {
+ } else if (recvPacket.getClass().getSimpleName().equals("ServerPlayerHealthPacket")) {
+ if (recvPacket instanceof ServerPlayerHealthPacket && ((ServerPlayerHealthPacket) recvPacket).getHealth() <= 0) {
+ VersionSupport107.sendRespawnPacket(session);
+
+ LogUtil.doLog(0, "[" + username + "] " + "假人于服务器中死亡,已重生。", "BotAttack");
+ }
+ } else if (recvPacket.getClass().getSimpleName().equals("ServerUpdateHealthPacket")) {
if (((ServerUpdateHealthPacket) recvPacket).getHealth() <= 0) {
ClientRequestPacket clientRequestPacket = new ClientRequestPacket(ClientRequest.RESPAWN);
-
session.send(clientRequestPacket);
+ LogUtil.doLog(0, "[" + username + "] " + "假人于服务器中死亡,已重生。", "BotAttack");
}
}
}