Skip to content

Commit 58164f0

Browse files
committed
Move CompoundJsonContainer to separate class, support string list type
1 parent a8eaff8 commit 58164f0

File tree

2 files changed

+60
-50
lines changed

2 files changed

+60
-50
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package io.github.rothes.protocolstringreplacer.replacer.containers
2+
3+
import de.tr7zw.nbtapi.NBT
4+
import de.tr7zw.nbtapi.NBTType
5+
import de.tr7zw.nbtapi.iface.ReadWriteNBT
6+
7+
class CompoundJsonContainer(
8+
private val compound: ReadWriteNBT,
9+
private val key: String,
10+
root: Container<*>,
11+
): AbstractContainer<Unit>(Unit, root) {
12+
13+
private val type = compound.getType(key)
14+
private val jsonCompound: ReadWriteNBT?
15+
private val original: String
16+
private val container: Container<String>
17+
18+
init {
19+
when (type) {
20+
NBTType.NBTTagCompound -> {
21+
jsonCompound = compound.getCompound(key)
22+
original = jsonCompound.toString()
23+
container = ChatJsonContainer(original, root)
24+
children.add(container)
25+
}
26+
NBTType.NBTTagList -> {
27+
jsonCompound = null
28+
// TODO: Could be compound + string list??
29+
original = compound.getStringList(key).joinToString(separator = "")
30+
container = SimpleTextContainer(original, root)
31+
children.add(container)
32+
}
33+
NBTType.NBTTagString -> {
34+
jsonCompound = null
35+
original = compound.getString(key)
36+
container = SimpleTextContainer(original, root)
37+
children.add(container)
38+
}
39+
else -> error("Unsupported compound type $type")
40+
}
41+
}
42+
43+
override fun getResult() {
44+
val result = container.getResult()
45+
if (result != original) {
46+
when (type) {
47+
NBTType.NBTTagCompound -> {
48+
jsonCompound!!
49+
jsonCompound.clearNBT()
50+
jsonCompound.mergeCompound(NBT.parseNBT(result))
51+
}
52+
NBTType.NBTTagList, NBTType.NBTTagString -> {
53+
compound.setString(key, result)
54+
}
55+
else -> throw AssertionError()
56+
}
57+
}
58+
}
59+
60+
}

bukkit/src/main/kotlin/io/github/rothes/protocolstringreplacer/replacer/containers/ItemStackContainer.kt

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -284,55 +284,6 @@ class ItemStackContainer @JvmOverloads constructor(itemStack: ItemStack, useCach
284284
return nbt
285285
}
286286

287-
class CompoundJsonContainer(
288-
private val compound: ReadWriteNBT,
289-
private val key: String,
290-
root: Container<*>,
291-
): AbstractContainer<Unit>(Unit, root) {
292-
293-
private val isCompound: Boolean
294-
private val jsonCompound: ReadWriteNBT?
295-
private val original: String
296-
private val container: Container<String>
297-
298-
init {
299-
if (COMPOUND_JSON) {
300-
isCompound = compound.getType(key) == NBTType.NBTTagCompound
301-
if (isCompound) {
302-
jsonCompound = compound.getCompound(key)
303-
original = jsonCompound.toString()
304-
container = ChatJsonContainer(original, root)
305-
children.add(container)
306-
} else {
307-
jsonCompound = null
308-
original = compound.getString(key)
309-
container = SimpleTextContainer(original, root)
310-
children.add(container)
311-
}
312-
// TODO string list?
313-
} else {
314-
isCompound = false
315-
jsonCompound = null
316-
original = compound.getString(key)
317-
container = ChatJsonContainer(original, root)
318-
children.add(container)
319-
}
320-
}
321-
322-
override fun getResult() {
323-
val result = container.getResult()
324-
if (result != original) {
325-
if (isCompound) {
326-
jsonCompound!!
327-
jsonCompound.clearNBT()
328-
jsonCompound.mergeCompound(NBT.parseNBT(result))
329-
} else {
330-
compound.setString(key, result)
331-
}
332-
}
333-
}
334-
}
335-
336287
class CompoundTextContainer(
337288
private val compound: ReadWriteNBT,
338289
private val key: String,
@@ -354,7 +305,6 @@ class ItemStackContainer @JvmOverloads constructor(itemStack: ItemStack, useCach
354305
private val NAME_JSON = plugin.serverMajorVersion >= 13
355306
private val LORE_JSON = plugin.serverMajorVersion >= 14
356307
private val NEW_NBT = plugin.serverMajorVersion == 20.toByte() && plugin.serverMinorVersion >= 5 || plugin.serverMajorVersion > 20
357-
private val COMPOUND_JSON = plugin.serverMajorVersion == 21.toByte() && plugin.serverMinorVersion >= 6 || plugin.serverMajorVersion > 21
358308
private val TAG_PATH = if (NEW_NBT) arrayOf("components") else arrayOf("tag")
359309
private val DISPLAY_PATH = if (NEW_NBT) arrayOf() else arrayOf("display")
360310
private val NAME_KEY = if (NEW_NBT) "minecraft:custom_name" else "Name"

0 commit comments

Comments
 (0)