diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-07-01 13:21:33 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-01 13:21:33 -0400 |
commit | c71c140c0a2830905870685bb7b8e83dee9276f2 (patch) | |
tree | 57e26495952358bc012e7a45cb6a75d15fdb0e2d /src/main/java | |
parent | c3dd9419010ba36647ee330ffb4e6873359d494a (diff) | |
parent | 6196600f51f59be3e1f2671ab3fd6d1dd103fd75 (diff) | |
download | Skyblocker-c71c140c0a2830905870685bb7b8e83dee9276f2.tar.gz Skyblocker-c71c140c0a2830905870685bb7b8e83dee9276f2.tar.bz2 Skyblocker-c71c140c0a2830905870685bb7b8e83dee9276f2.zip |
Merge pull request #176 from koloiyolo/autorejoin2
Add Reparty Auto Rejoin
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 1 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 34 |
2 files changed, 26 insertions, 9 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 4b1398e0..3a8a4a1f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -136,6 +136,7 @@ public class SkyblockerConfig implements ConfigData { public static class General { public boolean enableUpdateNotification = true; + public boolean acceptReparty = true; public boolean backpackPreviewWithoutShift = false; public boolean hideEmptyTooltips = true; 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..8ae7ce7b 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; @@ -15,16 +16,21 @@ 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}) ●"); private static final int BASE_DELAY = 10; 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]+)\\)|:( .*)))$"); + super("^(?:You are not currently in a party\\." + + "|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))" + + "|([\\[A-z+\\]]* )?(?<disband>.*) has disbanded .*" + + "|.*\n([\\[A-z+\\]]* )?(?<invite>.*) 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 -> { if (!Utils.isOnSkyblock() || this.repartying || client.player == null) return 0; @@ -36,24 +42,34 @@ public class Reparty extends ChatPatternListener { @Override public ChatFilterResult state() { - return this.repartying ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return (SkyblockerConfig.get().general.acceptReparty || 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) { + } else if (matcher.group(2) != null && repartying) { Matcher m = PLAYER.matcher(matcher.group(2)); while (m.find()) { this.players[playersSoFar++] = m.group(1); } + } else if (matcher.group("disband") != null && !matcher.group("disband").equals(client.getSession().getUsername())) { + partyLeader = matcher.group("disband"); + SkyblockerMod.getInstance().scheduler.schedule(() -> partyLeader = null, 61); + 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) reparty(); + if (this.playersSoFar == this.players.length) { + reparty(); + } return false; } @@ -68,10 +84,10 @@ public class Reparty extends ChatPatternListener { String command = "/p invite " + this.players[i]; sendCommand(command, i + 2); } - skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); + SkyblockerMod.getInstance().scheduler.schedule(() -> this.repartying = false, this.players.length + 2); } private void sendCommand(String command, int delay) { - skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY); + SkyblockerMod.getInstance().messageScheduler.queueMessage(command, delay * BASE_DELAY); } -} +}
\ No newline at end of file |