From 92a7fdb2da62e9b9f73ed336956383aa095c7b8c Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Wed, 13 Oct 2021 22:26:52 +0200 Subject: Changed chat listeners to not block messages by default --- src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java | 4 +--- .../me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java | 2 +- .../java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java | 2 +- .../java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java | 2 +- .../java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java | 12 ++++++++++++ .../java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java | 2 +- .../me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java | 2 +- .../xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java | 2 +- 8 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java (limited to 'src/main') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java index e89d06c2..84034f41 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatListener.java @@ -14,7 +14,5 @@ public abstract class ChatListener { public abstract boolean isEnabled(); //Returns whether message should get filtered - public boolean onMessage(String[] groups) { - return true; - } + public abstract boolean onMessage(String[] groups); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java index 0956e0e5..d0178dd6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilter.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class AbilityFilter extends ChatListener { +public class AbilityFilter extends ChatFilter { public AbilityFilter() { super("^(?:This ability is on cooldown for " + NUMBER + "s\\.|No more charges, next one in " + NUMBER + "s!)$"); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java index e772f098..16cb5fc3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java @@ -5,7 +5,7 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import java.util.regex.Pattern; -public class AdFilter extends ChatListener { +public class AdFilter extends ChatFilter { private static final String regex; public AdFilter() { diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java index 6fa85f14..4545399e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilter.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class AoteFilter extends ChatListener { +public class AoteFilter extends ChatFilter { public AoteFilter() { super("^There are blocks in the way!$"); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java new file mode 100644 index 00000000..fac9a3a3 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilter.java @@ -0,0 +1,12 @@ +package me.xmrvizzy.skyblocker.chat.filters; + +import me.xmrvizzy.skyblocker.chat.ChatListener; + +public abstract class ChatFilter extends ChatListener { + public ChatFilter(String pattern) { + super(pattern); + } + public boolean onMessage(String[] groups) { + return true; + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java index e8421a45..b4e1c575 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/HealFilter.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class HealFilter extends ChatListener { +public class HealFilter extends ChatFilter { public HealFilter() { super("^(?:You healed yourself for " + NUMBER + " health!|[a-zA-Z0-9_]{2,16} healed you for " + NUMBER + " health!)$"); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java index 5bcaba57..ffdc5f40 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilter.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class ImplosionFilter extends ChatListener { +public class ImplosionFilter extends ChatFilter { public ImplosionFilter() { super("^Your Implosion hit " + NUMBER + " enem(?:y|ies) for " + NUMBER + " damage\\.$"); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java index daa4b601..b6fbddaf 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -public class MoltenWaveFilter extends ChatListener { +public class MoltenWaveFilter extends ChatFilter { public MoltenWaveFilter() { super("^Your Molten Wave hit " + NUMBER + " enemy(?:y|ies) for " + NUMBER + " damage\\.$"); } -- cgit From 96f39459c9087884e943574aa26e64ba904f538a Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Wed, 13 Oct 2021 23:59:57 +0200 Subject: Changed reparty to invite multiple people per command Made it wait between commands in a separate thread --- .../skyblocker/skyblock/dungeon/Reparty.java | 71 ++++++++++++++-------- 1 file changed, 46 insertions(+), 25 deletions(-) (limited to 'src/main') 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 c12662d2..69278023 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -5,16 +5,14 @@ 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 static final int SLEEP_TIME = 600; private String[] players; private int playersSoFar; @@ -24,14 +22,14 @@ public class Reparty extends ChatListener { 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) + ClientCommandManager.literal("rp").executes(context -> { + if (!Utils.isSkyblock || repartying) + return 0; + assert client.player != null; + repartying = true; + client.player.sendChatMessage("/p list"); return 0; - assert client.player != null; - repartying = true; - client.player.sendChatMessage("/p list"); - return 0; - }) + }) ); } @@ -42,35 +40,58 @@ public class Reparty extends ChatListener { @Override public boolean onMessage(String[] groups) { - if(groups[1] != null) { + if (groups[1] != null) { playersSoFar = 0; players = new String[Integer.parseInt(groups[1]) - 1]; - } - else if(groups[2] != null) { + } else if (groups[2] != null) { Matcher m = PLAYER.matcher(groups[2]); - while(m.find()) { + while (m.find()) { players[playersSoFar++] = m.group(1); } - } - else + } else { repartying = false; - if(playersSoFar == players.length) - client.execute(this::reparty); + return false; + } + if (playersSoFar == players.length) + new Thread(this::reparty).start(); 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!"); + StringBuilder sb = new StringBuilder("/p disband"); + for (int i = 0; i < players.length; i++) { + if (i % 5 == 0) { + sleep(); + playerEntity.sendChatMessage(sb.toString()); + sb.setLength(0); + sb.append("/p invite"); } - playerEntity.sendChatMessage("/p invite " + player); + sb.append(' '); + sb.append(players[i]); + } + if (players.length % 5 != 0) { + sleep(); + playerEntity.sendChatMessage(sb.toString()); } repartying = false; } + + private void sleep() { + long sleepStart = System.currentTimeMillis(); + boolean interrupted = false; + long sleepLeft = SLEEP_TIME; + do { + if (interrupted) { + sleepLeft = sleepStart + SLEEP_TIME - System.currentTimeMillis(); + interrupted = false; + } + try { + Thread.sleep(sleepLeft); + } catch (InterruptedException e) { + interrupted = true; + } + } while (interrupted); + } } -- cgit From 2c66146784f97f33645adf184e380dabc68cc399 Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Thu, 14 Oct 2021 00:17:43 +0200 Subject: Fixed action bar not getting parsed when too many items are displayed --- src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java index ed72858a..94642df0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java @@ -16,7 +16,7 @@ import java.util.regex.Pattern; public class FancyStatusBars extends DrawableHelper { private static final MinecraftClient client = MinecraftClient.getInstance(); private static final Identifier BARS = new Identifier(SkyblockerMod.NAMESPACE,"textures/gui/bars.png"); - private static final Pattern ACTION_BAR_STATUS = Pattern.compile("^§[6c]([0-9]+)/([0-9]+)❤(?:\\+§c[0-9]+\\S)? {3,}(?:§a([0-9]+)§a❈ Defense|(\\S+(?: \\S+)*)) {3,}(?:§b([0-9]+)/([0-9]+)✎ Mana|(\\S+(?: \\S+)*))(?: {3,}(\\S+(?: \\S+)*))?$"); + private static final Pattern ACTION_BAR_STATUS = Pattern.compile("^§[6c]([0-9]+)/([0-9]+)❤(?:\\+§c[0-9]+\\S)? {3,}(?:§a([0-9]+)§a❈ Defense|(\\S+(?: \\S+)*)) {3,}(?:§b([0-9]+)/([0-9]+)✎ Mana|(\\S+(?: \\S+)*))(.*)$"); private final Resource health; private final Resource mana; private int defense; -- cgit From 5ba9a2a3c231ed43804597a5193dd2fcda70912e Mon Sep 17 00:00:00 2001 From: ExternalTime <84183548+ExternalTime@users.noreply.github.com> Date: Thu, 14 Oct 2021 00:38:50 +0200 Subject: Changed api calls to actually be concurrent --- .../java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java index 92b53a6b..64f6d876 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java @@ -89,8 +89,8 @@ public class PriceInfoTooltip { } public static void init() { - MinecraftClient.getInstance().execute(PriceInfoTooltip::downloadPrices); - MinecraftClient.getInstance().execute(PriceInfoTooltip::downloadbazaarPrices); + new Thread(PriceInfoTooltip::downloadPrices).start(); + new Thread(PriceInfoTooltip::downloadbazaarPrices).start(); } private static void downloadPrices() { -- cgit