From 39fbee480a7cdea8ebcc7585e5dce60ccb8ca5d7 Mon Sep 17 00:00:00 2001 From: Fluboxer <36457056+Fluboxer@users.noreply.github.com> Date: Sat, 26 Apr 2025 04:13:10 +0300 Subject: Update chat cords parsing to support common "X Y Z" format (#1222) * Now it can parse X Y Z cords instead of X: Z: Y: cords only * while we are at it, why doesn't it tell you what it wants to add as waypoint before you agree to let it do so? * added another format, made it use translatable strings. Since I'm already here - adjusted Russian translation for waypoints * Made feedback message slightly less ugly by hiding "|" if no area is specified. Also made waypoint vanish within 6 blocks --- .../de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java | 9 +++++---- .../hysky/skyblocker/skyblock/waypoint/IndividualWaypoint.java | 9 +++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'src/main/java/de') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java index 031161a4..7daeb998 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatPositionShare.java @@ -27,11 +27,12 @@ import java.util.regex.Pattern; public class ChatPositionShare { private static final Logger LOGGER = LoggerFactory.getLogger(ChatPositionShare.class); - - private static final Pattern GENERIC_COORDS_PATTERN = Pattern.compile("x: (?-?[0-9]+), y: (?[0-9]+), z: (?-?[0-9]+)"); + private static final Pattern SIMPLE_COORDS_PATTERN = Pattern.compile("(?-?[0-9]+) (?[0-9]+) (?-?[0-9]+)"); + private static final Pattern SIMPLE_COMMA_COORDS_PATTERN = Pattern.compile("(?-?[0-9]+), (?[0-9]+), (?-?[0-9]+)"); + private static final Pattern GENERIC_COORDS_PATTERN = Pattern.compile("x: (?-?[0-9]+), y: (?[0-9]+), z: (?-?[0-9]+)"); private static final Pattern SKYBLOCKER_COORDS_PATTERN = Pattern.compile("x: (?-?[0-9]+), y: (?[0-9]+), z: (?-?[0-9]+)(?: \\| (?[^|]+))"); private static final Pattern SKYHANNI_DIANA_PATTERN = Pattern.compile("A MINOS INQUISITOR has spawned near \\[(?[^]]*)] at Coords (?-?[0-9]+) (?[0-9]+) (?-?[0-9]+)"); - private static final List PATTERNS = List.of(SKYBLOCKER_COORDS_PATTERN, SKYHANNI_DIANA_PATTERN, GENERIC_COORDS_PATTERN); + private static final List PATTERNS = List.of(SKYBLOCKER_COORDS_PATTERN, SKYHANNI_DIANA_PATTERN, GENERIC_COORDS_PATTERN, SIMPLE_COMMA_COORDS_PATTERN, SIMPLE_COORDS_PATTERN); @Init public static void init() { @@ -71,7 +72,7 @@ public class ChatPositionShare { private static void requestWaypoint(String x, String y, String z, @NotNull String area) { String command = "/skyblocker waypoints individual " + x + " " + y + " " + z + " " + area; - MutableText requestMessage = Constants.PREFIX.get().append(Text.translatable("skyblocker.config.chat.waypoints.display").formatted(Formatting.AQUA) + MutableText requestMessage = Constants.PREFIX.get().append(Text.translatable("skyblocker.config.chat.waypoints.display", x, y, z).formatted(Formatting.AQUA) .styled(style -> style .withHoverEvent(new HoverEvent.ShowText(Text.translatable("skyblocker.config.chat.waypoints.display"))) .withClickEvent(new ClickEvent.RunCommand(command.trim())) diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/IndividualWaypoint.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/IndividualWaypoint.java index b493c241..f214abc5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/IndividualWaypoint.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/IndividualWaypoint.java @@ -67,7 +67,12 @@ public class IndividualWaypoint extends NamedWaypoint { private static int setWaypoint(Consumer feedback, int x, int y, int z, String area) { setWaypoint(x, y, z, area); - feedback.accept(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.chat.waypoints.displayed", x, y, z, area))); + if (area != null && !area.isEmpty()) { + area = "| " + area; + feedback.accept(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.chat.waypoints.displayed", x, y, z, area))); + } else { + feedback.accept(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.chat.waypoints.displayed", x, y, z, ""))); + } return Command.SINGLE_SUCCESS; } @@ -86,7 +91,7 @@ public class IndividualWaypoint extends NamedWaypoint { } private static void onTick(MinecraftClient client) { - if (waypoint != null && client.player != null && client.player.squaredDistanceTo(waypoint.centerPos) <= 8) { + if (waypoint != null && client.player != null && client.player.squaredDistanceTo(waypoint.centerPos) <= 36) { waypoint = null; } } -- cgit