From 46c589a7c24913ddc722ff697f6672bdac7f17ef Mon Sep 17 00:00:00 2001 From: RettichLP Date: Sun, 26 Apr 2026 13:59:28 +0200 Subject: [PATCH] feat: add support for handling "Car Find" message to send navigation command based on coordinates --- .../ucutils/listener/impl/CarListener.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 b4b59058..8c0d54c8 100644 --- a/src/main/java/de/rettichlp/ucutils/listener/impl/CarListener.java +++ b/src/main/java/de/rettichlp/ucutils/listener/impl/CarListener.java @@ -26,6 +26,7 @@ import static de.rettichlp.ucutils.UCUtils.renderService; import static de.rettichlp.ucutils.UCUtils.storage; import static de.rettichlp.ucutils.UCUtils.utilService; +import static java.lang.Integer.parseInt; import static java.util.Objects.nonNull; import static java.util.Optional.ofNullable; import static java.util.regex.Pattern.compile; @@ -39,6 +40,7 @@ public class CarListener 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\\.$"); + private static final Pattern CAR_FIND_PATTERN = compile("^\\[Car] Das Fahrzeug befindet sich bei ยป X: (?\\d+) \\| Y: (?\\d+) \\| Z: (?\\d+)$"); @Override public void onEnterVehicle(Entity vehicle) { @@ -66,7 +68,7 @@ public void onEntityRender(WorldRenderContext context) { VertexConsumerProvider vertexConsumers = context.consumers(); ClientWorld world = MinecraftClient.getInstance().world; - if (nonNull(matrices) && nonNull(vertexConsumers) && nonNull(world) && configuration.getOptions().car().highlight()) { + if (world != null && configuration.getOptions().car().highlight()) { ofNullable(storage.getMinecartEntityToHighlight()) .map(minecartEntity -> world.getEntityById(minecartEntity.getId())) .ifPresent(minecartEntity -> renderService.renderTextAboveEntity(matrices, vertexConsumers, minecartEntity, Text.of("๐Ÿš—").copy().formatted(AQUA), 0.05F)); @@ -93,6 +95,15 @@ public boolean onMessageReceive(Text text, String message) { return true; } + Matcher carFindMatcher = CAR_FIND_PATTERN.matcher(message); + if (carFindMatcher.find()) { + int x = parseInt(carFindMatcher.group("x")); + int y = parseInt(carFindMatcher.group("y")); + int z = parseInt(carFindMatcher.group("z")); + commandService.sendCommand("navi " + x + "/" + y + "/" + z); + return true; + } + return true; }