Make firmament predicates fall back to not matching

This commit is contained in:
Linnea Gräf
2024-05-14 19:37:34 +02:00
parent 21e84ba59f
commit fd06938511

View File

@@ -11,6 +11,7 @@ import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.encoding.Encoder
import net.minecraft.item.ItemStack
import net.minecraft.util.Identifier import net.minecraft.util.Identifier
object CustomModelOverrideParser { object CustomModelOverrideParser {
@@ -45,13 +46,21 @@ object CustomModelOverrideParser {
registerPredicateParser("item", ItemPredicate.Parser) registerPredicateParser("item", ItemPredicate.Parser)
} }
private val neverPredicate = listOf(
object : FirmamentModelPredicate {
override fun test(stack: ItemStack): Boolean {
return false
}
}
)
fun parsePredicates(predicates: JsonObject): List<FirmamentModelPredicate> { fun parsePredicates(predicates: JsonObject): List<FirmamentModelPredicate> {
val parsedPredicates = mutableListOf<FirmamentModelPredicate>() val parsedPredicates = mutableListOf<FirmamentModelPredicate>()
for (predicateName in predicates.keySet()) { for (predicateName in predicates.keySet()) {
if (!predicateName.startsWith("firmament:")) continue if (!predicateName.startsWith("firmament:")) continue
val identifier = Identifier(predicateName) val identifier = Identifier(predicateName)
val parser = predicateParsers[identifier] ?: continue val parser = predicateParsers[identifier] ?: return neverPredicate
val parsedPredicate = parser.parse(predicates[predicateName]) ?: continue val parsedPredicate = parser.parse(predicates[predicateName]) ?: return neverPredicate
parsedPredicates.add(parsedPredicate) parsedPredicates.add(parsedPredicate)
} }
return parsedPredicates return parsedPredicates