Skip to content

Commit 30a1ed4

Browse files
authored
feat: add methods for appending player heads and sprites in SurfCompo… (#282)
2 parents a9405ad + 42d759e commit 30a1ed4

3 files changed

Lines changed: 91 additions & 1 deletion

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=25
88
mcVersion=1.21.11
99
group=dev.slne.surf
10-
version=1.21.11-2.76.0
10+
version=1.21.11-2.77.0
1111
relocationPrefix=dev.slne.surf.surfapi.libs
1212
snapshot=false

surf-api-core/surf-api-core-api/api/surf-api-core-api.api

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7156,8 +7156,15 @@ public abstract interface class dev/slne/surf/surfapi/core/api/messages/builder/
71567156
public abstract fun appendNewline ()Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71577157
public fun appendNewline (Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71587158
public fun appendNewlineAsync (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
7159+
public fun appendPlayerHead (Ljava/lang/String;Z)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7160+
public fun appendPlayerHead (Ljava/util/UUID;Z)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7161+
public fun appendPlayerHead (Lnet/kyori/adventure/text/object/PlayerHeadObjectContents$SkinSource;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7162+
public static synthetic fun appendPlayerHead$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/String;ZILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7163+
public static synthetic fun appendPlayerHead$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/util/UUID;ZILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71597164
public fun appendPrefix ()Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71607165
public abstract fun appendSpace ()Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7166+
public fun appendSprite (Lnet/kyori/adventure/key/Key;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7167+
public fun appendSprite (Lnet/kyori/adventure/key/Key;Lnet/kyori/adventure/key/Key;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71617168
public fun appendTime-gRj5Bb8 (JZZLnet/kyori/adventure/text/Component;Lnet/kyori/adventure/text/format/TextColor;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71627169
public static synthetic fun appendTime-gRj5Bb8$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;JZZLnet/kyori/adventure/text/Component;Lnet/kyori/adventure/text/format/TextColor;ILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71637170
public abstract fun applicableApply (Lnet/kyori/adventure/text/ComponentBuilderApplicable;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
@@ -7178,6 +7185,7 @@ public abstract interface class dev/slne/surf/surfapi/core/api/messages/builder/
71787185
public fun ellipsis (Lnet/kyori/adventure/text/format/TextColor;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71797186
public static synthetic fun ellipsis$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lnet/kyori/adventure/text/format/TextColor;ILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71807187
public abstract fun font (Lnet/kyori/adventure/key/Key;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7188+
public fun hoverEvent (Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71817189
public abstract fun hoverEvent (Lnet/kyori/adventure/text/event/HoverEventSource;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71827190
public abstract fun insertion (Ljava/lang/String;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
71837191
public abstract fun mapChildren (Ljava/util/function/Function;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
@@ -7239,7 +7247,14 @@ public final class dev/slne/surf/surfapi/core/api/messages/builder/SurfComponent
72397247
public static fun appendNewWarningPrefixedLineAsync (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
72407248
public static fun appendNewline (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
72417249
public static fun appendNewlineAsync (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
7250+
public static fun appendPlayerHead (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/String;Z)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7251+
public static fun appendPlayerHead (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/util/UUID;Z)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7252+
public static fun appendPlayerHead (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lnet/kyori/adventure/text/object/PlayerHeadObjectContents$SkinSource;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7253+
public static synthetic fun appendPlayerHead$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/String;ZILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7254+
public static synthetic fun appendPlayerHead$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/util/UUID;ZILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
72427255
public static fun appendPrefix (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7256+
public static fun appendSprite (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lnet/kyori/adventure/key/Key;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7257+
public static fun appendSprite (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lnet/kyori/adventure/key/Key;Lnet/kyori/adventure/key/Key;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
72437258
public static fun appendSuccessPrefix (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
72447259
public static fun appendTime-gRj5Bb8 (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;JZZLnet/kyori/adventure/text/Component;Lnet/kyori/adventure/text/format/TextColor;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
72457260
public static synthetic fun appendTime-gRj5Bb8$default (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;JZZLnet/kyori/adventure/text/Component;Lnet/kyori/adventure/text/format/TextColor;ILjava/lang/Object;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
@@ -7306,6 +7321,7 @@ public final class dev/slne/surf/surfapi/core/api/messages/builder/SurfComponent
73067321
public static fun green (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/Number;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
73077322
public static fun green (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/String;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
73087323
public static fun green (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Z[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
7324+
public static fun hoverEvent (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
73097325
public static fun info (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;C[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
73107326
public static fun info (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/Number;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;
73117327
public static fun info (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;Ljava/lang/String;[Lnet/kyori/adventure/text/format/TextDecoration;)Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;

surf-api-core/surf-api-core-api/src/main/kotlin/dev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder.kt

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,16 @@ import dev.slne.surf.surfapi.core.api.messages.CommonComponents.TIME_SEPARATOR
1111
import net.kyori.adventure.key.Key
1212
import net.kyori.adventure.text.*
1313
import net.kyori.adventure.text.event.ClickEvent
14+
import net.kyori.adventure.text.event.HoverEvent
1415
import net.kyori.adventure.text.event.HoverEventSource
1516
import net.kyori.adventure.text.format.Style
1617
import net.kyori.adventure.text.format.TextColor
1718
import net.kyori.adventure.text.format.TextDecoration
19+
import net.kyori.adventure.text.`object`.ObjectContents
20+
import net.kyori.adventure.text.`object`.PlayerHeadObjectContents
1821
import net.kyori.adventure.util.ARGBLike
1922
import org.jetbrains.annotations.ApiStatus
23+
import java.util.*
2024
import java.util.function.Consumer
2125
import java.util.function.Function
2226
import kotlin.time.Duration
@@ -80,12 +84,82 @@ interface SurfComponentBuilder : TextComponent.Builder, ComponentBuilderColors {
8084
fun note(any: Any, vararg decoration: TextDecoration) = text(any.toString(), NOTE, *decoration)
8185

8286
fun ellipsis(color: TextColor? = SPACER) = append(CommonComponents.ELLIPSIS.color(color))
87+
88+
/**
89+
* Applies a translatable component with the given key and optional color and decorations.
90+
*
91+
* @param key The translation key
92+
* @param color Optional text color for the translatable component
93+
* @param decoration Optional text decorations for the translatable component
94+
*/
8395
fun translatable(
8496
key: String,
8597
color: TextColor? = Colors.WHITE,
8698
vararg decoration: TextDecoration
8799
) = append(Component.translatable(key, color, *decoration))
88100

101+
/**
102+
* Appends a player head component
103+
*
104+
* @param username The player's username
105+
* @param outerLayer Whether to show the outer layer of the skin (default: true)
106+
*/
107+
fun appendPlayerHead(username: String, outerLayer: Boolean = true) =
108+
append(
109+
Component.`object`(
110+
ObjectContents.playerHead(username).toBuilder().hat(outerLayer).build()
111+
)
112+
)
113+
114+
/**
115+
* Appends a player head component
116+
*
117+
* @param uuid The player's UUID
118+
* @param outerLayer Whether to show the outer layer of the skin (default: true)
119+
*/
120+
fun appendPlayerHead(uuid: UUID, outerLayer: Boolean = true) =
121+
append(
122+
Component.`object`(
123+
ObjectContents.playerHead(uuid).toBuilder().hat(outerLayer).build()
124+
)
125+
)
126+
127+
/**
128+
* Appends a player head component
129+
*
130+
* @param source The skin source for the player head
131+
*/
132+
fun appendPlayerHead(source: PlayerHeadObjectContents.SkinSource) =
133+
append(Component.`object`(ObjectContents.playerHead(source)))
134+
135+
/**
136+
* Appends a sprite component from the specified atlas and sprite name
137+
*
138+
* @param atlas The name of the atlas as a key
139+
* @param sprite The name of the sprite as a key
140+
*
141+
* eg. appendSprite(key("blocks"), key("block/stone")), appendSprite(key("minecraft:items"), key("item/porkchop"))
142+
*/
143+
fun appendSprite(atlas: Key, sprite: Key) =
144+
append(Component.`object`(ObjectContents.sprite(atlas, sprite)))
145+
146+
/**
147+
* Appends a sprite component from the specified atlas and sprite name
148+
*
149+
* @param sprite The name of the sprite, using the default atlas (minecraft:sprite)
150+
*/
151+
fun appendSprite(sprite: Key) =
152+
append(Component.`object`(ObjectContents.sprite(sprite)))
153+
154+
/**
155+
* Applies a hover event with the given content built by the provided block
156+
* The block allows for building a complex component to be shown on hover using the same builder DSL.
157+
*
158+
* @param block A lambda with receiver that builds the hover event content using the same SurfComponentBuilder DSL
159+
*/
160+
fun hoverEvent(block: SurfComponentBuilder.() -> Unit) =
161+
hoverEvent(HoverEvent.showText(SurfComponentBuilder(block)))
162+
89163
fun appendDiscordLink() = append(DISCORD_LINK)
90164
fun appendDisconnectHeader() = append(DISCONNECT_HEADER)
91165
fun appendDisconnectFooterTryAgainLater(issue: Boolean) = append(

0 commit comments

Comments
 (0)