aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorLifeIsAParadox <LifeIsAParadox@users.noreply.github.com>2021-09-22 20:14:40 +0200
committerGitHub <noreply@github.com>2021-09-22 20:14:40 +0200
commitd25a4190c14ffac11a5f4c18f47a6e42fc402bb2 (patch)
tree36255bbb22874d4e9019a0b05a86cd5261d774ce /src/main
parent639109b2b8a348aaac43790b2ce83884612aa6e3 (diff)
parent7ee764ad078d3f84ece12d7e01415a8cd7589214 (diff)
downloadSkyblocker-d25a4190c14ffac11a5f4c18f47a6e42fc402bb2.tar.gz
Skyblocker-d25a4190c14ffac11a5f4c18f47a6e42fc402bb2.tar.bz2
Skyblocker-d25a4190c14ffac11a5f4c18f47a6e42fc402bb2.zip
Merge pull request #14 from ExternalTime/reparty
Added reparty (/rp) command
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java4
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java76
2 files changed, 79 insertions, 1 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
index 9965c7c7..97ca1f68 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatParser.java
@@ -1,6 +1,7 @@
package me.xmrvizzy.skyblocker.chat;
import me.xmrvizzy.skyblocker.chat.filters.*;
+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;
@@ -9,7 +10,8 @@ import me.xmrvizzy.skyblocker.skyblock.dwarven.Puzzler;
import java.util.regex.Matcher;
public class ChatParser {
- private final ChatListener[] listeners = new ChatListener[]{
+ private final static ChatListener[] listeners = new ChatListener[]{
+ new Reparty(),
new ThreeWeirdos(),
new AoteFilter(),
new ImplosionFilter(),
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
new file mode 100644
index 00000000..c12662d2
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
@@ -0,0 +1,76 @@
+package me.xmrvizzy.skyblocker.skyblock.dungeon;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.network.ClientPlayerEntity;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Reparty extends ChatListener {
+ private static final MinecraftClient client = MinecraftClient.getInstance();
+ private static final Logger logger = LogManager.getLogger(Reparty.class.getName());
+ public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●");
+
+ private String[] players;
+ private int playersSoFar;
+ private boolean repartying;
+
+ public Reparty() {
+ super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*)))$");
+ repartying = false;
+ ClientCommandManager.DISPATCHER.register(
+ ClientCommandManager.literal("rp").executes(context -> {
+ if(!Utils.isSkyblock)
+ return 0;
+ assert client.player != null;
+ repartying = true;
+ client.player.sendChatMessage("/p list");
+ return 0;
+ })
+ );
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return repartying;
+ }
+
+ @Override
+ public boolean onMessage(String[] groups) {
+ if(groups[1] != null) {
+ playersSoFar = 0;
+ players = new String[Integer.parseInt(groups[1]) - 1];
+ }
+ else if(groups[2] != null) {
+ Matcher m = PLAYER.matcher(groups[2]);
+ while(m.find()) {
+ players[playersSoFar++] = m.group(1);
+ }
+ }
+ else
+ repartying = false;
+ if(playersSoFar == players.length)
+ client.execute(this::reparty);
+ return false;
+ }
+
+ private void reparty() {
+ ClientPlayerEntity playerEntity = client.player;
+ assert playerEntity != null;
+ playerEntity.sendChatMessage("/p disband");
+ for(String player : players) {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException e) {
+ logger.info("[Skyblocker] sleep while repartying interupted!");
+ }
+ playerEntity.sendChatMessage("/p invite " + player);
+ }
+ repartying = false;
+ }
+}