aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Kolodziej <jakvb.kolodziej@gmail.com>2023-06-11 03:03:23 +0200
committerJakub Kolodziej <jakvb.kolodziej@gmail.com>2023-06-11 03:03:23 +0200
commit646ec39fc6cefe98e0ffac69e90156f6c6bfd412 (patch)
tree7efdf2c58c711f2e8d95642d5c0fe96fcdd53e93
parent039605b548f279e73807d1ef83635dffd6280e91 (diff)
downloadSkyblocker-646ec39fc6cefe98e0ffac69e90156f6c6bfd412.tar.gz
Skyblocker-646ec39fc6cefe98e0ffac69e90156f6c6bfd412.tar.bz2
Skyblocker-646ec39fc6cefe98e0ffac69e90156f6c6bfd412.zip
Add Rejoin Reparty
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java24
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java53
3 files changed, 17 insertions, 62 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
index 6d0f38b8..f502a356 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java
@@ -5,7 +5,6 @@ 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;
-import me.xmrvizzy.skyblocker.skyblock.dungeon.RepartyRejoin;
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 RepartyRejoin(),
new ThreeWeirdos(),
new Trivia(),
new TreasureHunter(),
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
index 29c37b94..0fa13f80 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
@@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon;
import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
@@ -16,7 +17,7 @@ import java.util.regex.Pattern;
public class Reparty extends ChatPatternListener {
private static final MinecraftClient client = MinecraftClient.getInstance();
private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance();
- public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●");
+ public static final Pattern PLAYER_IN_LIST = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●");
private static final int BASE_DELAY = 10;
private String[] players;
@@ -24,7 +25,7 @@ public class Reparty extends ChatPatternListener {
private boolean repartying;
public Reparty() {
- super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*)))$");
+ super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))|That party has been disbanded\\.|([\\[A-z+\\]]* )?(?<name>[A-z0-9_]*) has disbanded the party!)$");
this.repartying = false;
ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(ClientCommandManager.literal("rp").executes(context -> {
if (!Utils.isOnSkyblock() || this.repartying || client.player == null) return 0;
@@ -36,24 +37,27 @@ public class Reparty extends ChatPatternListener {
@Override
public ChatFilterResult state() {
- return this.repartying ? ChatFilterResult.FILTER : ChatFilterResult.PASS;
+ return (SkyblockerConfig.get().locations.dungeons.repartyRejoin || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS;
}
@Override
public boolean onMatch(Text message, Matcher matcher) {
- if (matcher.group(1) != null) {
+ if (matcher.group(1) != null && repartying) {
this.playersSoFar = 0;
this.players = new String[Integer.parseInt(matcher.group(1)) - 1];
- } else if (matcher.group(2) != null) {
- Matcher m = PLAYER.matcher(matcher.group(2));
+ } else if (matcher.group(2) != null && repartying) {
+ Matcher m = PLAYER_IN_LIST.matcher(matcher.group(2));
while (m.find()) {
this.players[playersSoFar++] = m.group(1);
}
+ }else if (matcher.group("name") != null && !matcher.group("name").equals(client.getSession().getUsername())){
+ join(matcher.group("name"));
+ return false;
} else {
this.repartying = false;
return false;
}
- if (this.playersSoFar == this.players.length) reparty();
+ if (this.playersSoFar == this.players.length && repartying) reparty();
return false;
}
@@ -71,6 +75,12 @@ public class Reparty extends ChatPatternListener {
skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2);
}
+ private void join(String player){
+ String command = "/party accept " + player;
+ skyblocker.messageScheduler.queueMessage(command, 15);
+
+ }
+
private void sendCommand(String command, int delay) {
skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY);
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java
deleted file mode 100644
index bbb842d5..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package me.xmrvizzy.skyblocker.skyblock.dungeon;
-
-import me.xmrvizzy.skyblocker.SkyblockerMod;
-import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
-import me.xmrvizzy.skyblocker.chat.ChatPatternListener;
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-
-import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.Text;
-
-import java.util.regex.Matcher;
-
-public class RepartyRejoin extends ChatPatternListener {
-
- private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance();
- private static final MinecraftClient client = MinecraftClient.getInstance();
-
- private boolean repartying;
-
-
- public RepartyRejoin(){
- super("^(?:That party has been disbanded\\.|([\\[A-z+\\]]* )?(?<name>[A-z0-9_]*) has disbanded the party!)");
- this.repartying = false;
- }
-
- @Override
- protected ChatFilterResult state() {
- return SkyblockerConfig.get().locations.dungeons.repartyRejoin ? ChatFilterResult.FILTER : ChatFilterResult.PASS;
- }
-
- @Override
- protected boolean onMatch(Text message, Matcher matcher) {
- if (matcher.group("name") != null && !matcher.group("name").equals(client.getSession().getUsername())) {
- this.repartying = true;
- join(matcher.group("name"));
- return false;
- } else if ( repartying ) {
- repartying = false;
- return true;
- }
- return false;
- }
-
- private void join(String player){
- String command = "/party accept " + player;
- sendCommand(command);
- skyblocker.scheduler.schedule(() -> this.repartying = false, 150);
- }
-
- private void sendCommand(String command) {
- skyblocker.messageScheduler.queueMessage(command, 15 );
- }
-}