aboutsummaryrefslogtreecommitdiff
path: root/src/texturePacks/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/texturePacks/java')
-rw-r--r--src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/ExtraAttributesPredicate.kt66
-rw-r--r--src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/GenericComponentPredicate.kt1
2 files changed, 2 insertions, 65 deletions
diff --git a/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/ExtraAttributesPredicate.kt b/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/ExtraAttributesPredicate.kt
index 6384287..8115739 100644
--- a/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/ExtraAttributesPredicate.kt
+++ b/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/ExtraAttributesPredicate.kt
@@ -1,31 +1,24 @@
package moe.nea.firmament.features.texturepack.predicates
-import com.google.gson.Gson
-import com.google.gson.JsonArray
import com.google.gson.JsonElement
import com.google.gson.JsonObject
import com.google.gson.JsonPrimitive
import kotlin.jvm.optionals.getOrDefault
import kotlin.jvm.optionals.getOrNull
-import com.mojang.serialization.JsonOps
import moe.nea.firmament.features.texturepack.FirmamentModelPredicate
import moe.nea.firmament.features.texturepack.FirmamentModelPredicateParser
import moe.nea.firmament.features.texturepack.StringMatcher
import net.minecraft.item.ItemStack
import net.minecraft.nbt.NbtByte
-import net.minecraft.nbt.NbtCompound
import net.minecraft.nbt.NbtDouble
import net.minecraft.nbt.NbtElement
import net.minecraft.nbt.NbtFloat
import net.minecraft.nbt.NbtInt
-import net.minecraft.nbt.NbtList
import net.minecraft.nbt.NbtLong
-import net.minecraft.nbt.NbtOps
import net.minecraft.nbt.NbtShort
-import net.minecraft.nbt.NbtString
-import moe.nea.firmament.util.Base64Util
import moe.nea.firmament.util.extraAttributes
+import moe.nea.firmament.util.mc.NbtPrism
fun interface NbtMatcher {
fun matches(nbt: NbtElement): Boolean
@@ -246,60 +239,3 @@ data class ExtraAttributesPredicate(
}
}
-class NbtPrism(val path: List<String>) {
- companion object {
- fun fromElement(path: JsonElement): NbtPrism? {
- if (path is JsonArray) {
- return NbtPrism(path.map { (it as JsonPrimitive).asString })
- } else if (path is JsonPrimitive && path.isString) {
- return NbtPrism(path.asString.split("."))
- }
- return null
- }
- }
-
- override fun toString(): String {
- return "Prism($path)"
- }
-
- fun access(root: NbtElement): Collection<NbtElement> {
- var rootSet = mutableListOf(root)
- var switch = mutableListOf<NbtElement>()
- for (pathSegment in path) {
- if (pathSegment == ".") continue
- if (pathSegment != "*" && pathSegment.startsWith("*")) {
- if (pathSegment == "*json") {
- for (element in rootSet) {
- val eString = element.asString().getOrNull() ?: continue
- val element = Gson().fromJson(eString, JsonElement::class.java)
- switch.add(JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, element))
- }
- } else if (pathSegment == "*base64") {
- for (element in rootSet) {
- val string = element.asString().getOrNull() ?: continue
- switch.add(NbtString.of(Base64Util.decodeString(string)))
- }
- }
- }
- for (element in rootSet) {
- if (element is NbtList) {
- if (pathSegment == "*")
- switch.addAll(element)
- val index = pathSegment.toIntOrNull() ?: continue
- if (index !in element.indices) continue
- switch.add(element[index])
- }
- if (element is NbtCompound) {
- if (pathSegment == "*")
- element.keys.mapTo(switch) { element.get(it)!! }
- switch.add(element.get(pathSegment) ?: continue)
- }
- }
- val temp = switch
- switch = rootSet
- rootSet = temp
- switch.clear()
- }
- return rootSet
- }
-}
diff --git a/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/GenericComponentPredicate.kt b/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/GenericComponentPredicate.kt
index a99c724..71392ef 100644
--- a/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/GenericComponentPredicate.kt
+++ b/src/texturePacks/java/moe/nea/firmament/features/texturepack/predicates/GenericComponentPredicate.kt
@@ -15,6 +15,7 @@ import net.minecraft.util.Identifier
import moe.nea.firmament.features.texturepack.FirmamentModelPredicate
import moe.nea.firmament.features.texturepack.FirmamentModelPredicateParser
import moe.nea.firmament.util.MC
+import moe.nea.firmament.util.mc.NbtPrism
data class GenericComponentPredicate<T>(
val componentType: ComponentType<T>,