From dc3b373391db5e2fd43752430b13d59956d5be4e Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sat, 10 Jun 2023 14:23:35 +0200 Subject: Add Auto Rejoin Reparty --- .../skyblocker/chat/ChatMessageListener.java | 2 + .../skyblocker/config/SkyblockerConfig.java | 1 + .../skyblocker/skyblock/dungeon/RepartyRejoin.java | 51 ++++++++++++++++++++++ .../resources/assets/skyblocker/lang/en_us.json | 1 + 4 files changed, 55 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java index f502a356..6d0f38b8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java @@ -5,6 +5,7 @@ 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; @@ -41,6 +42,7 @@ 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/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index b1bc2001..3acbbdec 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -281,6 +281,7 @@ public class SkyblockerConfig implements ConfigData { public int mapX = 2; public int mapY = 2; public boolean solveThreeWeirdos = true; + public boolean repartyRejoin = true; public boolean blazesolver = true; public boolean solveTrivia = true; @ConfigEntry.Gui.CollapsibleObject diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java new file mode 100644 index 00000000..ad91adc9 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java @@ -0,0 +1,51 @@ +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.text.Text; + +import java.util.regex.Matcher; + +public class RepartyRejoin extends ChatPatternListener { + + private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance(); + + private boolean repartying; + + + public RepartyRejoin(){ + super("^(?:That party has been disbanded\\.|([\\[A-z+\\]]* )?(?[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) { + 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); + + } + + private void sendCommand(String command) { + skyblocker.messageScheduler.queueMessage(command, 15 ); + } +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 858507fe..db10a327 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -169,6 +169,7 @@ "text.autoconfig.skyblocker.option.locations.dungeons.mapScaling": "Map Scaling", "text.autoconfig.skyblocker.option.locations.dungeons.mapX": "Map X", "text.autoconfig.skyblocker.option.locations.dungeons.mapY": "Map Y", + "text.autoconfig.skyblocker.option.locations.dungeons.repartyRejoin": "Auto Rejoin Reparty", "text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "Solve Three Weirdos Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Solve Blaze Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Solve Trivia Puzzle", -- cgit From 039605b548f279e73807d1ef83635dffd6280e91 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 11 Jun 2023 02:32:31 +0200 Subject: Fix triggering when being leader --- .../java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java index ad91adc9..bbb842d5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java @@ -5,6 +5,7 @@ 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; @@ -12,6 +13,7 @@ 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; @@ -28,7 +30,7 @@ public class RepartyRejoin extends ChatPatternListener { @Override protected boolean onMatch(Text message, Matcher matcher) { - if (matcher.group("name")!=null) { + if (matcher.group("name") != null && !matcher.group("name").equals(client.getSession().getUsername())) { this.repartying = true; join(matcher.group("name")); return false; @@ -42,7 +44,7 @@ public class RepartyRejoin extends ChatPatternListener { private void join(String player){ String command = "/party accept " + player; sendCommand(command); - + skyblocker.scheduler.schedule(() -> this.repartying = false, 150); } private void sendCommand(String command) { -- cgit From 646ec39fc6cefe98e0ffac69e90156f6c6bfd412 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 11 Jun 2023 03:03:23 +0200 Subject: Add Rejoin Reparty --- .../skyblocker/chat/ChatMessageListener.java | 2 - .../skyblocker/skyblock/dungeon/Reparty.java | 24 +++++++--- .../skyblocker/skyblock/dungeon/RepartyRejoin.java | 53 ---------------------- 3 files changed, 17 insertions(+), 62 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/RepartyRejoin.java (limited to 'src') 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+\\]]* )?(?[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+\\]]* )?(?[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 ); - } -} -- cgit From 6a031e70ec7e55444dd6a984c8717306f6f9be38 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 11 Jun 2023 03:21:11 +0200 Subject: Made regex easier to read --- .../java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') 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 0fa13f80..3c3dd2ba 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -17,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_IN_LIST = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●"); + public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●"); private static final int BASE_DELAY = 10; private String[] players; @@ -25,7 +25,11 @@ public class Reparty extends ChatPatternListener { private boolean repartying; public Reparty() { - super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))|That party has been disbanded\\.|([\\[A-z+\\]]* )?(?[A-z0-9_]*) has disbanded the party!)$"); + super("^(?:You are not currently in a party\\." + + "|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))" + + "|That party has been disbanded\\." + + "|([\\[A-z+\\]]* )?(?[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; @@ -46,7 +50,7 @@ public class Reparty extends ChatPatternListener { this.playersSoFar = 0; this.players = new String[Integer.parseInt(matcher.group(1)) - 1]; } else if (matcher.group(2) != null && repartying) { - Matcher m = PLAYER_IN_LIST.matcher(matcher.group(2)); + Matcher m = PLAYER.matcher(matcher.group(2)); while (m.find()) { this.players[playersSoFar++] = m.group(1); } -- cgit From fa87edc869e0c9b5a4b6cd0900e9b17f5092d0de Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 11 Jun 2023 20:00:53 +0200 Subject: Code clean up --- .../java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') 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 3c3dd2ba..ff3c6036 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -27,7 +27,6 @@ public class Reparty extends ChatPatternListener { public Reparty() { super("^(?:You are not currently in a party\\." + "|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))" + - "|That party has been disbanded\\." + "|([\\[A-z+\\]]* )?(?[A-z0-9_]*) has disbanded the party!)$"); this.repartying = false; @@ -54,14 +53,16 @@ public class Reparty extends ChatPatternListener { while (m.find()) { this.players[playersSoFar++] = m.group(1); } - }else if (matcher.group("name") != null && !matcher.group("name").equals(client.getSession().getUsername())){ + } 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 && repartying) reparty(); + if (this.playersSoFar == this.players.length && repartying) { + reparty(); + } return false; } @@ -79,10 +80,9 @@ public class Reparty extends ChatPatternListener { skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); } - private void join(String player){ + private void join(String player) { String command = "/party accept " + player; skyblocker.messageScheduler.queueMessage(command, 15); - } private void sendCommand(String command, int delay) { -- cgit From 24136a4e82c18e17d2cf88e389c665dffab3588d Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 11 Jun 2023 22:44:46 +0200 Subject: Change acceptReparty option placement --- src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 2 +- src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 2 +- src/main/resources/assets/skyblocker/lang/en_us.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 3acbbdec..ccf86eb2 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; @@ -281,7 +282,6 @@ public class SkyblockerConfig implements ConfigData { public int mapX = 2; public int mapY = 2; public boolean solveThreeWeirdos = true; - public boolean repartyRejoin = true; public boolean blazesolver = true; public boolean solveTrivia = true; @ConfigEntry.Gui.CollapsibleObject 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 ff3c6036..3a121eb2 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -40,7 +40,7 @@ public class Reparty extends ChatPatternListener { @Override public ChatFilterResult state() { - return (SkyblockerConfig.get().locations.dungeons.repartyRejoin || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + return (SkyblockerConfig.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index db10a327..502efde3 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -20,6 +20,7 @@ "text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition": "Mana Bar Position", "text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition": "Defence Bar Position", "text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition": "Experience Bar Position", + "text.autoconfig.skyblocker.option.general.acceptReparty": "Auto accept Reparty", "text.autoconfig.skyblocker.option.general.fishing": "Fishing Helper", "text.autoconfig.skyblocker.option.general.fishing.enableFishingHelper": "Enable Fishing Helper", "text.autoconfig.skyblocker.option.general.quicknav": "Quicknav", @@ -169,7 +170,6 @@ "text.autoconfig.skyblocker.option.locations.dungeons.mapScaling": "Map Scaling", "text.autoconfig.skyblocker.option.locations.dungeons.mapX": "Map X", "text.autoconfig.skyblocker.option.locations.dungeons.mapY": "Map Y", - "text.autoconfig.skyblocker.option.locations.dungeons.repartyRejoin": "Auto Rejoin Reparty", "text.autoconfig.skyblocker.option.locations.dungeons.solveThreeWeirdos": "Solve Three Weirdos Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.blazesolver": "Solve Blaze Puzzle", "text.autoconfig.skyblocker.option.locations.dungeons.solveTrivia": "Solve Trivia Puzzle", -- cgit From ff720f790b87b7caf26f722534a2dc42d12377e4 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Mon, 12 Jun 2023 14:02:00 +0200 Subject: Alternative Solution --- .../skyblocker/chat/ChatMessageListener.java | 4 +- .../skyblocker/skyblock/dungeon/Reparty.java | 91 ---------------------- .../skyblock/dungeon/reparty/AcceptReparty.java | 40 ++++++++++ .../skyblock/dungeon/reparty/Reparty.java | 88 +++++++++++++++++++++ 4 files changed, 131 insertions(+), 92 deletions(-) delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java index f502a356..da0f7ef9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java @@ -4,7 +4,8 @@ import me.xmrvizzy.skyblocker.chat.filters.*; 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.reparty.AcceptReparty; +import me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.Reparty; import me.xmrvizzy.skyblocker.skyblock.dungeon.ThreeWeirdos; import me.xmrvizzy.skyblocker.skyblock.dungeon.Trivia; import me.xmrvizzy.skyblocker.skyblock.dwarven.Fetchur; @@ -41,6 +42,7 @@ public interface ChatMessageListener { new Fetchur(), new Puzzler(), new Reparty(), + new AcceptReparty(), 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 deleted file mode 100644 index 3a121eb2..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ /dev/null @@ -1,91 +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 me.xmrvizzy.skyblocker.utils.Utils; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.text.Text; - -import java.util.regex.Matcher; -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; - - public Reparty() { - super("^(?:You are not currently in a party\\." + - "|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))" + - "|([\\[A-z+\\]]* )?(?[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; - this.repartying = true; - SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown("/p list"); - return 0; - }))); - } - - @Override - public ChatFilterResult state() { - return (SkyblockerConfig.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; - } - - @Override - public boolean onMatch(Text message, Matcher matcher) { - 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 && repartying) { - Matcher m = PLAYER.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 && repartying) { - reparty(); - } - return false; - } - - private void reparty() { - ClientPlayerEntity playerEntity = client.player; - if (playerEntity == null) { - this.repartying = false; - return; - } - sendCommand("/p disband", 1); - for (int i = 0; i < this.players.length; ++i) { - String command = "/p invite " + this.players[i]; - sendCommand(command, i + 2); - } - 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/reparty/AcceptReparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java new file mode 100644 index 00000000..3a243a57 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java @@ -0,0 +1,40 @@ +package me.xmrvizzy.skyblocker.skyblock.dungeon.reparty; + +import me.xmrvizzy.skyblocker.SkyblockerMod; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; +import net.minecraft.text.Text; + +import java.util.regex.Matcher; + +import static me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.Reparty.partyLeader; + +public class AcceptReparty extends ChatPatternListener { + + private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance(); + + public AcceptReparty() { + super("-----------------------------------------------------" + + "\n([\\[A-z+\\]]* )?(?[A-z0-9_]*) has invited you to join their party!" + + "\nYou have 60 seconds to accept. Click here to join!" + + "\n-----------------------------------------------------"); + } + + @Override + protected ChatFilterResult state() { + return (partyLeader != null) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + } + + @Override + protected boolean onMatch(Text message, Matcher matcher) { + try { + if (matcher.group("name").equals(partyLeader)) { + skyblocker.messageScheduler.sendMessageAfterCooldown("/party accept " + partyLeader); + } + } catch (NullPointerException e) { + //in case if block executes after setting "partyLeader" variable to null + } + partyLeader = null; + return false; + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java new file mode 100644 index 00000000..1bff342f --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java @@ -0,0 +1,88 @@ +package me.xmrvizzy.skyblocker.skyblock.dungeon.reparty; + +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; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.text.Text; + +import java.util.regex.Matcher; +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; + + public static String partyLeader; + 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]+)\\)|:( .*))" + + "|([\\[A-z+\\]]* )?(?[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; + this.repartying = true; + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown("/p list"); + return 0; + }))); + } + + @Override + public ChatFilterResult state() { + return (SkyblockerConfig.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + } + + @Override + public boolean onMatch(Text message, Matcher matcher) { + 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 && repartying) { + Matcher m = PLAYER.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())) { + partyLeader = matcher.group("name"); + skyblocker.scheduler.schedule(() -> partyLeader = null, 20); + return false; + } else { + this.repartying = false; + return false; + } + if (this.playersSoFar == this.players.length && repartying) { + reparty(); + } + return false; + } + + private void reparty() { + ClientPlayerEntity playerEntity = client.player; + if (playerEntity == null) { + this.repartying = false; + return; + } + sendCommand("/p disband", 1); + for (int i = 0; i < this.players.length; ++i) { + String command = "/p invite " + this.players[i]; + sendCommand(command, i + 2); + } + skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); + } + + private void sendCommand(String command, int delay) { + skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY); + } +} -- cgit From a84e6bab5f4205a7d2cf04fd73ec08ab16f9155d Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Mon, 12 Jun 2023 15:59:33 +0200 Subject: Alternative Solution --- .../me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java index 3a243a57..21513fc6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java @@ -32,7 +32,7 @@ public class AcceptReparty extends ChatPatternListener { skyblocker.messageScheduler.sendMessageAfterCooldown("/party accept " + partyLeader); } } catch (NullPointerException e) { - //in case if block executes after setting "partyLeader" variable to null + // In case if block executes after setting "partyLeader" variable to null } partyLeader = null; return false; -- cgit From b21711bf9f5fcc5b28235a44d659e3ae4b5f6e7d Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Mon, 19 Jun 2023 00:52:02 +0200 Subject: Possibly shorter solution + tests added --- .../skyblocker/chat/ChatMessageListener.java | 4 +- .../skyblocker/skyblock/dungeon/Reparty.java | 94 ++++++++++++++++++++++ .../skyblock/dungeon/reparty/AcceptReparty.java | 40 --------- .../skyblock/dungeon/reparty/Reparty.java | 88 -------------------- .../skyblock/dungeon/AcceptRepartyTest.java | 35 ++++++++ 5 files changed, 130 insertions(+), 131 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java delete mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java create mode 100644 src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java (limited to 'src') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java index da0f7ef9..f502a356 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatMessageListener.java @@ -4,8 +4,7 @@ import me.xmrvizzy.skyblocker.chat.filters.*; 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.AcceptReparty; -import me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.Reparty; +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; @@ -42,7 +41,6 @@ public interface ChatMessageListener { new Fetchur(), new Puzzler(), new Reparty(), - new AcceptReparty(), 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 new file mode 100644 index 00000000..8becd757 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -0,0 +1,94 @@ +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; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.text.Text; + +import java.util.regex.Matcher; +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]+)\\)|:( .*))" + + "|([\\[A-z+\\]]* )?(?[A-z0-9_]*) has disbanded .*" + + "|.*\n([\\[A-z+\\]]* )?(?[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; + this.repartying = true; + SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown("/p list"); + return 0; + }))); + } + + @Override + public ChatFilterResult state() { + return (SkyblockerConfig.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; + } + + @Override + public boolean onMatch(Text message, Matcher matcher) { + 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 && 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(); + } + return false; + } + + private void reparty() { + ClientPlayerEntity playerEntity = client.player; + if (playerEntity == null) { + this.repartying = false; + return; + } + sendCommand("/p disband", 1); + for (int i = 0; i < this.players.length; ++i) { + String command = "/p invite " + this.players[i]; + sendCommand(command, i + 2); + } + skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); + } + + private void sendCommand(String command, int delay) { + skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY); + } +} \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java deleted file mode 100644 index 21513fc6..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/AcceptReparty.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.dungeon.reparty; - -import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; -import net.minecraft.text.Text; - -import java.util.regex.Matcher; - -import static me.xmrvizzy.skyblocker.skyblock.dungeon.reparty.Reparty.partyLeader; - -public class AcceptReparty extends ChatPatternListener { - - private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance(); - - public AcceptReparty() { - super("-----------------------------------------------------" + - "\n([\\[A-z+\\]]* )?(?[A-z0-9_]*) has invited you to join their party!" + - "\nYou have 60 seconds to accept. Click here to join!" + - "\n-----------------------------------------------------"); - } - - @Override - protected ChatFilterResult state() { - return (partyLeader != null) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; - } - - @Override - protected boolean onMatch(Text message, Matcher matcher) { - try { - if (matcher.group("name").equals(partyLeader)) { - skyblocker.messageScheduler.sendMessageAfterCooldown("/party accept " + partyLeader); - } - } catch (NullPointerException e) { - // In case if block executes after setting "partyLeader" variable to null - } - partyLeader = null; - return false; - } -} diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java deleted file mode 100644 index 1bff342f..00000000 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/reparty/Reparty.java +++ /dev/null @@ -1,88 +0,0 @@ -package me.xmrvizzy.skyblocker.skyblock.dungeon.reparty; - -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; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.text.Text; - -import java.util.regex.Matcher; -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; - - public static String partyLeader; - 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]+)\\)|:( .*))" + - "|([\\[A-z+\\]]* )?(?[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; - this.repartying = true; - SkyblockerMod.getInstance().messageScheduler.sendMessageAfterCooldown("/p list"); - return 0; - }))); - } - - @Override - public ChatFilterResult state() { - return (SkyblockerConfig.get().general.acceptReparty || this.repartying) ? ChatFilterResult.FILTER : ChatFilterResult.PASS; - } - - @Override - public boolean onMatch(Text message, Matcher matcher) { - 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 && repartying) { - Matcher m = PLAYER.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())) { - partyLeader = matcher.group("name"); - skyblocker.scheduler.schedule(() -> partyLeader = null, 20); - return false; - } else { - this.repartying = false; - return false; - } - if (this.playersSoFar == this.players.length && repartying) { - reparty(); - } - return false; - } - - private void reparty() { - ClientPlayerEntity playerEntity = client.player; - if (playerEntity == null) { - this.repartying = false; - return; - } - sendCommand("/p disband", 1); - for (int i = 0; i < this.players.length; ++i) { - String command = "/p invite " + this.players[i]; - sendCommand(command, i + 2); - } - skyblocker.scheduler.schedule(() -> this.repartying = false, this.players.length + 2); - } - - private void sendCommand(String command, int delay) { - skyblocker.messageScheduler.queueMessage(command, delay * BASE_DELAY); - } -} diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java new file mode 100644 index 00000000..0fd0363b --- /dev/null +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java @@ -0,0 +1,35 @@ +package me.xmrvizzy.skyblocker.skyblock.dungeon; + +import me.xmrvizzy.skyblocker.chat.ChatPatternListenerTest; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import java.util.regex.Matcher; + +public class AcceptRepartyTest extends ChatPatternListenerTest { + + public AcceptRepartyTest() { super(new Reparty()); } + + protected void assertGroup(String message, String group, String expect) { + Matcher matcher = matcher(message); + assertTrue(matcher.matches()); + assertEquals(expect, matcher.group(group)); + } + + @Test + void testDisband() { + assertGroup("[VIP+] KoloiYolo has disbanded the party!", + /* group: */ "disband", + /* expect: */ "KoloiYolo"); + } + + @Test + void testInvite() { + assertGroup("-----------------------------------------------------" + + "\nStefan has invited you to join their party!" + + "\nYou have 60 seconds to accept. Click here to join!" + + "\n-----------------------------------------------------", + /* group: */ "invite", + /* expect: */ "Stefan"); + } +} \ No newline at end of file -- cgit From f3f000a7e5a015aa7690502c8c3b74ce558decf6 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 25 Jun 2023 13:02:20 +0200 Subject: Resolve conflicts with master --- src/main/resources/assets/skyblocker/lang/en_us.json | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 502efde3..3889777c 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -20,6 +20,10 @@ "text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition": "Mana Bar Position", "text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition": "Defence Bar Position", "text.autoconfig.skyblocker.option.general.bars.barpositions.experienceBarPosition": "Experience Bar Position", + "text.autoconfig.skyblocker.option.general.experiments": "Experiments Solver", + "text.autoconfig.skyblocker.option.general.experiments.enableChronomatronSolver": "Enable Chronomatron Solver", + "text.autoconfig.skyblocker.option.general.experiments.enableSuperpairsSolver": "Enable Superpairs Solver", + "text.autoconfig.skyblocker.option.general.experiments.enableUltrasequencerSolver": "Enable Ultrasequencer Solver", "text.autoconfig.skyblocker.option.general.acceptReparty": "Auto accept Reparty", "text.autoconfig.skyblocker.option.general.fishing": "Fishing Helper", "text.autoconfig.skyblocker.option.general.fishing.enableFishingHelper": "Enable Fishing Helper", -- cgit From 6907c2b9a237ea25f5bf4114fdbcf7698a2ad127 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Sun, 25 Jun 2023 20:38:22 +0200 Subject: fix to crashes on checks --- src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') 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 8becd757..cb28a4de 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -16,7 +16,6 @@ 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; @@ -58,7 +57,7 @@ public class Reparty extends ChatPatternListener { } } else if (matcher.group("disband") != null && !matcher.group("disband").equals(client.getSession().getUsername())) { partyLeader = matcher.group("disband"); - skyblocker.scheduler.schedule(() -> partyLeader = null, 21); + SkyblockerMod.getInstance().scheduler.schedule(() -> partyLeader = null, 21); return false; } else if (matcher.group("invite") != null && matcher.group("invite").equals(partyLeader)) { String command = "/party accept " + partyLeader; @@ -85,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 -- cgit From 98e7aacc77dd06fc70a0967bee0944c5d8a28be6 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Thu, 29 Jun 2023 19:51:52 +0200 Subject: changed "[A-z0-9_]" in regex to "." --- src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') 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 cb28a4de..3166d995 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -27,8 +27,8 @@ public class Reparty extends ChatPatternListener { public Reparty() { super("^(?:You are not currently in a party\\." + "|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*))" + - "|([\\[A-z+\\]]* )?(?[A-z0-9_]*) has disbanded .*" + - "|.*\n([\\[A-z+\\]]* )?(?[A-z0-9_]*) has invited you to join their party!" + + "|([\\[A-z+\\]]* )?(?.*) has disbanded .*" + + "|.*\n([\\[A-z+\\]]* )?(?.*) has invited you to join their party!" + "\nYou have 60 seconds to accept. Click here to join!\n.*)$"); this.repartying = false; -- cgit From 8f3bc2b02dc66dfa337f77fa0109cac1bdc8816c Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Thu, 29 Jun 2023 19:56:24 +0200 Subject: changed "[A-z0-9_]" in regex to "." --- .../me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java index 0fd0363b..2465f7a2 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/AcceptRepartyTest.java @@ -26,10 +26,10 @@ public class AcceptRepartyTest extends ChatPatternListenerTest { @Test void testInvite() { assertGroup("-----------------------------------------------------" + - "\nStefan has invited you to join their party!" + + "\n[MVP+] 1wolvesgaming has invited you to join their party!" + "\nYou have 60 seconds to accept. Click here to join!" + "\n-----------------------------------------------------", /* group: */ "invite", - /* expect: */ "Stefan"); + /* expect: */ "1wolvesgaming"); } } \ No newline at end of file -- cgit From 6196600f51f59be3e1f2671ab3fd6d1dd103fd75 Mon Sep 17 00:00:00 2001 From: Jakub Kolodziej Date: Thu, 29 Jun 2023 20:17:51 +0200 Subject: extended the reparty accept window from 1s to 3s --- src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') 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 3166d995..8ae7ce7b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -57,7 +57,7 @@ public class Reparty extends ChatPatternListener { } } else if (matcher.group("disband") != null && !matcher.group("disband").equals(client.getSession().getUsername())) { partyLeader = matcher.group("disband"); - SkyblockerMod.getInstance().scheduler.schedule(() -> partyLeader = null, 21); + 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; -- cgit