diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/MultipartRootModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/MultipartRootModel.kt index f93400a71..f6c675b06 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/MultipartRootModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/MultipartRootModel.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -113,6 +113,15 @@ class MultipartRootModel( } return@let } + val and = it["AND"] + if (and is List<*>) { + val andCondition: MutableMap> = mutableMapOf() + for (andData in and) { + andCondition += getCondition(andData.unsafeCast()) + } + condition += andCondition + return@let + } condition += getCondition(it) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/RootModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/RootModel.kt index 320625570..1cf8d2cb0 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/RootModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/RootModel.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -23,14 +23,10 @@ interface RootModel { fun getModelForState(blockState: BlockState): UnbakedModel companion object { - operator fun invoke(modeLoader: ModelLoader, data: Map): RootModel? { - val variants = data["variants"] - val multipart = data["multipart"] - return when { - variants != null -> SimpleRootModel(modeLoader, variants.unsafeCast()) - multipart != null -> MultipartRootModel(modeLoader, multipart.unsafeCast()) - else -> TODO("Don't know what type of block state model to choose: $data") - } + operator fun invoke(modeLoader: ModelLoader, data: Map): RootModel { + data["variants"]?.let { return SimpleRootModel(modeLoader, it.unsafeCast()) } + data["multipart"]?.let { return MultipartRootModel(modeLoader, it.unsafeCast()) } + TODO("Don't know what type of block state model to choose: $data") } } }