diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon')
3 files changed, 36 insertions, 27 deletions
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 65b9648f..f5fd1151 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -1,16 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.chat.ChatPatternListener; 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 net.minecraft.text.Text; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class Reparty extends ChatListener { +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}) ●"); @@ -36,17 +38,17 @@ public class Reparty extends ChatListener { } @Override - public boolean isEnabled() { - return repartying; + public ChatFilterResult state() { + return repartying ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { - if (groups[1] != null) { + public boolean onMatch(Text message, Matcher matcher) { + if (matcher.group(1) != null) { playersSoFar = 0; - players = new String[Integer.parseInt(groups[1]) - 1]; - } else if (groups[2] != null) { - Matcher m = PLAYER.matcher(groups[2]); + players = new String[Integer.parseInt(matcher.group(1)) - 1]; + } else if (matcher.group(2) != null) { + Matcher m = PLAYER.matcher(matcher.group(2)); while (m.find()) { players[playersSoFar++] = m.group(1); } @@ -65,10 +67,10 @@ public class Reparty extends ChatListener { sendCommand(playerEntity, "/p disband", 1); StringBuilder sb = new StringBuilder(); int invites = (players.length - 1) / 5 + 1; - for(int i = 0; i < invites; i++) { + for (int i = 0; i < invites; i++) { sb.setLength(0); sb.append("/p invite"); - for(int j = 0; j < 5 && i * 5 + j < players.length; j++) { + for (int j = 0; j < 5 && i * 5 + j < players.length; j++) { sb.append(' '); sb.append(players[i * 5 + j]); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java index ea63b35e..8f1f3711 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java @@ -1,24 +1,27 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatListener; +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.entity.decoration.ArmorStandEntity; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -public class ThreeWeirdos extends ChatListener { +import java.util.regex.Matcher; + +public class ThreeWeirdos extends ChatPatternListener { public ThreeWeirdos() { super("^§e\\[NPC] §c([A-Z][a-z]+)§f: (?:The reward is(?: not in my chest!|n't in any of our chests\\.)|My chest (?:doesn't have the reward\\. We are all telling the truth\\.|has the reward and I'm telling the truth!)|At least one of them is lying, and the reward is not in §c§c[A-Z][a-z]+'s §rchest\\!|Both of them are telling the truth\\. Also, §c§c[A-Z][a-z]+ §rhas the reward in their chest\\!)$"); } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().locations.dungeons.solveThreeWeirdos; + public ChatFilterResult state() { + return SkyblockerConfig.get().locations.dungeons.solveThreeWeirdos ? null : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { + public boolean onMatch(Text message, Matcher matcher) { MinecraftClient client = MinecraftClient.getInstance(); assert client.world != null; assert client.player != null; @@ -27,13 +30,13 @@ public class ThreeWeirdos extends ChatListener { client.player.getBoundingBox().expand(3), entity -> { Text customName = entity.getCustomName(); - if (customName != null && customName.getString().equals(groups[1])) { + if (customName != null && customName.getString().equals(matcher.group(1))) { return true; } return false; } ).forEach( - entity -> entity.setCustomName(Text.of(Formatting.GREEN + groups[1])) + entity -> entity.setCustomName(Text.of(Formatting.GREEN + matcher.group(1))) ); return false; } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java index bb3d10d2..51ff1c6a 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java @@ -1,15 +1,18 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatListener; +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.client.network.ClientPlayerEntity; import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.util.Formatting; import java.util.*; +import java.util.regex.Matcher; -public class Trivia extends ChatListener { +public class Trivia extends ChatPatternListener { private static final Map<String, String[]> answers; private List<String> solutions = Collections.emptyList(); @@ -18,21 +21,22 @@ public class Trivia extends ChatListener { } @Override - public boolean isEnabled() { - return SkyblockerConfig.get().locations.dungeons.solveTrivia; + public ChatFilterResult state() { + return SkyblockerConfig.get().locations.dungeons.solveTrivia ? ChatFilterResult.FILTER : ChatFilterResult.PASS; } @Override - public boolean onMessage(String[] groups) { - if (groups[3] != null) { - if (!solutions.contains(groups[3])) { + public boolean onMatch(Text message, Matcher matcher) { + String riddle = matcher.group(3); + if (riddle != null) { + if (!solutions.contains(riddle)) { ClientPlayerEntity player = MinecraftClient.getInstance().player; assert player != null; - MinecraftClient.getInstance().player.sendMessage(new LiteralText(" " + Formatting.GOLD + groups[2] + Formatting.RED + " " + groups[3]), false); + MinecraftClient.getInstance().player.sendMessage(new LiteralText(" " + Formatting.GOLD + matcher.group(2) + Formatting.RED + " " + riddle), false); return true; } } else - updateSolutions(groups[1]); + updateSolutions(matcher.group(0)); return false; } |