Add: 通过服务端全服喊话插件跳出登录大厅

This commit is contained in:
SerendipityR 2024-01-31 20:42:43 +08:00 committed by GitHub
parent 38c97d27b2
commit 90bdfeaa51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 38 additions and 15 deletions

View File

@ -6,8 +6,8 @@ import cn.serendipityr.EndMinecraftPlusV2.Tools.LogUtil;
import cn.serendipityr.EndMinecraftPlusV2.Tools.SetTitle;
public class EndMinecraftPlusV2 {
public static String ver = "2.0.3";
public static Integer CfgVer = 10;
public static String ver = "2.0.4";
public static Integer CfgVer = 11;
public static void main(String[] args) {
System.out.println("=======================-Designed by SerendipityR-=======================");

View File

@ -3,7 +3,7 @@
# Designed by SerendipityR #
###############################
CfgVer: 10
CfgVer: 11
AttackSettings:
Address: "example.com"
@ -117,6 +117,10 @@ BotSettings:
- "AntiAttack"
# 若踢出信息为空,则无条件执行重连
EmptyMsgRejoin: true
# 检测可交互聊天信息包含的命令
# 针对特定服务器,利用全服喊话跳出登录大厅
ServerShoutDetect:
- "tpserver"
# 若聊天信息中检测到以下字段,则尝试进行点击验证
ClickVerifiesDetect:
- "点击验证"

View File

@ -48,6 +48,7 @@ public class ConfigUtil {
public static Integer RejoinCount;
public static List<String> RejoinDetect;
public static Boolean EmptyMsgRejoin;
public static List<String> ServerShoutDetect;
public static Long RejoinDelay;
public static List<String> ClickVerifiesDetect;
public static List<String> CustomChat;
@ -111,6 +112,7 @@ public class ConfigUtil {
RejoinCount = config.getInt("BotSettings.RejoinCount");
RejoinDetect = config.getStringList("BotSettings.RejoinDetect");
EmptyMsgRejoin = config.getBoolean("BotSettings.EmptyMsgRejoin");
ServerShoutDetect = config.getStringList("BotSettings.ServerShoutDetect");
RejoinDelay = config.getLong("BotSettings.RejoinDelay");
ClickVerifiesDetect = config.getStringList("BotSettings.ClickVerifiesDetect");
CustomChat = config.getStringList("BotSettings.CustomChat");
@ -215,8 +217,9 @@ public class ConfigUtil {
break;
}
if (configFile.delete()) {
tempConfigFile.renameTo(configFile);
if (!configFile.delete() || !tempConfigFile.renameTo(configFile)) {
LogUtil.doLog(1, "尝试进行配置文件转码时出现错误。", null);
return 0;
}
LogUtil.doLog(0, "任务完成。转换前编码: " + currentCharset + " | 转换后编码: " + getFileCharset(configFile) , "CFGUtil");

View File

@ -381,13 +381,18 @@ public class BotManager {
botHandler.setClientFlag(client, "login", "");
new Thread(() -> {
for (String text : ConfigUtil.RegisterCommands) {
OtherUtils.doSleep(delay);
String cmd = text;
cmd = cmd.replace("$pwd", password);
cmd = cmd.replace("$userName", userName);
cmd = cmd.replace("$rnd", OtherUtils.getRandomString(4, 6));
LogUtil.doLog(0, "[" + userName + "] 注册信息已发送。", "BotAttack");
packetHandler.sendChatPacket(client, cmd);
OtherUtils.doSleep(delay);
}
if (PacketManager.serverShoutCmd != null) {
LogUtil.doLog(0, "[" + userName + "] 正在尝试跳出登录大厅: " + PacketManager.serverShoutCmd, "BotAttack");
packetHandler.sendChatPacket(client, PacketManager.serverShoutCmd);
}
}).start();
}

View File

@ -6,6 +6,7 @@ import cn.serendipityr.EndMinecraftPlusV2.Tools.LogUtil;
public class PacketManager {
public static int clickVerifies = 0;
public static String serverShoutCmd = null;
public static void handlePacket(PacketHandler packetHandler, Object client, Object packet, String username) {
if (packetHandler.checkServerPluginMessagePacket(packet)) {
@ -44,22 +45,32 @@ public class PacketManager {
}
public static void clickVerifiesHandle(PacketHandler packetHandler, Object client, Object message, String username) {
boolean needClick = false;
if (packetHandler.hasMessageClickEvent(message)) {
boolean needClick = false;
String msg = packetHandler.getMessageText(message);
String value = packetHandler.getClickValue(message);
for (String clickVerifiesDetect : ConfigUtil.ClickVerifiesDetect) {
if (packetHandler.getMessageText(message).contains(clickVerifiesDetect)) {
if (msg.contains(clickVerifiesDetect)) {
needClick = true;
break;
}
}
}
if (needClick) {
String value = packetHandler.getClickValue(message);
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + value, "BotAttack");
packetHandler.sendChatPacket(client, value);
clickVerifies++;
for (String teleportMsg : ConfigUtil.ServerShoutDetect) {
if (value.contains(teleportMsg)) {
serverShoutCmd = value;
needClick = true;
break;
}
}
if (needClick) {
LogUtil.doLog(0, "[服务端返回可交互信息] [" + username + "] " + value, "BotAttack");
packetHandler.sendChatPacket(client, value);
clickVerifies++;
}
}
if (packetHandler.hasMessageExtra(message)) {