fix(test): Unit Tests not DFUing items
This commit is contained in:
@@ -81,7 +81,6 @@ object AnimatedClothingScanner {
|
|||||||
if (subject == null) run {
|
if (subject == null) run {
|
||||||
val entity = MC.instance.targetedEntity ?: return@run null
|
val entity = MC.instance.targetedEntity ?: return@run null
|
||||||
val clipboard = ClipboardUtils.getTextContents()
|
val clipboard = ClipboardUtils.getTextContents()
|
||||||
MC.instance.entit
|
|
||||||
if (!clipboard.startsWith(EXPORT_WATERMARK)) {
|
if (!clipboard.startsWith(EXPORT_WATERMARK)) {
|
||||||
ClipboardUtils.setTextContent(EXPORT_WATERMARK)
|
ClipboardUtils.setTextContent(EXPORT_WATERMARK)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
19
src/main/kotlin/features/debug/ExportedTestConstantMeta.kt
Normal file
19
src/main/kotlin/features/debug/ExportedTestConstantMeta.kt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package moe.nea.firmament.features.debug
|
||||||
|
|
||||||
|
import com.mojang.serialization.Codec
|
||||||
|
import com.mojang.serialization.codecs.RecordCodecBuilder
|
||||||
|
import java.util.Optional
|
||||||
|
|
||||||
|
data class ExportedTestConstantMeta(
|
||||||
|
val dataVersion: Int,
|
||||||
|
val modVersion: Optional<String>,
|
||||||
|
) {
|
||||||
|
companion object {
|
||||||
|
val CODEC: Codec<ExportedTestConstantMeta> = RecordCodecBuilder.create {
|
||||||
|
it.group(
|
||||||
|
Codec.INT.fieldOf("dataVersion").forGetter(ExportedTestConstantMeta::dataVersion),
|
||||||
|
Codec.STRING.optionalFieldOf("modVersion").forGetter(ExportedTestConstantMeta::modVersion),
|
||||||
|
).apply(it, ::ExportedTestConstantMeta)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -180,10 +180,10 @@ object PowerUserTools : FirmamentFeature {
|
|||||||
Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.skull-id", skullTexture.toString()))
|
Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.skull-id", skullTexture.toString()))
|
||||||
println("Copied skull id: $skullTexture")
|
println("Copied skull id: $skullTexture")
|
||||||
} else if (it.matches(TConfig.copyItemStack)) {
|
} else if (it.matches(TConfig.copyItemStack)) {
|
||||||
ClipboardUtils.setTextContent(
|
val nbt = ItemStack.CODEC
|
||||||
ItemStack.CODEC
|
|
||||||
.encodeStart(MC.currentOrDefaultRegistries.getOps(NbtOps.INSTANCE), item)
|
.encodeStart(MC.currentOrDefaultRegistries.getOps(NbtOps.INSTANCE), item)
|
||||||
.orThrow.toPrettyString())
|
.orThrow
|
||||||
|
ClipboardUtils.setTextContent(nbt.toPrettyString())
|
||||||
lastCopiedStack = Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.stack"))
|
lastCopiedStack = Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.stack"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,23 @@
|
|||||||
package moe.nea.firmament.test.testutil
|
package moe.nea.firmament.test.testutil
|
||||||
|
|
||||||
|
import com.mojang.datafixers.DSL
|
||||||
|
import com.mojang.datafixers.DataFixUtils
|
||||||
|
import com.mojang.datafixers.types.templates.Named
|
||||||
|
import com.mojang.serialization.Dynamic
|
||||||
|
import com.mojang.serialization.JsonOps
|
||||||
|
import net.minecraft.SharedConstants
|
||||||
|
import net.minecraft.datafixer.Schemas
|
||||||
|
import net.minecraft.datafixer.TypeReferences
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.nbt.NbtCompound
|
import net.minecraft.nbt.NbtCompound
|
||||||
import net.minecraft.nbt.NbtElement
|
import net.minecraft.nbt.NbtElement
|
||||||
import net.minecraft.nbt.NbtOps
|
import net.minecraft.nbt.NbtOps
|
||||||
|
import net.minecraft.nbt.NbtString
|
||||||
import net.minecraft.nbt.StringNbtReader
|
import net.minecraft.nbt.StringNbtReader
|
||||||
import net.minecraft.registry.RegistryOps
|
import net.minecraft.registry.RegistryOps
|
||||||
import net.minecraft.text.Text
|
import net.minecraft.text.Text
|
||||||
import net.minecraft.text.TextCodecs
|
import net.minecraft.text.TextCodecs
|
||||||
|
import moe.nea.firmament.features.debug.ExportedTestConstantMeta
|
||||||
import moe.nea.firmament.test.FirmTestBootstrap
|
import moe.nea.firmament.test.FirmTestBootstrap
|
||||||
import moe.nea.firmament.util.MC
|
import moe.nea.firmament.util.MC
|
||||||
|
|
||||||
@@ -28,15 +38,45 @@ object ItemResources {
|
|||||||
}
|
}
|
||||||
fun getNbtOps(): RegistryOps<NbtElement> = MC.currentOrDefaultRegistries.getOps(NbtOps.INSTANCE)
|
fun getNbtOps(): RegistryOps<NbtElement> = MC.currentOrDefaultRegistries.getOps(NbtOps.INSTANCE)
|
||||||
|
|
||||||
|
fun tryMigrateNbt(
|
||||||
|
nbtCompound: NbtCompound,
|
||||||
|
typ: DSL.TypeReference,
|
||||||
|
): NbtElement {
|
||||||
|
val source = nbtCompound.get("source", ExportedTestConstantMeta.CODEC)
|
||||||
|
nbtCompound.remove("source")
|
||||||
|
if (source.isPresent) {
|
||||||
|
val wrappedNbtSource = if (typ == TypeReferences.TEXT_COMPONENT && source.get().dataVersion < 4325) {
|
||||||
|
// Per 1.21.5 text components are wrapped in a string, which firmament unwrapped in the snbt files
|
||||||
|
NbtString.of(
|
||||||
|
NbtOps.INSTANCE.convertTo(JsonOps.INSTANCE, nbtCompound)
|
||||||
|
.toString())
|
||||||
|
} else {
|
||||||
|
nbtCompound
|
||||||
|
}
|
||||||
|
return Schemas.getFixer()
|
||||||
|
.update(
|
||||||
|
typ,
|
||||||
|
Dynamic(NbtOps.INSTANCE, wrappedNbtSource),
|
||||||
|
source.get().dataVersion,
|
||||||
|
SharedConstants.getGameVersion().saveVersion.id
|
||||||
|
).value
|
||||||
|
}
|
||||||
|
return nbtCompound
|
||||||
|
}
|
||||||
|
|
||||||
fun loadText(name: String): Text {
|
fun loadText(name: String): Text {
|
||||||
return TextCodecs.CODEC.parse(getNbtOps(), loadSNbt("testdata/chat/$name.snbt"))
|
return TextCodecs.CODEC.parse(
|
||||||
.getOrThrow { IllegalStateException("Could not load test chat '$name': $it") }
|
getNbtOps(),
|
||||||
|
tryMigrateNbt(loadSNbt("testdata/chat/$name.snbt"), TypeReferences.TEXT_COMPONENT)
|
||||||
|
).getOrThrow { IllegalStateException("Could not load test chat '$name': $it") }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadItem(name: String): ItemStack {
|
fun loadItem(name: String): ItemStack {
|
||||||
// TODO: make the load work with enchantments
|
try {
|
||||||
// TODO: use DFU to load older items
|
val itemNbt = loadSNbt("testdata/items/$name.snbt")
|
||||||
return ItemStack.CODEC.parse(getNbtOps(), loadSNbt("testdata/items/$name.snbt"))
|
return ItemStack.CODEC.parse(getNbtOps(), tryMigrateNbt(itemNbt, TypeReferences.ITEM_STACK)).orThrow
|
||||||
.getOrThrow { IllegalStateException("Could not load test item '$name': $it") }
|
} catch (ex: Exception) {
|
||||||
|
throw RuntimeException("Could not load item resource '$name'", ex)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
extra: [
|
extra: [
|
||||||
{
|
{
|
||||||
bold: 0b,
|
bold: 0b,
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
color: "#FFAA00",
|
color: "#FFAA00",
|
||||||
extra: [
|
extra: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
color: "#FFAA00",
|
color: "#FFAA00",
|
||||||
extra: [
|
extra: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:custom_data": {
|
"minecraft:custom_data": {
|
||||||
id: "PET",
|
id: "PET",
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:custom_data": {
|
"minecraft:custom_data": {
|
||||||
id: "PET",
|
id: "PET",
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:custom_data": {
|
"minecraft:custom_data": {
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
source: {
|
||||||
|
dataVersion: 4189,
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
"minecraft:attribute_modifiers": {
|
"minecraft:attribute_modifiers": {
|
||||||
modifiers: [
|
modifiers: [
|
||||||
|
|||||||
Reference in New Issue
Block a user