11package io.github.dockyardmc.scroll
22
3- import io.github.dockyardmc.scroll.extensions.put
43import kotlinx.serialization.ExperimentalSerializationApi
54import kotlinx.serialization.SerialName
65import kotlinx.serialization.Serializable
76import kotlinx.serialization.Transient
87import kotlinx.serialization.json.JsonClassDiscriminator
9- import org.jglrxavpok.hephaistos.nbt.NBT
10- import org.jglrxavpok.hephaistos.nbt.NBTCompound
8+ import net.kyori.adventure.nbt.CompoundBinaryTag
119
1210@Suppress(" MemberVisibilityCanBePrivate" )
1311@OptIn(ExperimentalSerializationApi ::class )
@@ -19,136 +17,128 @@ sealed class ClickEvent {
1917 * @throws MissingFieldException if there's a field missing
2018 * @throws UnsupportedOperationException if `action` is not supported
2119 */
22- fun fromNbt (nbt : NBTCompound ): ClickEvent {
20+ fun fromNbt (nbt : CompoundBinaryTag ): ClickEvent {
21+ // Implementation would need to be updated for the adventure-nbt library
22+ // This is a placeholder for the conversion logic
2323 return when (val action = nbt.getString(" action" )) {
24- " open_url" -> OpenUrl (nbt.getString(" url" ) ? : throw MissingFieldException (" url" ))
25- " open_file" -> OpenFile (nbt.getString(" path" ) ? : throw MissingFieldException (" path" ))
26- " run_command" -> RunCommand (nbt.getString(" command" ) ? : throw MissingFieldException (" command" ))
27- " suggest_command" -> SuggestCommand (nbt.getString(" command" ) ? : throw MissingFieldException (" command" ))
28- " change_page" -> ChangePage (nbt.getInt(" page" ) ? : throw MissingFieldException (" page" ))
29- " copy_to_clipboard" -> CopyToClipboard (nbt.getString(" value" ) ? : throw MissingFieldException (" value" ))
30- " show_dialog" -> ShowDialog (nbt.getString(" dialog" ) ? : throw MissingFieldException (" dialog" ))
31- " custom" -> Custom (
32- nbt.getString(" id" ) ? : throw MissingFieldException (" id" ),
33- nbt.getString(" payload" ) ? : throw MissingFieldException (" payload" )
34- )
35-
36- null -> throw MissingFieldException (" action" )
37- else -> throw UnsupportedOperationException (" unknown `action`: `$action `" )
24+ " open_url" -> OpenUrl (nbt.getString(" url" ))
25+ " open_file" -> OpenFile (nbt.getString(" path" ))
26+ " run_command" -> RunCommand (nbt.getString(" command" ))
27+ " suggest_command" -> SuggestCommand (nbt.getString(" command" ))
28+ " change_page" -> ChangePage (nbt.getInt(" page" ))
29+ " copy_to_clipboard" -> CopyToClipboard (nbt.getString(" value" ))
30+ " show_dialog" -> ShowDialog (nbt.getString(" dialog" ))
31+ " custom" -> Custom (nbt.getString(" id" ), nbt.getString(" payload" ))
32+ else -> throw UnsupportedOperationException (" ClickEvent action '$action ' is not supported" )
3833 }
3934 }
35+
4036 }
4137
4238 abstract val action: String
4339
44- open fun getNbt (): NBTCompound {
45- return NBT . Compound { builder ->
46- builder.put (" action" , action)
47- }
40+ open fun getNbt (): CompoundBinaryTag {
41+ return CompoundBinaryTag . builder()
42+ .putString (" action" , action)
43+ .build()
4844 }
4945
46+
5047 @Serializable
5148 @SerialName(" open_url" )
5249 class OpenUrl (val url : String ) : ClickEvent() {
5350 @Transient
5451 override val action: String = " open_url"
5552
56- override fun getNbt (): NBTCompound {
57- return super .getNbt().kmodify {
58- put(" url" , url)
59- }
53+ override fun getNbt (): CompoundBinaryTag {
54+ return super .getNbt().putString(" url" , url)
6055 }
6156 }
6257
58+
6359 @Serializable
6460 @SerialName(" open_file" )
6561 class OpenFile (val path : String ) : ClickEvent() {
6662 @Transient
6763 override val action: String = " open_file"
6864
69- override fun getNbt (): NBTCompound {
70- return super .getNbt().kmodify {
71- put(" path" , path)
72- }
65+ override fun getNbt (): CompoundBinaryTag {
66+ return super .getNbt().putString(" path" , path)
7367 }
7468 }
7569
70+
7671 @Serializable
7772 @SerialName(" run_command" )
7873 class RunCommand (val command : String ) : ClickEvent() {
7974 @Transient
8075 override val action: String = " run_command"
8176
82- override fun getNbt (): NBTCompound {
83- return super .getNbt().kmodify {
84- put(" command" , command)
85- }
77+ override fun getNbt (): CompoundBinaryTag {
78+ return super .getNbt().putString(" command" , command)
8679 }
8780 }
8881
82+
8983 @Serializable
9084 @SerialName(" suggest_command" )
9185 class SuggestCommand (val command : String ) : ClickEvent() {
9286 @Transient
9387 override val action: String = " suggest_command"
9488
95- override fun getNbt (): NBTCompound {
96- return super .getNbt().kmodify {
97- put(" command" , command)
98- }
89+ override fun getNbt (): CompoundBinaryTag {
90+ return super .getNbt().putString(" command" , command)
9991 }
10092 }
10193
94+
10295 @Serializable
10396 @SerialName(" change_page" )
10497 class ChangePage (val page : Int ) : ClickEvent() {
10598 @Transient
10699 override val action: String = " change_page"
107100
108- override fun getNbt (): NBTCompound {
109- return super .getNbt().kmodify {
110- put(" page" , page)
111- }
101+ override fun getNbt (): CompoundBinaryTag {
102+ return super .getNbt().putInt(" page" , page)
112103 }
113104 }
114105
106+
115107 @Serializable
116108 @SerialName(" copy_to_clipboard" )
117109 class CopyToClipboard (val value : String ) : ClickEvent() {
118110 @Transient
119111 override val action: String = " copy_to_clipboard"
120112
121- override fun getNbt (): NBTCompound {
122- return super .getNbt().kmodify {
123- put(" value" , value)
124- }
113+ override fun getNbt (): CompoundBinaryTag {
114+ return super .getNbt().putString(" value" , value)
125115 }
126116 }
127117
118+
128119 @Serializable
129120 @SerialName(" show_dialog" )
130121 class ShowDialog (val dialog : String ) : ClickEvent() {
131122 @Transient
132123 override val action: String = " show_dialog"
133124
134- override fun getNbt (): NBTCompound {
135- return super .getNbt().kmodify {
136- put(" dialog" , dialog)
137- }
125+ override fun getNbt (): CompoundBinaryTag {
126+ return super .getNbt().putString(" dialog" , dialog)
138127 }
139128 }
140129
130+
141131 @Serializable
142132 @SerialName(" custom" )
143133 class Custom (val id : String , val payload : String ) : ClickEvent() {
144134 @Transient
145135 override val action: String = " custom"
146136
147- override fun getNbt (): NBTCompound {
148- return super .getNbt().kmodify {
149- put(" id" , id)
150- put(" payload" , payload)
151- }
137+ override fun getNbt (): CompoundBinaryTag {
138+ return super .getNbt()
139+ .putString(" id" , id)
140+ .putString(" payload" , payload)
152141 }
153142 }
143+
154144}
0 commit comments