From fa70b855e417052c114b66ef94116da93c9bd5ef Mon Sep 17 00:00:00 2001 From: RettichLP Date: Thu, 28 May 2026 10:50:47 +0200 Subject: [PATCH 1/3] Pathfinding: centralize house drink detection logic in `HouseListener` --- .../de/rettichlp/ucutils/listener/impl/HouseListener.java | 8 ++++++++ .../rettichlp/ucutils/listener/impl/PlayerListener.java | 7 ------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/rettichlp/ucutils/listener/impl/HouseListener.java b/src/main/java/de/rettichlp/ucutils/listener/impl/HouseListener.java index 9f965caf..0a2c7cb3 100644 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/HouseListener.java +++ b/src/main/java/de/rettichlp/ucutils/listener/impl/HouseListener.java @@ -11,6 +11,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import static de.rettichlp.ucutils.UCUtils.commandService; import static de.rettichlp.ucutils.UCUtils.player; import static de.rettichlp.ucutils.common.services.MessageService.DATE_TIME_FORMAT; import static java.lang.Integer.parseInt; @@ -35,6 +36,7 @@ public class HouseListener implements IMessageReceiveListener { private static final Pattern HOUSE_RENTER_HEADER_PATTERN = compile("^=== Mieter in Haus (?\\d+) ===$"); private static final Pattern HOUSE_RENTER_ENTRY_ONLINE_PATTERN = compile("^» (?:\\[UC])?(?[a-zA-Z0-9_]+) \\(Online\\)$"); private static final Pattern HOUSE_RENTER_ENTRY_OFFLINE_PATTERN = compile("^» (?:\\[UC])?(?[a-zA-Z0-9_]+) \\(Offline seit (?\\d{2}\\.\\d{2}\\.\\d{4} \\d{2}:\\d{2}:\\d{2})\\)$"); + private static final Pattern HOUSE_DRINK_PATTERN = compile("^\\[Küche] Du hast etwas getrunken\\.$"); private int lastHouseNumber = 0; @@ -91,6 +93,12 @@ public boolean onMessageReceive(Text text, String message) { return false; } + Matcher houseDrinkMatcher = HOUSE_DRINK_PATTERN.matcher(message); + if (houseDrinkMatcher.find()) { + commandService.sendCommandWithHiddenOutput("health"); + return commandService.showCommandOutputMessage("health"); + } + return true; } } diff --git a/src/main/java/de/rettichlp/ucutils/listener/impl/PlayerListener.java b/src/main/java/de/rettichlp/ucutils/listener/impl/PlayerListener.java index 80b7f074..1d43c6e0 100644 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/PlayerListener.java +++ b/src/main/java/de/rettichlp/ucutils/listener/impl/PlayerListener.java @@ -47,7 +47,6 @@ public class PlayerListener implements IMessageReceiveListener, ITickListener { private static final Pattern HEALTH_HEADER_PATTERN = compile("^=== Zustand von (?:\\[UC])?(?[a-zA-Z0-9_]+) ===$"); private static final Pattern HEALTH_ENTRY_PATTERN = compile("^§.» (?Gesundheit|Blut §.\\[§..+§.]|Hunger|Durst|Fett|Muskeln)§.: §.((§.)?#)+$"); private static final Pattern HEALTH_ENTRY_HOVER_PATTERN = compile("^§.(?\\d+(\\.\\d+)?)§./§.20\\.0$"); - private static final Pattern HOUSE_DRINK_PATTERN = compile("^\\[Küche] Du hast etwas getrunken\\.$"); // jail private static final Pattern JAIL_PATTERN = compile("^\\[Gefängnis] Du bist nun für (?\\d+) Minuten im Gefängnis\\.$"); @@ -100,12 +99,6 @@ public boolean onMessageReceive(Text text, String message) { return commandService.showCommandOutputMessage("health"); } - Matcher houseDrinkMatcher = HOUSE_DRINK_PATTERN.matcher(message); - if (houseDrinkMatcher.find()) { - commandService.sendCommandWithHiddenOutput("health"); - return commandService.showCommandOutputMessage("health"); - } - Matcher jailMatcher = JAIL_PATTERN.matcher(message); if (jailMatcher.find()) { int minutes = parseInt(jailMatcher.group("minutes")); From 4c7adfc3a3c2df137050cc517faa12a153e4c9bd Mon Sep 17 00:00:00 2001 From: RettichLP Date: Thu, 28 May 2026 10:53:26 +0200 Subject: [PATCH 2/3] Remove `WantedEntry` model and refactor related logic from `WantedListener` to `CarListener` --- .../de/rettichlp/ucutils/common/Storage.java | 6 - .../ucutils/common/models/WantedEntry.java | 13 - .../ucutils/listener/impl/CarListener.java | 10 + .../listener/impl/faction/WantedListener.java | 422 ------------------ 4 files changed, 10 insertions(+), 441 deletions(-) delete mode 100644 src/main/java/de/rettichlp/ucutils/common/models/WantedEntry.java delete mode 100644 src/main/java/de/rettichlp/ucutils/listener/impl/faction/WantedListener.java diff --git a/src/main/java/de/rettichlp/ucutils/common/Storage.java b/src/main/java/de/rettichlp/ucutils/common/Storage.java index 492152b5..7fd56098 100644 --- a/src/main/java/de/rettichlp/ucutils/common/Storage.java +++ b/src/main/java/de/rettichlp/ucutils/common/Storage.java @@ -7,7 +7,6 @@ import de.rettichlp.ucutils.common.models.Job; import de.rettichlp.ucutils.common.models.ShutdownReason; import de.rettichlp.ucutils.common.models.TeamResponse; -import de.rettichlp.ucutils.common.models.WantedEntry; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -52,9 +51,6 @@ public class Storage { @Getter private final Map playerFactionCache = new HashMap<>(); - @Getter - private final List wantedEntries = new ArrayList<>(); - @Getter @Setter private int activeServices = 0; @@ -131,8 +127,6 @@ public void print() { LOGGER.info("medicPillCooldowns[{}]: {}", this.medicPillCooldowns.size(), this.medicPillCooldowns); // playerFactionCache LOGGER.info("playerFactionCache[{}]: {}", this.playerFactionCache.size(), this.playerFactionCache); - // wantedEntries - LOGGER.info("wantedEntries[{}]: {}", this.wantedEntries.size(), this.wantedEntries); // activeServices LOGGER.info("activeServices: {}", this.activeServices); // carLocked diff --git a/src/main/java/de/rettichlp/ucutils/common/models/WantedEntry.java b/src/main/java/de/rettichlp/ucutils/common/models/WantedEntry.java deleted file mode 100644 index bbd498eb..00000000 --- a/src/main/java/de/rettichlp/ucutils/common/models/WantedEntry.java +++ /dev/null @@ -1,13 +0,0 @@ -package de.rettichlp.ucutils.common.models; - -import lombok.AllArgsConstructor; -import lombok.Data; - -@Data -@AllArgsConstructor -public class WantedEntry { - - private String playerName; - private int wantedPointAmount; - private String reason; -} diff --git a/src/main/java/de/rettichlp/ucutils/listener/impl/CarListener.java b/src/main/java/de/rettichlp/ucutils/listener/impl/CarListener.java index 9a85f595..c710e319 100644 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/CarListener.java +++ b/src/main/java/de/rettichlp/ucutils/listener/impl/CarListener.java @@ -17,6 +17,8 @@ import static de.rettichlp.ucutils.UCUtils.configuration; import static de.rettichlp.ucutils.UCUtils.renderService; import static de.rettichlp.ucutils.UCUtils.storage; +import static de.rettichlp.ucutils.UCUtils.utilService; +import static de.rettichlp.ucutils.common.services.CommandService.COMMAND_COOLDOWN_MILLIS; import static java.lang.Integer.parseInt; import static java.util.Optional.ofNullable; import static java.util.regex.Pattern.compile; @@ -25,6 +27,7 @@ @UCUtilsListener public class CarListener implements IEntityRenderListener, IMessageReceiveListener { + private static final Pattern CAR_CHECK_PATTERN = compile("^Das Fahrzeug mit dem Kennzeichen [A-Z0-9-]+ gehört (?:\\[UC])?(?[a-zA-Z0-9_]+)\\.$"); private static final Pattern CAR_UNLOCK_PATTERN = compile("^\\[Car] Du hast deinen .+ aufgeschlossen\\.$"); private static final Pattern CAR_LOCK_PATTERN = compile("^\\[Car] Du hast deinen .+ abgeschlossen\\.$"); private static final Pattern CAR_LOCKED_OWN_PATTERN = compile("^\\[Car] Dein Fahrzeug ist abgeschlossen\\.$"); @@ -45,6 +48,13 @@ public void onEntityRender(WorldRenderContext context) { @Override public boolean onMessageReceive(Text text, String message) { + Matcher carCheckMatcher = CAR_CHECK_PATTERN.matcher(message); + if (carCheckMatcher.find()) { + String playerName = carCheckMatcher.group("playerName"); + utilService.delayedAction(() -> commandService.sendCommand("memberinfo " + playerName), COMMAND_COOLDOWN_MILLIS); + return true; + } + Matcher carUnlockMatcher = CAR_UNLOCK_PATTERN.matcher(message); if (carUnlockMatcher.find()) { storage.setCarLocked(false); diff --git a/src/main/java/de/rettichlp/ucutils/listener/impl/faction/WantedListener.java b/src/main/java/de/rettichlp/ucutils/listener/impl/faction/WantedListener.java deleted file mode 100644 index c2391bc5..00000000 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/faction/WantedListener.java +++ /dev/null @@ -1,422 +0,0 @@ -package de.rettichlp.ucutils.listener.impl.faction; - -import de.rettichlp.ucutils.common.models.WantedEntry; -import de.rettichlp.ucutils.common.registry.UCUtilsListener; -import de.rettichlp.ucutils.listener.IMessageReceiveListener; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; - -import java.util.function.Predicate; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static de.rettichlp.ucutils.UCUtils.commandService; -import static de.rettichlp.ucutils.UCUtils.nameTagService; -import static de.rettichlp.ucutils.UCUtils.player; -import static de.rettichlp.ucutils.UCUtils.storage; -import static de.rettichlp.ucutils.UCUtils.utilService; -import static de.rettichlp.ucutils.common.services.CommandService.COMMAND_COOLDOWN_MILLIS; -import static java.lang.Integer.parseInt; -import static java.lang.String.valueOf; -import static java.util.regex.Pattern.compile; -import static net.minecraft.text.Text.empty; -import static net.minecraft.text.Text.of; -import static net.minecraft.util.Formatting.BLUE; -import static net.minecraft.util.Formatting.DARK_AQUA; -import static net.minecraft.util.Formatting.DARK_GRAY; -import static net.minecraft.util.Formatting.GOLD; -import static net.minecraft.util.Formatting.GRAY; -import static net.minecraft.util.Formatting.RED; - -@UCUtilsListener -public class WantedListener implements IMessageReceiveListener { - - private static final Pattern WANTED_GIVEN_POINTS_PATTERN = compile("^HQ: (?:\\[UC])?([a-zA-Z0-9_]+)'s momentanes WantedLevel: (\\d+)$"); - private static final Pattern WANTED_GIVEN_REASON_PATTERN = compile("^HQ: Gesuchter: (?:\\[UC])?(?[a-zA-Z0-9_]+)\\. Grund: (?.+)$"); - private static final Pattern WANTED_REASON_PATTERN = compile("^HQ: Fahndungsgrund: (?.+) \\| Fahndungszeit: (?