diff --git a/surf-api-core/surf-api-core/api/surf-api-core.api b/surf-api-core/surf-api-core/api/surf-api-core.api index 53872fe0..f1aa3389 100644 --- a/surf-api-core/surf-api-core/api/surf-api-core.api +++ b/surf-api-core/surf-api-core/api/surf-api-core.api @@ -7691,6 +7691,8 @@ public abstract interface class dev/slne/surf/api/core/messages/builder/SurfComp public abstract fun build ()Lnet/kyori/adventure/text/TextComponent; public static fun builder ()Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public abstract fun children ()Ljava/util/List; + public fun clickCallback (Lnet/kyori/adventure/text/event/ClickCallback;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; + public fun clickCallbackWithOptions (Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public fun clickCopiesToClipboard (Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public abstract fun clickEvent (Lnet/kyori/adventure/text/event/ClickEvent;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public fun clickOpensUrl (Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; @@ -7793,6 +7795,8 @@ public final class dev/slne/surf/api/core/messages/builder/SurfComponentBuilder$ public static fun blue (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/Number;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public static fun blue (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public static fun blue (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Z[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; + public static fun clickCallback (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Lnet/kyori/adventure/text/event/ClickCallback;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; + public static fun clickCallbackWithOptions (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public static fun clickCopiesToClipboard (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public static fun clickOpensUrl (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; public static fun clickRunsCommand (Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder;Ljava/lang/String;)Ldev/slne/surf/api/core/messages/builder/SurfComponentBuilder; diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/adventure/callback-extension.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/adventure/callback-extension.kt index dbad1a96..6239356c 100644 --- a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/adventure/callback-extension.kt +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/adventure/callback-extension.kt @@ -24,7 +24,7 @@ inline fun > Com @OptIn(ExperimentalTypeInference::class) inline fun > ComponentBuilder.clickCallbackTypedWithOptions( - @BuilderInference builder: ClickCallbackWithOptionsBuilder.() -> Unit + builder: ClickCallbackWithOptionsBuilder.() -> Unit ) = clickEvent(ClickCallbackWithOptionsBuilder(T::class.java).apply(builder).build()) fun ClickCallback.Options.Builder.lifetime(duration: Duration) = lifetime(duration.toJavaDuration()) diff --git a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/builder/SurfComponentBuilder.kt b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/builder/SurfComponentBuilder.kt index 06a4c17d..37f198a8 100644 --- a/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/builder/SurfComponentBuilder.kt +++ b/surf-api-core/surf-api-core/src/main/kotlin/dev/slne/surf/api/core/messages/builder/SurfComponentBuilder.kt @@ -8,8 +8,11 @@ import dev.slne.surf.api.core.messages.Colors.Companion.VARIABLE_VALUE import dev.slne.surf.api.core.messages.CommonComponents.DISCONNECT_HEADER import dev.slne.surf.api.core.messages.CommonComponents.DISCORD_LINK import dev.slne.surf.api.core.messages.CommonComponents.TIME_SEPARATOR +import dev.slne.surf.api.core.messages.adventure.ClickCallbackWithOptionsBuilder +import net.kyori.adventure.audience.Audience import net.kyori.adventure.key.Key import net.kyori.adventure.text.* +import net.kyori.adventure.text.event.ClickCallback import net.kyori.adventure.text.event.ClickEvent import net.kyori.adventure.text.event.HoverEventSource import net.kyori.adventure.text.format.Style @@ -165,7 +168,14 @@ interface SurfComponentBuilder : ComponentBuilderColors, ComponentLike { fun applicableApply(applicable: ComponentBuilderApplicable): SurfComponentBuilder fun apply(consumer: Consumer>): SurfComponentBuilder fun applyDeep(action: Consumer>): SurfComponentBuilder + fun clickEvent(event: ClickEvent<*>?): SurfComponentBuilder + + fun clickCallback(callback: ClickCallback) = clickEvent(ClickEvent.callback(callback)) + fun clickCallbackWithOptions( + builder: ClickCallbackWithOptionsBuilder.() -> Unit, + ) = clickEvent(ClickCallbackWithOptionsBuilder(Audience::class.java).apply(builder).build()) + fun color(color: TextColor?): SurfComponentBuilder fun colorIfAbsent(color: TextColor?): SurfComponentBuilder fun decorate(decoration: TextDecoration): SurfComponentBuilder @@ -203,3 +213,11 @@ interface SurfComponentBuilder : ComponentBuilderColors, ComponentLike { fun shadowColor(argb: ARGBLike?): SurfComponentBuilder fun shadowColorIfAbsent(argb: ARGBLike?): SurfComponentBuilder } + +inline fun SurfComponentBuilder.clickCallbackTypedWithOptions( + builder: ClickCallbackWithOptionsBuilder.() -> Unit +) = clickEvent(ClickCallbackWithOptionsBuilder(T::class.java).apply(builder).build()) + +inline fun SurfComponentBuilder.clickCallbackTyped( + callback: ClickCallback, +) = clickEvent(ClickEvent.callback(ClickCallback.widen(callback, T::class.java)))