aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java1
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java29
2 files changed, 24 insertions, 6 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 5621a258..833e4661 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -132,6 +132,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..8becd757 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;
@@ -22,9 +23,15 @@ public class Reparty extends ChatPatternListener {
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>[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 -> {
if (!Utils.isOnSkyblock() || this.repartying || client.player == null) return 0;
@@ -36,24 +43,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");
+ 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) reparty();
+ if (this.playersSoFar == this.players.length) {
+ reparty();
+ }
return false;
}
@@ -74,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