From 82c8862436d66d1becd142ee37d2459f391252de Mon Sep 17 00:00:00 2001 From: Martin Date: Wed, 8 May 2024 19:06:52 +0200 Subject: [PATCH] Add AdventureUrlPostProcessor --- .../adventure/AdventureUrlPostProcessor.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureUrlPostProcessor.java diff --git a/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureUrlPostProcessor.java b/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureUrlPostProcessor.java new file mode 100644 index 0000000..cf13f60 --- /dev/null +++ b/eternalcode-commons-adventure/src/main/java/com/eternalcode/commons/adventure/AdventureUrlPostProcessor.java @@ -0,0 +1,23 @@ +package com.eternalcode.commons.adventure; + +import java.util.function.UnaryOperator; +import java.util.regex.Pattern; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextReplacementConfig; +import net.kyori.adventure.text.event.ClickEvent; +import org.jetbrains.annotations.NotNull; + +public class AdventureUrlPostProcessor implements UnaryOperator { + + private static final Pattern URL_PATTERN = Pattern.compile("https?://(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()!@:%_+.~#?&/=]*)"); + + public static final @NotNull TextReplacementConfig CLICKABLE_URL_CONFIG = TextReplacementConfig.builder() + .match(URL_PATTERN) + .replacement(url -> url.clickEvent(ClickEvent.openUrl(url.content()))) + .build(); + + @Override + public Component apply(Component component) { + return component.replaceText(CLICKABLE_URL_CONFIG); + } +}