From b65fcdb1c7b239a2b4d540a1e2cfd2308de94638 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 20 Jun 2025 22:34:22 +0200 Subject: [PATCH] Update URL detection and formatting logic in Utility Enhanced `DEFAULT_URL_PATTERN` for improved URL detection and added `formatUrl` method to ensure URLs include a valid scheme. Adjusted `formatText` to use clickable and underlined URLs in the configured format. Removed unused imports and cleaned up comments. --- .../java/com/alttd/chat/util/Utility.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/api/src/main/java/com/alttd/chat/util/Utility.java b/api/src/main/java/com/alttd/chat/util/Utility.java index 3843979..89d410e 100755 --- a/api/src/main/java/com/alttd/chat/util/Utility.java +++ b/api/src/main/java/com/alttd/chat/util/Utility.java @@ -12,7 +12,6 @@ import net.luckperms.api.LuckPerms; import net.luckperms.api.model.group.Group; import net.luckperms.api.model.user.User; import net.luckperms.api.node.Node; -import org.bukkit.permissions.Permission; import java.util.*; import java.util.regex.Matcher; @@ -22,7 +21,7 @@ import java.util.stream.Collectors; public class Utility { private static final List EMPTY_LIST = new ArrayList<>(); - static final Pattern DEFAULT_URL_PATTERN = Pattern.compile("(?:(https?)://)?([-\\w_.]+\\.\\w{2,})(/\\S*)?"); + static final Pattern DEFAULT_URL_PATTERN = Pattern.compile("(https?://)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)"); static final Pattern URL_SCHEME_PATTERN = Pattern.compile("^[a-z][a-z0-9+\\-.]*:"); private static MiniMessage miniMessage = null; @@ -292,30 +291,25 @@ public class Utility { } public static String formatText(String message) { - /* - .match(pattern) - .replacement(url -> { - String clickUrl = url.content(); - if (!URL_SCHEME_PATTERN.matcher(clickUrl).find()) { - clickUrl = "http://" + clickUrl; - } - return (style == null ? url : url.style(style)).clickEvent(ClickEvent.openUrl(clickUrl)); - }) - .build(); - */ Matcher matcher = DEFAULT_URL_PATTERN.matcher(message); while (matcher.find()) { String url = matcher.group(); - String clickUrl = url; + String displayUrl = url; String urlFormat = Config.URLFORMAT; -// if (!URL_SCHEME_PATTERN.matcher(clickUrl).find()) { -// clickUrl = "http://" + clickUrl; -// } - message = message.replace(url, urlFormat.replaceAll("", url).replaceAll("", clickUrl)); + message = message.replace(url, urlFormat + .replaceAll("", "" + displayUrl + "") + .replaceAll("", formatUrl(url))); } return message; } + private static String formatUrl(String url) { + if (url.startsWith("http://") || url.startsWith("https://")) { + return url; + } + return "https://" + url; + } + public static Component parseMiniMessage(String message) { return getMiniMessage().deserialize(message); }