forked from RepoMirrors/kami-blue
create message detection helper in preparation for #407
This commit is contained in:
parent
3fa95b504a
commit
2909debee8
|
@ -11,7 +11,7 @@ import me.zeroeightsix.kami.event.events.PacketEvent;
|
||||||
import me.zeroeightsix.kami.event.events.ServerConnectedEvent;
|
import me.zeroeightsix.kami.event.events.ServerConnectedEvent;
|
||||||
import me.zeroeightsix.kami.event.events.ServerDisconnectedEvent;
|
import me.zeroeightsix.kami.event.events.ServerDisconnectedEvent;
|
||||||
import me.zeroeightsix.kami.module.Module;
|
import me.zeroeightsix.kami.module.Module;
|
||||||
import me.zeroeightsix.kami.module.modules.gui.InfoOverlay;
|
import me.zeroeightsix.kami.module.modules.client.InfoOverlay;
|
||||||
import me.zeroeightsix.kami.setting.Setting;
|
import me.zeroeightsix.kami.setting.Setting;
|
||||||
import me.zeroeightsix.kami.setting.Settings;
|
import me.zeroeightsix.kami.setting.Settings;
|
||||||
import me.zeroeightsix.kami.util.TimeUtil;
|
import me.zeroeightsix.kami.util.TimeUtil;
|
||||||
|
@ -20,10 +20,9 @@ import net.minecraft.client.multiplayer.GuiConnecting;
|
||||||
import net.minecraft.client.multiplayer.ServerData;
|
import net.minecraft.client.multiplayer.ServerData;
|
||||||
import net.minecraft.network.play.server.SPacketChat;
|
import net.minecraft.network.play.server.SPacketChat;
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import static me.zeroeightsix.kami.KamiMod.EVENT_BUS;
|
import static me.zeroeightsix.kami.KamiMod.EVENT_BUS;
|
||||||
import static me.zeroeightsix.kami.KamiMod.MODULE_MANAGER;
|
import static me.zeroeightsix.kami.KamiMod.MODULE_MANAGER;
|
||||||
|
import static me.zeroeightsix.kami.util.MessageDetectionHelper.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author S-B99
|
* @author S-B99
|
||||||
|
@ -56,8 +55,8 @@ public class DiscordNotifs extends Module {
|
||||||
|
|
||||||
SPacketChat sPacketChat = (SPacketChat) event.getPacket();
|
SPacketChat sPacketChat = (SPacketChat) event.getPacket();
|
||||||
String message = sPacketChat.getChatComponent().getUnformattedText();
|
String message = sPacketChat.getChatComponent().getUnformattedText();
|
||||||
if (timeout(message) && shouldSend(message)) {
|
if (timeout(message) && shouldSend(all.getValue(), restart.getValue(), direct.getValue(), directSent.getValue(), queue.getValue(), importantPings.getValue(), message)) {
|
||||||
sendMessage(getPingID(message) + getMessageType(message) + getTime() + message, avatar.getValue());
|
sendMessage(getPingID(message) + getMessageType(direct.getValue(), directSent.getValue(), message, getServer()) + getTime() + message, avatar.getValue());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -65,21 +64,21 @@ public class DiscordNotifs extends Module {
|
||||||
public Listener<ServerConnectedEvent> listener1 = new Listener<>(event -> {
|
public Listener<ServerConnectedEvent> listener1 = new Listener<>(event -> {
|
||||||
if (isDisabled()) return;
|
if (isDisabled()) return;
|
||||||
if (!disconnect.getValue()) return;
|
if (!disconnect.getValue()) return;
|
||||||
sendMessage(getPingID("KamiBlueMessageType1") + getTime() + getMessageType("KamiBlueMessageType1"), avatar.getValue());
|
sendMessage(getPingID("KamiBlueMessageType1") + getTime() + getMessageType(direct.getValue(), directSent.getValue(), "KamiBlueMessageType1", getServer()), avatar.getValue());
|
||||||
});
|
});
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public Listener<ServerDisconnectedEvent> listener2 = new Listener<>(event -> {
|
public Listener<ServerDisconnectedEvent> listener2 = new Listener<>(event -> {
|
||||||
if (isDisabled()) return;
|
if (isDisabled()) return;
|
||||||
if (!disconnect.getValue()) return;
|
if (!disconnect.getValue()) return;
|
||||||
sendMessage(getPingID("KamiBlueMessageType2") + getTime() + getMessageType("KamiBlueMessageType2"), avatar.getValue());
|
sendMessage(getPingID("KamiBlueMessageType2") + getTime() + getMessageType(direct.getValue(), directSent.getValue(), "KamiBlueMessageType2", getServer()), avatar.getValue());
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Getters for messages */
|
/* Getters for messages */
|
||||||
private static long startTime = 0;
|
private static long startTime = 0;
|
||||||
private boolean timeout(String message) {
|
private boolean timeout(String message) {
|
||||||
if (!timeout.getValue()) return true;
|
if (!timeout.getValue()) return true;
|
||||||
else if (isRestart(message) || isDirect(message) || isDirectOther(message)) return true;
|
else if (isRestart(restart.getValue(), message) || isDirect(direct.getValue(), message) || isDirectOther(directSent.getValue(), message)) return true;
|
||||||
if (startTime == 0) startTime = System.currentTimeMillis();
|
if (startTime == 0) startTime = System.currentTimeMillis();
|
||||||
if (startTime + (timeoutTime.getValue() * 1000) <= System.currentTimeMillis()) { // 1 timeout = 1 second = 1000 ms
|
if (startTime + (timeoutTime.getValue() * 1000) <= System.currentTimeMillis()) { // 1 timeout = 1 second = 1000 ms
|
||||||
startTime = System.currentTimeMillis();
|
startTime = System.currentTimeMillis();
|
||||||
|
@ -88,48 +87,12 @@ public class DiscordNotifs extends Module {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean shouldSend(String message) {
|
|
||||||
if (all.getValue()) return true;
|
|
||||||
else return isRestart(message) || isDirect(message) || isDirectOther(message) || isQueue(message) || isImportantQueue(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDirect(String message) {
|
|
||||||
return direct.getValue() && message.contains("whispers:");
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isDirectOther(String message) {
|
|
||||||
return directSent.getValue() && Pattern.compile("to .+:", Pattern.CASE_INSENSITIVE).matcher(message).find();
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isQueue(String message) {
|
|
||||||
if (queue.getValue() && message.contains("Position in queue:")) return true;
|
|
||||||
else return queue.getValue() && message.contains("2b2t is full");
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isImportantQueue(String message) {
|
|
||||||
return importantPings.getValue() && (
|
|
||||||
message.equals("Position in queue: 1") ||
|
|
||||||
message.equals("Position in queue: 2") ||
|
|
||||||
message.equals("Position in queue: 3"));
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isRestart(String message) {
|
|
||||||
return restart.getValue() && message.contains("[SERVER] Server restarting in");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Text formatting and misc methods */
|
/* Text formatting and misc methods */
|
||||||
private String getPingID(String message) {
|
private String getPingID(String message) {
|
||||||
if (isRestart(message) || isDirect(message) || isDirectOther(message) || isImportantQueue(message)) return formatPingID();
|
if (isRestart(restart.getValue(), message) || isDirect(direct.getValue(), message) || isDirectOther(directSent.getValue(), message) || isImportantQueue(importantPings.getValue(), message)) return formatPingID();
|
||||||
else if ((message.equals("KamiBlueMessageType1")) || (message.equals("KamiBlueMessageType2"))) return formatPingID();
|
else if ((message.equals("KamiBlueMessageType1")) || (message.equals("KamiBlueMessageType2"))) return formatPingID();
|
||||||
else return "";
|
else return "";
|
||||||
}
|
}
|
||||||
private String getMessageType(String message) {
|
|
||||||
if (isDirect(message)) return "You got a direct message!\n";
|
|
||||||
if (isDirectOther(message)) return "You sent a direct message!\n";
|
|
||||||
if (message.equals("KamiBlueMessageType1")) return "Connected to " + getServer();
|
|
||||||
if (message.equals("KamiBlueMessageType2")) return "Disconnected from " + getServer();
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private String formatPingID() {
|
private String formatPingID() {
|
||||||
if (!importantPings.getValue()) return "";
|
if (!importantPings.getValue()) return "";
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
package me.zeroeightsix.kami.util;
|
||||||
|
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A helper to detect certain messages and return a boolean or message
|
||||||
|
*
|
||||||
|
* @see me.zeroeightsix.kami.module.modules.chat.DiscordNotifs
|
||||||
|
* @author S-B99
|
||||||
|
*/
|
||||||
|
public class MessageDetectionHelper {
|
||||||
|
public static String getMessageType(boolean direct, boolean directSent, String message, String server) {
|
||||||
|
if (isDirect(direct, message)) return "You got a direct message!\n";
|
||||||
|
if (isDirectOther(directSent, message)) return "You sent a direct message!\n";
|
||||||
|
if (message.equals("KamiBlueMessageType1")) return "Connected to " + server;
|
||||||
|
if (message.equals("KamiBlueMessageType2")) return "Disconnected from " + server;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDirect(boolean direct, String message) {
|
||||||
|
return direct && message.contains("whispers:");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isDirectOther(boolean directSent, String message) {
|
||||||
|
return directSent && Pattern.compile("to .+:", Pattern.CASE_INSENSITIVE).matcher(message).find();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isQueue(boolean queue, String message) {
|
||||||
|
if (queue && message.contains("Position in queue:")) return true;
|
||||||
|
else return queue && message.contains("2b2t is full");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isImportantQueue(boolean importantPings, String message) {
|
||||||
|
return importantPings && (
|
||||||
|
message.equals("Position in queue: 1") ||
|
||||||
|
message.equals("Position in queue: 2") ||
|
||||||
|
message.equals("Position in queue: 3"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isRestart(boolean restart, String message) {
|
||||||
|
return restart && message.contains("[SERVER] Server restarting in");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean shouldSend(boolean all, boolean restart, boolean direct, boolean directSent, boolean queue, boolean importantPings, String message) {
|
||||||
|
if (all) return true;
|
||||||
|
else return isRestart(restart, message) || isDirect(direct, message) || isDirectOther(directSent, message) || isQueue(queue, message) || isImportantQueue(importantPings, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue