Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 8e7a8d1

Browse files
committed
fix shadow_color not being IntArray but hex string
1 parent d40b652 commit 8e7a8d1

File tree

8 files changed

+24
-7
lines changed

8 files changed

+24
-7
lines changed

src/main/kotlin/io/github/dockyardmc/scroll/Component.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ open class Component(
1414
var translate: String? = null,
1515
var color: String? = null,
1616
@SerialName("shadow_color")
17-
var shadowColor: String? = null,
17+
var shadowColor: List<Int>? = null,
1818
var bold: Boolean? = null,
1919
var italic: Boolean? = null,
2020
var underlined: Boolean? = null,

src/main/kotlin/io/github/dockyardmc/scroll/providers/FormatProviderContext.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,9 @@ data class FormatProviderContext(val token: String, val textUntilNextTag: String
99
val arguments = ScrollUtil.getArguments(token)
1010
return arguments.getOrNull(index) ?: throw IndexOutOfBoundsException("Index $index is out of bounds for ${arguments.size} arguments")
1111
}
12+
13+
fun getArgumentOrNull(index: Int): String? {
14+
val arguments = ScrollUtil.getArguments(token)
15+
return arguments.getOrNull(index)
16+
}
1217
}

src/main/kotlin/io/github/dockyardmc/scroll/providers/default/ShadowColorProvider.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package io.github.dockyardmc.scroll.providers.default
22

33
import io.github.dockyardmc.scroll.Component
4+
import io.github.dockyardmc.scroll.CustomColor
45
import io.github.dockyardmc.scroll.providers.ClosingNamedFormatProvider
56
import io.github.dockyardmc.scroll.providers.FormatProviderContext
67

78
class ShadowColorProvider: ClosingNamedFormatProvider("shadow", listOf()) {
89

910
override fun formatNormal(context: FormatProviderContext, component: Component) {
10-
val shadowColor = context.getArgument(0)
11-
component.shadowColor = shadowColor
11+
val shadowColor = CustomColor.fromHex(context.getArgument(0))
12+
val alpha = context.getArgumentOrNull(1)?.toInt() ?: 255
13+
component.shadowColor = listOf(shadowColor.r, shadowColor.g, shadowColor.b, alpha)
1214
}
1315

1416
override fun formatClosing(context: FormatProviderContext, component: Component) {

src/main/kotlin/io/github/dockyardmc/scroll/serializers/ComponentToNbtSerializer.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,20 @@ import io.github.dockyardmc.scroll.Component
44
import io.github.dockyardmc.scroll.extensions.put
55
import org.jglrxavpok.hephaistos.nbt.NBT
66
import org.jglrxavpok.hephaistos.nbt.NBTCompound
7+
import org.jglrxavpok.hephaistos.nbt.NBTIntArray
78
import org.jglrxavpok.hephaistos.nbt.mutable.MutableNBTCompound
89

910
object ComponentToNbtSerializer {
1011
fun serializeComponent(c: Component): NBTCompound {
1112
val nbtWriter = MutableNBTCompound()
1213

1314
nbtWriter.put("color", c.color)
14-
nbtWriter.put("shadow_color", c.shadowColor)
15+
if(c.shadowColor != null) {
16+
val list = listOf(1, 2, 3)
17+
val array = NBTIntArray(*c.shadowColor!!.toIntArray())
18+
nbtWriter.put("shadow_color", array)
19+
20+
}
1521
nbtWriter.put("bold", c.bold)
1622
nbtWriter.put("font", c.font)
1723
nbtWriter.put("italic", c.italic)

src/main/kotlin/io/github/dockyardmc/scroll/serializers/KyoriToScrollSerializer.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ object KyoriToScrollSerializer {
1111
fun serializeComponent(kyori: net.kyori.adventure.text.Component): Component {
1212
val component = Component()
1313
component.color = kyori.color()?.asHexString()
14-
component.shadowColor = kyori.shadowColor()?.asHexString()
14+
if(kyori.shadowColor() != null) {
15+
val color = CustomColor.fromHex(kyori.shadowColor()!!.asHexString())
16+
component.shadowColor = listOf(color.r, color.g, color.b, kyori.shadowColor()!!.alpha())
17+
}
1518
component.bold = kyori.getTextDecoration(TextDecoration.BOLD)
1619
component.italic = kyori.getTextDecoration(TextDecoration.ITALIC)
1720
component.obfuscated = kyori.getTextDecoration(TextDecoration.OBFUSCATED)

src/main/kotlin/io/github/dockyardmc/scroll/serializers/NbtToComponentSerializer.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ object NbtToComponentSerializer {
1212

1313
component.color = nbt.getString("color")
1414
component.color = nbt.getString("shadow_color")
15+
component.shadowColor = nbt.getIntArray("shadow_color")?.toList()
1516
component.bold = nbt.getBoolean("bold")
1617
component.font = nbt.getString("font")
1718
component.italic = nbt.getBoolean("italic")

src/test/kotlin/NbtSerializationTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class NbtSerializationTests {
9090
},
9191
NBT.Compound {
9292
it.put("color", "#ff54aa")
93-
it.put("shadow_color", "#ba70ff")
93+
it.put("shadow_color", NBT.IntArray(186, 112, 255, 255))
9494
it.put("text", "AsoDesu_ ")
9595
},
9696
NBT.Compound {

src/test/kotlin/StringSerializationTests.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ class StringSerializationTests {
203203
fun testShadowColor() {
204204
val input = "<shadow:#3474eb><#eb3434>Hello!"
205205
val expected = Component.compound(mutableListOf(
206-
Component(text = "Hello!", shadowColor = "#3474eb", color = "#eb3434")
206+
Component(text = "Hello!", shadowColor = listOf(52, 116, 235, 255), color = "#eb3434")
207207
))
208208
assertEquals(expected.toJson(), input.toComponent().toJson())
209209
}

0 commit comments

Comments
 (0)