From 6258f52f353987d93e7414f1181ba2cb0705493b Mon Sep 17 00:00:00 2001 From: shitzuu Date: Fri, 16 Aug 2024 18:27:22 +0200 Subject: [PATCH] Use more efficient implementation of iridium colors; Add support for using adventure along with iridium coloring --- .idea/icon.svg | 2555 +++++++++++++++++ .idea/uiDesigner.xml | 124 + .../src/main/kotlin/honey-publish.gradle.kts | 2 +- gradle/libs.versions.toml | 14 +- honey-iridium/build.gradle.kts | 3 +- .../honey/iridium/IridiumMessageCompiler.java | 17 +- .../IridiumMessageCompilerFactory.java | 13 +- .../adventure/AdventureIridiumHoney.java | 30 + .../adventure/AdventureIridiumHoneyImpl.java | 19 + 9 files changed, 2764 insertions(+), 13 deletions(-) create mode 100644 .idea/icon.svg create mode 100644 .idea/uiDesigner.xml create mode 100644 honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoney.java create mode 100644 honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoneyImpl.java diff --git a/.idea/icon.svg b/.idea/icon.svg new file mode 100644 index 0000000..7bfbc0f --- /dev/null +++ b/.idea/icon.svg @@ -0,0 +1,2555 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/honey-publish.gradle.kts b/buildSrc/src/main/kotlin/honey-publish.gradle.kts index cda9540..29f40d9 100644 --- a/buildSrc/src/main/kotlin/honey-publish.gradle.kts +++ b/buildSrc/src/main/kotlin/honey-publish.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "dev.shiza" -version = "1.0.0-SNAPSHOT" +version = "1.0.1-SNAPSHOT" java { withSourcesJar() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3d90ede..7af30c1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,12 +2,20 @@ honey = "1.0.0" apache-commons-lang3 = "3.16.0" allegro-opel = "1.1.14" -iridium = "1.1.0" +iridium = "2.0.0" parboiled = "1.4.1" +adventure = "4.17.0" [libraries] honey = { module = "dev.shiza:honey", version.ref = "honey" } opel = { module = "pl.allegro.tech:opel", version.ref = "allegro-opel" } lang = { module = "org.apache.commons:commons-lang3", version.ref = "apache-commons-lang3" } -iridium = { module = "com.iridium:IridiumColorAPI", version.ref = "iridium" } -parboiled = { module = "org.parboiled:parboiled-java", version.ref = "parboiled" } \ No newline at end of file +iridium-colors = { module = "com.iridium:iridium-colors", version.ref = "iridium" } +iridium-colors-adventure = { module = "com.iridium:iridium-colors-adventure", version.ref = "iridium" } +parboiled = { module = "org.parboiled:parboiled-java", version.ref = "parboiled" } +adventure-api = { module = "net.kyori:adventure-api", version.ref = "adventure" } +adventure-minimessage = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure" } + +[bundles] +iridium = ["iridium-colors", "iridium-colors-adventure"] +adventure = ["adventure-api", "adventure-minimessage"] \ No newline at end of file diff --git a/honey-iridium/build.gradle.kts b/honey-iridium/build.gradle.kts index 764bae8..05e28c7 100644 --- a/honey-iridium/build.gradle.kts +++ b/honey-iridium/build.gradle.kts @@ -5,8 +5,9 @@ plugins { } dependencies { + api(libs.bundles.iridium) compileOnly(libs.honey) - api(libs.iridium) + compileOnly(libs.bundles.adventure) } honeyPublish { diff --git a/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompiler.java b/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompiler.java index 3279565..1dad661 100644 --- a/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompiler.java +++ b/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompiler.java @@ -1,22 +1,25 @@ package dev.shiza.honey.iridium; -import static com.iridium.iridiumcolorapi.IridiumColorAPI.process; -import static com.iridium.iridiumcolorapi.IridiumColorAPI.stripColorFormatting; +import static com.iridium.colors.IridiumColors.process; +import static com.iridium.colors.IridiumColors.stripColorFormatting; import dev.shiza.honey.message.MessageCompiler; import dev.shiza.honey.placeholder.sanitizer.SanitizedPlaceholder; import java.util.List; +import java.util.function.Function; -class IridiumMessageCompiler implements MessageCompiler { +class IridiumMessageCompiler implements MessageCompiler { private static final char TAG_RESOLVER_INIT = '<'; private static final char TAG_RESOLVER_STOP = '>'; + private final Function transformation; - IridiumMessageCompiler() {} + IridiumMessageCompiler(final Function transformation) { + this.transformation = transformation; + } @Override - public String compile( - final String sanitizedContent, final List placeholders) { + public T compile(final String sanitizedContent, final List placeholders) { String processedContent = sanitizedContent; for (final SanitizedPlaceholder placeholder : placeholders) { final String evaluatedValue = placeholder.evaluatedValue().toString(); @@ -25,7 +28,7 @@ public String compile( processedContent.replace(getResolvableTag(placeholder.key()), sanitizedValue); processedContent = process(processedContent); } - return processedContent; + return transformation.apply(processedContent); } private String getResolvableTag(final String key) { diff --git a/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompilerFactory.java b/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompilerFactory.java index 9666939..763efff 100644 --- a/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompilerFactory.java +++ b/honey-iridium/src/dev/shiza/honey/iridium/IridiumMessageCompilerFactory.java @@ -1,12 +1,23 @@ package dev.shiza.honey.iridium; +import static java.util.function.Function.identity; + import dev.shiza.honey.message.MessageCompiler; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.IridiumComponentSerializer; public final class IridiumMessageCompilerFactory { + private static final IridiumComponentSerializer COMPONENT_SERIALIZER = + IridiumComponentSerializer.create(); + private IridiumMessageCompilerFactory() {} public static MessageCompiler create() { - return new IridiumMessageCompiler(); + return new IridiumMessageCompiler<>(identity()); + } + + public static MessageCompiler createAdventure() { + return new IridiumMessageCompiler<>(COMPONENT_SERIALIZER::deserialize); } } diff --git a/honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoney.java b/honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoney.java new file mode 100644 index 0000000..cf9ca5a --- /dev/null +++ b/honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoney.java @@ -0,0 +1,30 @@ +package dev.shiza.honey.iridium.adventure; + +import dev.shiza.honey.Honey; +import dev.shiza.honey.iridium.IridiumMessageCompilerFactory; +import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; +import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; +import dev.shiza.honey.placeholder.sanitizer.PlaceholderSanitizer; +import dev.shiza.honey.reflection.ReflectivePlaceholderEvaluatorFactory; +import net.kyori.adventure.text.Component; + +public interface AdventureIridiumHoney extends Honey { + + static AdventureIridiumHoney createReflective() { + return create( + IridiumMessageCompilerFactory.createAdventure(), + PlaceholderResolver.create(), + PlaceholderSanitizer.create(), + ReflectivePlaceholderEvaluatorFactory.create()); + } + + private static AdventureIridiumHoney create( + final MessageCompiler messageCompiler, + final PlaceholderResolver placeholderResolver, + final PlaceholderSanitizer placeholderSanitizer, + final PlaceholderEvaluator placeholderEvaluator) { + return new AdventureIridiumHoneyImpl( + messageCompiler, placeholderResolver, placeholderSanitizer, placeholderEvaluator); + } +} diff --git a/honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoneyImpl.java b/honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoneyImpl.java new file mode 100644 index 0000000..0ac8c3d --- /dev/null +++ b/honey-iridium/src/dev/shiza/honey/iridium/adventure/AdventureIridiumHoneyImpl.java @@ -0,0 +1,19 @@ +package dev.shiza.honey.iridium.adventure; + +import dev.shiza.honey.HoneyImpl; +import dev.shiza.honey.message.MessageCompiler; +import dev.shiza.honey.placeholder.evaluator.PlaceholderEvaluator; +import dev.shiza.honey.placeholder.resolver.PlaceholderResolver; +import dev.shiza.honey.placeholder.sanitizer.PlaceholderSanitizer; +import net.kyori.adventure.text.Component; + +class AdventureIridiumHoneyImpl extends HoneyImpl implements AdventureIridiumHoney { + + AdventureIridiumHoneyImpl( + final MessageCompiler messageCompiler, + final PlaceholderResolver placeholderResolver, + final PlaceholderSanitizer placeholderSanitizer, + final PlaceholderEvaluator placeholderEvaluator) { + super(messageCompiler, placeholderResolver, placeholderSanitizer, placeholderEvaluator); + } +}