aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java (renamed from src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java)22
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java40
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java35
4 files changed, 50 insertions, 51 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
index da0f7ef9..f502a356 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
@@ -4,8 +4,7 @@ import me.xmrvizzy.skyblocker.chat.filters.*;
import me.xmrvizzy.skyblocker.skyblock.api.ApiKeyListener;
import me.xmrvizzy.skyblocker.skyblock.barn.HungryHiker;
import me.xmrvizzy.skyblocker.skyblock.barn.TreasureHunter;
-import me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.AcceptReparty;
-import me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.Reparty;
+import me.xmrvizzy.skyblocker.skyblock.dungeon.Reparty;
import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos;
import me.xmrvizzy.skyblocker.skyblock.dungeon.Trivia;
import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur;
@@ -42,7 +41,6 @@ public interface ChatMessageListener {
new Fetchur(),
new Puzzler(),
new Reparty(),
- new AcceptReparty(),
new ThreeWeirdos(),
new Trivia(),
new TreasureHunter(),
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
index 1bff342f..8becd757 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
@@ -1,4 +1,4 @@
-package me.xmrvizzy.skyblocker.skyblock.dungeon.reparty;
+package me.xmrvizzy.skyblocker.skyblock.dungeon;
import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
@@ -20,15 +20,17 @@ public class Reparty extends ChatPatternListener {
public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●");
private static final int BASE_DELAY = 10;
- public static String partyLeader;
private String[] players;
private int playersSoFar;
private boolean repartying;
+ private String partyLeader;
public Reparty() {
super("^(?:You are not currently in a party\\." +
"|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))" +
- "|([\\[A-z+\\]]* )?(?<name>[A-z0-9_]*) has disbanded the party!)$");
+ "|([\\[A-z+\\]]* )?(?<disband>[A-z0-9_]*) has disbanded .*" +
+ "|.*\n([\\[A-z+\\]]* )?(?<invite>[A-z0-9_]*) has invited you to join their party!" +
+ "\nYou have 60 seconds to accept. Click here to join!\n.*)$");
this.repartying = false;
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("rp").executes(context -> {
@@ -54,15 +56,19 @@ public class Reparty extends ChatPatternListener {
while (m.find()) {
this.players[playersSoFar++] = m.group(1);
}
- } else if (matcher.group("name") != null && !matcher.group("name").equals(client.getSession().getUsername())) {
- partyLeader = matcher.group("name");
- skyblocker.scheduler.schedule(() -> partyLeader = null, 20);
+ } else if (matcher.group("disband") != null && !matcher.group("disband").equals(client.getSession().getUsername())) {
+ partyLeader = matcher.group("disband");
+ skyblocker.scheduler.schedule(() -> partyLeader = null, 21);
+ return false;
+ } else if (matcher.group("invite") != null && matcher.group("invite").equals(partyLeader)) {
+ String command = "/party accept " + partyLeader;
+ sendCommand(command, 0);
return false;
} else {
this.repartying = false;
return false;
}
- if (this.playersSoFar == this.players.length && repartying) {
+ if (this.playersSoFar == this.players.length) {
reparty();
}
return false;
@@ -85,4 +91,4 @@ public class Reparty extends ChatPatternListener {
private void sendCommand(String command, int delay) {
skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY);
}
-}
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java
deleted file mode 100644
index 21513fc6..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package me.xmrvizzy.skyblocker.skyblock.dungeon.reparty;
-
-import me.xmrvizzy.skyblocker.SkyblockerMod;
-import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
-import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
-import net.minecraft.text.Text;
-
-import java.util.regex.Matcher;
-
-import static me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.Reparty.partyLeader;
-
-public class AcceptReparty extends ChatPatternListener {
-
- private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance();
-
- public AcceptReparty() {
- super("-----------------------------------------------------" +
- "\n([\\[A-z+\\]]* )?(?<name>[A-z0-9_]*) has invited you to join their party!" +
- "\nYou have 60 seconds to accept. Click here to join!" +
- "\n-----------------------------------------------------");
- }
-
- @Override
- protected ChatFilterResult state() {
- return (partyLeader != null) ? ChatFilterResult.FILTER : ChatFilterResult.PASS;
- }
-
- @Override
- protected boolean onMatch(Text message, Matcher matcher) {
- try {
- if (matcher.group("name").equals(partyLeader)) {
- skyblocker.messageScheduler.sendMessageAfterCooldown("/party accept " + partyLeader);
- }
- } catch (NullPointerException e) {
- // In case if block executes after setting "partyLeader" variable to null
- }
- partyLeader = null;
- return false;
- }
-}
diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java
new file mode 100644
index 00000000..0fd0363b
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java
@@ -0,0 +1,35 @@
+package me.xmrvizzy.skyblocker.skyblock.dungeon;
+
+import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.util.regex.Matcher;
+
+public class AcceptRepartyTest extends ChatPatternListenerTest<Reparty> {
+
+ public AcceptRepartyTest() { super(new Reparty()); }
+
+ protected void assertGroup(String message, String group, String expect) {
+ Matcher matcher = matcher(message);
+ assertTrue(matcher.matches());
+ assertEquals(expect, matcher.group(group));
+ }
+
+ @Test
+ void testDisband() {
+ assertGroup("[VIP+] KoloiYolo has disbanded the party!",
+ /* group: */ "disband",
+ /* expect: */ "KoloiYolo");
+ }
+
+ @Test
+ void testInvite() {
+ assertGroup("-----------------------------------------------------" +
+ "\nStefan has invited you to join their party!" +
+ "\nYou have 60 seconds to accept. Click here to join!" +
+ "\n-----------------------------------------------------",
+ /* group: */ "invite",
+ /* expect: */ "Stefan");
+ }
+} \ No newline at end of file