rendering: fix some last issues with blockConditions

This commit is contained in:
Lukas 2021-03-06 20:19:17 +01:00
parent c129c1adce
commit 46c9df3b54
2 changed files with 8 additions and 16 deletions

View File

@ -27,7 +27,6 @@ open class BlockCondition {
constructor(data: JsonElement) { constructor(data: JsonElement) {
when (data) { when (data) {
null -> return
is JsonObject -> { is JsonObject -> {
addToProperties(data.asJsonObject) addToProperties(data.asJsonObject)
} }
@ -39,6 +38,8 @@ open class BlockCondition {
} }
} }
constructor()
private fun addToProperties(data: JsonObject) { private fun addToProperties(data: JsonObject) {
val current: MutableList<MutableSet<BlockProperties>> = mutableListOf() val current: MutableList<MutableSet<BlockProperties>> = mutableListOf()
for ((propertyName, propertyJsonValue) in data.entrySet()) { for ((propertyName, propertyJsonValue) in data.entrySet()) {
@ -86,28 +87,17 @@ open class BlockCondition {
blockProperties.add(current) blockProperties.add(current)
} }
constructor()
open fun contains(testProperties: MutableSet<BlockProperties>, testRotation: BlockRotations): Boolean { open fun contains(testProperties: MutableSet<BlockProperties>, testRotation: BlockRotations): Boolean {
if (rotation != BlockRotations.NONE && rotation != testRotation) { if (rotation != BlockRotations.NONE && rotation != testRotation) {
return false return false
} }
for (propertiesSubSet in blockProperties) { outerLoop@ for (propertiesSubSet in blockProperties) {
var propertiesGood = true
for (properties in propertiesSubSet) { for (properties in propertiesSubSet) {
for (property in properties) { if (testProperties.intersect(properties).isEmpty()) {
if (! testProperties.contains(property)) { continue@outerLoop
propertiesGood = false
break
}
}
if (! propertiesGood) {
break
} }
} }
if (propertiesGood) { return true
return true
}
} }
return false return false
} }

View File

@ -17,6 +17,8 @@ import com.google.common.collect.HashBiMap
import com.google.gson.JsonObject import com.google.gson.JsonObject
import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.Directions import de.bixilon.minosoft.data.Directions
import de.bixilon.minosoft.data.mappings.ResourceLocation
import de.bixilon.minosoft.data.mappings.versions.VersionMapping
import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.data.text.RGBColor
import de.bixilon.minosoft.data.world.BlockPosition import de.bixilon.minosoft.data.world.BlockPosition
import de.bixilon.minosoft.data.world.light.LightAccessor import de.bixilon.minosoft.data.world.light.LightAccessor