diff options
11 files changed, 68 insertions, 37 deletions
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\\.$"); } 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; 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); + } } 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() { |