From 3a681fad6111184f0d0c77f45153834e1a0ebc35 Mon Sep 17 00:00:00 2001 From: Stachelbeere1248 Date: Fri, 15 Aug 2025 19:35:44 +0200 Subject: [PATCH] some features + !reinv transfer fix + leap msgs + ?m7 carry guide --- .../xyz/stachel/bonzotimer/ChatHandler.java | 205 ++++++++++-------- 1 file changed, 110 insertions(+), 95 deletions(-) diff --git a/src/main/java/xyz/stachel/bonzotimer/ChatHandler.java b/src/main/java/xyz/stachel/bonzotimer/ChatHandler.java index b223a31..d18da13 100644 --- a/src/main/java/xyz/stachel/bonzotimer/ChatHandler.java +++ b/src/main/java/xyz/stachel/bonzotimer/ChatHandler.java @@ -15,16 +15,16 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class ChatHandler { - private static final String PLAYER_PATTERN = "(?:\\[(?:VIP\\+?|MVP\\+{0,2}|YOUTUBE|MOD|ADMIN)\\] )?([a-zA-Z0-9_]{2,16})"; + private static final String IGN_PATTERN = "([a-zA-Z0-9_]{2,16})"; + private static final String PLAYER_PATTERN = "(?:\\[(?:VIP\\+?|MVP\\+{0,2}|YOUTUBE|MOD|ADMIN)\\] )?" + IGN_PATTERN; private static final Pattern PARTY_PATTERN = Pattern.compile("Party > " + PLAYER_PATTERN + ": (.*)"); private static final Pattern TRANSFER_PATTERN = Pattern.compile("The party was transferred to " + PLAYER_PATTERN +" by " + PLAYER_PATTERN); + private static final Pattern TRANSFER_LEAVE_PATTERN = Pattern.compile("The party was transferred to " + PLAYER_PATTERN + " because " + PLAYER_PATTERN "left"); private static final Pattern PROMOTE_PATTERN = Pattern.compile(PLAYER_PATTERN + " has promoted " + PLAYER_PATTERN + " to Party Leader"); private static final Pattern LEAVE_PATTERN = Pattern.compile(PLAYER_PATTERN + " has left the party."); - //private static final String[] COLOR_MAPPING = { "§6ORANGE", "§aGREEN", "§4RED" ,"§9BLUE", "§5PRPLX" }; + private static final Pattern LEAP_PATTERN = Pattern.compile("You have teleported to " + IGN_PATTERN + "!"); private int transferCountdown = 0; private boolean autotransferEnabled = false; - //private int colorChangeCooldown = 0; - //private int color = 0; private String oldLeader = null; private HashMap rejoiners = new HashMap<>(); @@ -34,12 +34,6 @@ public class ChatHandler { @SubscribeEvent public void onTick(TickEvent.@NotNull ClientTickEvent event) { - /*if (colorChangeCooldown > 0) { - colorChangeCooldown--; - } else { - color = 0; - }*/ - if (transferCountdown > 1) { transferCountdown--; } else if (transferCountdown == 1 && Minecraft.getMinecraft().thePlayer != null && this.oldLeader != null) { @@ -53,94 +47,115 @@ public class ChatHandler { @SubscribeEvent public void onChatReceived(@NotNull ClientChatReceivedEvent event) { if (event.type == 2) return; - final String strippedMessage = event.message.getUnformattedText().replaceAll("§[0-9a-fklmnor]", "").trim(); + final String strippedMessage = event.message.getUnformattedText().replaceAll("§[0-9a-fklmnor]", "").trim(); - if (autotransferEnabled) { - final Matcher transfer = TRANSFER_PATTERN.matcher(strippedMessage); - final Matcher promote = PROMOTE_PATTERN.matcher(strippedMessage); - String newLeader = ""; - if (transfer.matches()) { - this.oldLeader = transfer.group(2); - newLeader = transfer.group(1); - } else if (promote.matches()) { - this.oldLeader = promote.group(1); - newLeader = promote.group(2); - } +branched: { - if (!newLeader.equals("") && newLeader.equals(Minecraft.getMinecraft().thePlayer.getName())) { - this.transferCountdown = 10; - } - } +literal: switch (strippedMessage) { + case "Your Bonzo's Mask saved your life!": + case "Your ⚚ Bonzo's Mask saved your life!": + Timer.setInstance(new Timer((byte) 60)); + Minecraft.getMinecraft().thePlayer.sendChatMessage("Bonzo's Mask popped (3s)"); + break branched; + case "Second Wind Activated! Your Spirit Mask saved your life!": + case "Second Wind Activated! Your ⚚ Spirit Mask saved your life!": + Timer.setInstance(new Timer((byte) 60)); + Minecraft.getMinecraft().thePlayer.sendChatMessage("Spirit Mask popped (3s)"); + break branched; + case "Your Phoenix Pet saved you from certain death!": + Timer.setInstance(new Timer((byte) 60)); + Minecraft.getMinecraft().thePlayer.sendChatMessage("Phoenix pet popped (3s)"); + break branched; + default: + break literal; + }; - final Matcher partyChat = PARTY_PATTERN.matcher(strippedMessage); - if (partyChat.matches()) { - final String partyMessage = partyChat.group(2); - final String user = partyChat.group(1); - switch (partyMessage) { - case "!warp": - Minecraft.getMinecraft().thePlayer.sendChatMessage("/p warp"); - break; - case "!help": - Minecraft.getMinecraft().thePlayer.sendChatMessage("Commands: !warp, !m7, !f7, !ptme, !allinv"); - break; - case "!m7": - Minecraft.getMinecraft().thePlayer.sendChatMessage("/joindungeon master_catacombs_floor_seven"); - break; - case "!f7": - Minecraft.getMinecraft().thePlayer.sendChatMessage("/joindungeon catacombs_floor_seven"); - break; - case "!allinvite": - case "!allinv": - Minecraft.getMinecraft().thePlayer.sendChatMessage("/p settings allinvite"); - break; - case "!reinv": - rejoiners.put(user, (byte) 100); - break; - case "!ptme": - event.message.appendSibling( - new ChatComponentText(" [ACCEPT]") - .setChatStyle(new ChatStyle() - .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/p transfer " + user)) - .setColor(EnumChatFormatting.RED).setBold(true)) - ); - break; - } - } else { - switch (strippedMessage) { - case "Your Bonzo's Mask saved your life!": - case "Your ⚚ Bonzo's Mask saved your life!": - Timer.setInstance(new Timer((byte) 60)); - Minecraft.getMinecraft().thePlayer.sendChatMessage("Bonzo's Mask popped (3s)"); - break; - case "Second Wind Activated! Your Spirit Mask saved your life!": - case "Second Wind Activated! Your ⚚ Spirit Mask saved your life!": - Timer.setInstance(new Timer((byte) 60)); - Minecraft.getMinecraft().thePlayer.sendChatMessage("Spirit Mask popped (3s)"); - break; - case "Your Phoenix Pet saved you from certain death!": - Timer.setInstance(new Timer((byte) 60)); - Minecraft.getMinecraft().thePlayer.sendChatMessage("Phoenix pet popped (3s)"); - break; - default: - break; - } + if (autotransferEnabled) { + final Matcher transfer = TRANSFER_PATTERN.matcher(strippedMessage); + final Matcher promote = PROMOTE_PATTERN.matcher(strippedMessage); + String newLeader = ""; + if (transfer.matches()) { + this.oldLeader = transfer.group(2); + newLeader = transfer.group(1); + } else if (promote.matches()) { + this.oldLeader = promote.group(1); + newLeader = promote.group(2); + } - final Matcher leave = LEAVE_PATTERN.matcher(strippedMessage); - if (leave.matches()) { - final String leaver = leave.group(1).trim(); - if (rejoiners.getOrDefault(leaver, (byte) 0) != 0) { - Minecraft.getMinecraft().thePlayer.sendChatMessage("/party invite " + leaver); - } - } - } - } + if (!newLeader.isEmpty() && newLeader.equals(Minecraft.getMinecraft().thePlayer.getName())) { + this.transferCountdown = 10; + break branched; + } + } - /* private void changeColor(final int color) { - if (this.color < color || this.colorChangeCooldown == 0) { - this.color = color; - this.colorChangeCooldown = 10; - final String title = ChatHandler.COLOR_MAPPING[color-1]; - Minecraft.getMinecraft().ingameGUI.displayTitle(title, "", 0, 5, 1); - }; - }*/ + final Matcher partyChat = PARTY_PATTERN.matcher(strippedMessage); + if (partyChat.matches()) { + final String partyMessage = partyChat.group(2); + final String user = partyChat.group(1); + switch (partyMessage) { + case "!warp": + case "!w": + Minecraft.getMinecraft().thePlayer.sendChatMessage("/p warp"); + break branched; + case "!help": + Minecraft.getMinecraft().thePlayer.sendChatMessage("Commands: !warp, !m7, !f7, !ptme, !allinv, !reinv"); + break branched; + case "!m7": + Minecraft.getMinecraft().thePlayer.sendChatMessage("/joindungeon master_catacombs_floor_seven"); + break branched; + case "!f7": + Minecraft.getMinecraft().thePlayer.sendChatMessage("/joindungeon catacombs_floor_seven"); + break branched; + case "!allinvite": + case "!allinv": + Minecraft.getMinecraft().thePlayer.sendChatMessage("/p settings allinvite"); + break branched; + case "!reinv": + rejoiners.put(user, (byte) 100); + break branched; + case "!ptme": + case "!pt": + event.message.appendSibling( + new ChatComponentText(" [ACCEPT]") + .setChatStyle(new ChatStyle() + .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/p transfer " + user)) + .setColor(EnumChatFormatting.RED).setBold(true)) + ); + break branched; + case "?m7": + Minecraft.getMinecraft().thePlayer.sendChatMessage("Please select the MAGE or BERSERK dungeon class and stay with the tank while trying to reach MILESTONE 3. After reaching milestone 3, please run /hub, you will be warped back later! :D"); + break branched; + case "?help": + Minecraft.getMinecraft().thePlayer.sendChatMessage("Helper messages: ?m7"); + break branched; + } + } + + + final Matcher leave = LEAVE_PATTERN.matcher(strippedMessage); + if (leave.matches()) { + final String leaver = leave.group(1).trim(); + if (rejoiners.getOrDefault(leaver, (byte) 0) != 0) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/party invite " + leaver); + } + break branched; + }; + + final Matcher tansLeave = TRANSFER_LEAVE_PATTERN.matcher(strippedMessage); + if (transLeave.matches()) { + final String leave = transfer.group(2).trim(); + if (rejoiners.getOrDefault(leaver, (byte) 0) != 0) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/party invite " + leaver); + } + break branched; + }; + + final Matcher leap = LEAP_PATTERN.matcher(strippedMessage); + if (leap.matches()) { + final String target = leap.group(1).trim(); + Minecraft.getMinecraft().thePlayer.sendChatMessage("Gonna touch " + target + "."); + break branched; + } + }; + }; }