diff options
author | Jakub Kolodziej <jakvb.kolodziej@gmail.com> | 2023-06-11 03:03:23 +0200 |
---|---|---|
committer | Jakub Kolodziej <jakvb.kolodziej@gmail.com> | 2023-06-11 03:03:23 +0200 |
commit | 646ec39fc6cefe98e0ffac69e90156f6c6bfd412 (patch) | |
tree | 7efdf2c58c711f2e8d95642d5c0fe96fcdd53e93 | |
parent | 039605b548f279e73807d1ef83635dffd6280e91 (diff) | |
download | Skyblocker-646ec39fc6cefe98e0ffac69e90156f6c6bfd412.tar.gz Skyblocker-646ec39fc6cefe98e0ffac69e90156f6c6bfd412.tar.bz2 Skyblocker-646ec39fc6cefe98e0ffac69e90156f6c6bfd412.zip |
Add Rejoin Reparty
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 ); - } -} |