don't extract block models

This commit is contained in:
Bixilon 2022-05-01 14:30:32 +02:00
parent c23a271ae7
commit dd00689b76
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 0 additions and 178 deletions

View File

@ -46,6 +46,5 @@ object Generators {
VoxelShapeGenerator,
ModelsGenerator,
)
}

View File

@ -7,10 +7,7 @@ import de.bixilon.pixlyzer.util.ReflectionUtil.getClass
import de.bixilon.pixlyzer.util.ReflectionUtil.getField
import de.bixilon.pixlyzer.util.ReflectionUtil.getGetter
import de.bixilon.pixlyzer.util.ReflectionUtil.variable
import de.bixilon.pixlyzer.util.Util
import de.bixilon.pixlyzer.util.Util.compound
import de.bixilon.pixlyzer.util.Util.listCast
import de.bixilon.pixlyzer.util.Util.mapCast
import de.bixilon.pixlyzer.util.Util.nullCast
import de.bixilon.pixlyzer.util.Util.of
import de.bixilon.pixlyzer.util.Util.realName
@ -100,69 +97,6 @@ object BlockGenerator : Generator(
}
}
val render = Util.readJsonMinecraftResource("assets/${resourceLocation.namespace}/blockstates/${resourceLocation.path}.json")
val multipartVariants: MutableMap<MutableMap<String, MutableSet<String>>, MutableList<Any>> = mutableMapOf()
render["multipart"]?.listCast<Any>()?.let {
for (condition in it) {
check(condition is Map<*, *>)
val properties: MutableSet<MutableMap<String, MutableSet<String>>> = mutableSetOf()
fun addPropertyMap(json: Any) {
val singlePropertyMap: MutableMap<String, MutableSet<String>> = mutableMapOf()
for ((property, propertyValue) in json.mapCast()!!) {
check(property is String)
val valueSet: MutableSet<String> = mutableSetOf()
val propertyValues = propertyValue.toString().split("|")
for (value in propertyValues) {
valueSet.add(value)
}
singlePropertyMap[property.lowercase(Locale.getDefault())] = valueSet
}
properties.add(singlePropertyMap)
}
condition["when"]?.mapCast()?.let letWhen@{
it["OR"]?.listCast<Any>()?.let {
for (or in it) {
addPropertyMap(or)
}
return@letWhen
}
addPropertyMap(it)
}
if (properties.isEmpty()) {
properties.add(mutableMapOf())
}
addBlockModel(condition["apply"]!!)
for (propertyMap in properties) {
multipartVariants.getOrPut(propertyMap) { mutableListOf() }.add(condition["apply"]!!)
}
}
}
val renderVariants: MutableMap<MutableMap<String, String>, Any> = mutableMapOf()
render["variants"]?.mapCast()?.let {
for ((property, variant) in it) {
check(property is String)
addBlockModel(variant)
if (property.isBlank()) {
renderVariants[mutableMapOf()] = variant
continue
}
val propertiesOut: MutableMap<String, String> = mutableMapOf()
for (split in property.split(",")) {
val splitProperty = split.split("=")
propertiesOut[splitProperty[0].lowercase(Locale.getDefault())] = splitProperty[1].lowercase(Locale.getDefault())
}
renderVariants[propertiesOut] = variant
}
}
val hasColorProperties = (TINT_PROPERTIES_METHOD?.invoke(DEFAULT_BLOCK_COLORS, block) as Set<*>?)?.size?.let { it > 0 } ?: let {
val blockColorProviderList = BLOCK_COLORS_PROVIDERS_ID_LIST!!.get(DEFAULT_BLOCK_COLORS)
ID_LIST_GET_METHOD.invoke(blockColorProviderList, Registry.BLOCK.getRawId(block)) != null
@ -260,55 +194,6 @@ object BlockGenerator : Generator(
stateData["properties"] = propertyData
}
for ((propertyMap, variant) in renderVariants) {
var valid = true
for ((propertyName, propertyValue) in propertyMap) {
if (propertyData[propertyName]?.toString() != propertyValue) {
valid = false
break
}
}
if (valid) {
stateData["render"] = variant
}
}
val multipart = mutableListOf<Any>()
for ((properties, elementList) in multipartVariants) {
var valid = true
for ((propertyName, values) in properties) {
if (propertyData[propertyName] == null) {
valid = false
break
}
if (!values.contains(propertyData[propertyName]?.toString())) {
valid = false
break
}
}
if (valid) {
for (element in elementList) {
if (element is List<*>) {
for (apply in element) {
if (!multipart.contains(apply)) {
multipart.add(apply!!)
}
}
} else if (element is Map<*, *>) {
if (!multipart.contains(element)) {
multipart.add(element)
}
}
}
}
}
if (multipart.size > 0 && !stateData.contains("render")) {
val multipartWrapper = mutableListOf<Any>()
multipartWrapper.add(multipart)
stateData["render"] = multipartWrapper
}
state.initShapeCache()
val positionOffset = BLOCK_STATE_GET_OFFSET.invoke(state, EntitySpawner.CLIENT_LEVEL, EMPTY_BLOCK_POSITION) as Vec3d
@ -570,21 +455,5 @@ object BlockGenerator : Generator(
output[name] = input
}
private fun addBlockModel(json: Any) {
when (json) {
is Map<*, *> -> {
ModelsGenerator.MODELS_TO_GENERATE.add(json["model"]!!.toString())
}
is List<*> -> {
for (element in json) {
ModelsGenerator.MODELS_TO_GENERATE.add(element!!.mapCast()!!["model"]!!.toString())
}
}
else -> {
error("Invalid variant json")
}
}
}
}

View File

@ -1,46 +0,0 @@
package de.bixilon.pixlyzer.generator.generators
import de.bixilon.pixlyzer.generator.Generator
import de.bixilon.pixlyzer.util.Util
import de.bixilon.pixlyzer.util.Util.listCast
import de.bixilon.pixlyzer.util.Util.mapCast
import net.minecraft.util.Identifier
import net.minecraft.util.registry.Registry
object ModelsGenerator : Generator(
"models"
) {
val MODELS_TO_GENERATE: MutableList<String> = mutableListOf()
override fun generate() {
for (model in MODELS_TO_GENERATE) {
val resourceLocation = Identifier(model)
loadModel(resourceLocation)
}
for (item in Registry.ITEM) {
val itemIdentifier = Registry.ITEM.getId(item)
loadModel(Identifier(itemIdentifier.namespace, "item/" + itemIdentifier.path))
}
}
private fun loadModel(resourceLocation: Identifier) {
if (data.containsKey(resourceLocation.toString())) {
return
}
data[resourceLocation.toString()] = Util.readJsonMinecraftResource("assets/${resourceLocation.namespace}/models/${resourceLocation.path}.json")
val modelJson = Util.readJsonMinecraftResource("assets/${resourceLocation.namespace}/models/${resourceLocation.path}.json")
modelJson["parent"]?.let {
if (!it.toString().startsWith("builtin/")) {
loadModel(Identifier(it as String))
}
}
modelJson["overrides"]?.listCast<Any>()?.let {
for (override in it) {
override.mapCast()!!["model"]?.let {
loadModel(Identifier(it as String))
}
}
}
}
}