From fe78eadd63ec940537a623cfcaf172f307dc20ba Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:12:48 +0100 Subject: [PATCH] Fix #522 --- .../builder/task/model/BlockModelContent.kt | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/nova/src/main/kotlin/xyz/xenondevs/nova/resources/builder/task/model/BlockModelContent.kt b/nova/src/main/kotlin/xyz/xenondevs/nova/resources/builder/task/model/BlockModelContent.kt index de927557e1..48ff1c67f3 100644 --- a/nova/src/main/kotlin/xyz/xenondevs/nova/resources/builder/task/model/BlockModelContent.kt +++ b/nova/src/main/kotlin/xyz/xenondevs/nova/resources/builder/task/model/BlockModelContent.kt @@ -6,6 +6,7 @@ import xyz.xenondevs.commons.collections.associateNotNull import xyz.xenondevs.commons.collections.flatMap import xyz.xenondevs.commons.gson.fromJson import xyz.xenondevs.commons.gson.getObjectOrNull +import xyz.xenondevs.commons.gson.getOrPut import xyz.xenondevs.commons.gson.parseJson import xyz.xenondevs.commons.gson.writeToFile import xyz.xenondevs.nova.LOGGER @@ -211,7 +212,7 @@ class BlockModelContent internal constructor(private val builder: ResourcePackBu blockStatePosition[type] = pos - return if (pos < type.maxId) type.of(pos, waterlogged) else null + return if (pos <= type.maxId) type.of(pos, waterlogged) else null } /** @@ -251,19 +252,25 @@ class BlockModelContent internal constructor(private val builder: ResourcePackBu */ @PackTask(runAfter = ["ModelContent#discoverAllModels"]) private fun writeBlockStateFiles() { + // some backing state config types cover the same file + val fileContents = HashMap() + variantByConfig.entries .groupBy { (cfg, _) -> cfg.type } .forEach { (type, entries) -> - val obj = JsonObject() - val variantsObj = JsonObject().also { obj.add("variants", it) } + val blockStateFile = getBlockStateFile(type) + + val obj = fileContents.getOrPut(blockStateFile, ::JsonObject) + val variantsObj = obj.getOrPut("variants", ::JsonObject) for ((cfg, variantData) in entries) { variantsObj.add(cfg.variantString, GSON.toJsonTree(variantData)) } - - val blockStateFile = getBlockStateFile(type) - blockStateFile.createParentDirectories() - obj.writeToFile(blockStateFile) } + + for ((path, obj) in fileContents) { + path.createParentDirectories() + obj.writeToFile(path) + } } /**