From 47bda67accdea7020d0b2b556912b91357829a73 Mon Sep 17 00:00:00 2001 From: RettichLP Date: Tue, 14 Jul 2026 15:05:05 +0200 Subject: [PATCH] Add ATM deposit limit detection with clickable suggestion for max deposit amount --- .../ucutils/listener/impl/EconomyListener.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/de/rettichlp/ucutils/listener/impl/EconomyListener.java b/src/main/java/de/rettichlp/ucutils/listener/impl/EconomyListener.java index df192623..902e7a8a 100644 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/EconomyListener.java +++ b/src/main/java/de/rettichlp/ucutils/listener/impl/EconomyListener.java @@ -25,6 +25,7 @@ import static java.lang.System.currentTimeMillis; import static java.util.Optional.ofNullable; import static java.util.regex.Pattern.compile; +import static net.minecraft.ChatFormatting.GOLD; import static net.minecraft.ChatFormatting.GRAY; import static net.minecraft.ChatFormatting.RED; import static net.minecraft.ChatFormatting.UNDERLINE; @@ -42,6 +43,7 @@ public class EconomyListener implements IMessageReceiveListener { private static final Pattern BANK_TRANSFER_FBANK_PATTERN = compile("^Du hast der Fraktion (?.+) (?\\d+)\\$ überwiesen!$"); private static final Pattern BANK_NEW_BALANCE_BANK_PATTERN = compile("^Neuer Bankkontostand: (?\\d+)\\$$"); private static final Pattern BANK_NEW_BALANCE_CASH_PATTERN = compile("^Neuer Bargeldbestand: (?\\d+)\\$$"); + private static final Pattern BANK_DEPOSIT_ATM_TOO_MUCH_PATTERN = compile("^Du versuchst (?\\d+)\\$ einzuzahlen, der Bankautomat hat aber nur Platz für (?\\d+)\\$\\. Fortfahren\\? \\[Bestätigen]$"); // cash private static final Pattern CASH_GIVE_PATTERN = compile("^Du hast (?:\\[UC])?(?[a-zA-Z0-9_]+) (?\\d+)\\$ gegeben!$"); @@ -147,6 +149,22 @@ public boolean onMessageReceive(Component text, String message) { return true; } + Matcher bankDepositAtmTooMuchMatcher = BANK_DEPOSIT_ATM_TOO_MUCH_PATTERN.matcher(message); + if (bankDepositAtmTooMuchMatcher.find()) { + int availableAmount = parseInt(bankDepositAtmTooMuchMatcher.group("availableAmount")); + + MutableComponent modified = text.copy() + .append(SPACE) + .append(literal("[" + availableAmount + "$ einzahlen]").withStyle(style -> style + .withColor(GOLD) + .withClickEvent(new ClickEvent.RunCommand("/bank einzahlen " + availableAmount)) + .withHoverEvent(new HoverEvent.ShowText(literal("Nur " + availableAmount + "$ einzahlen").withStyle(GOLD))))); + + player.sendSystemMessage(modified); + + return false; + } + Matcher cashGiveMatcher = CASH_GIVE_PATTERN.matcher(message); if (cashGiveMatcher.find()) { int amount = parseInt(cashGiveMatcher.group("amount"));