From fd9b74cebe54c85614348f0a082f4fb059399578 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sat, 28 Jan 2023 18:18:46 +0700 Subject: [PATCH] Get rid of matterymodelbuilder (because it is useless) --- .../mc/otm/datagen/DecorativeData.kt | 7 +- .../mc/otm/datagen/models/BlockModels.kt | 25 --- .../otm/datagen/models/MatteryModelBuilder.kt | 164 ------------------ .../datagen/models/MatteryModelProvider.kt | 37 +--- 4 files changed, 7 insertions(+), 226 deletions(-) delete mode 100644 src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelBuilder.kt diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt index 8a9319f1a..d574dc669 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt @@ -1,11 +1,11 @@ package ru.dbotthepony.mc.otm.datagen import net.minecraft.resources.ResourceLocation -import net.minecraft.world.level.block.PressurePlateBlock import net.minecraft.world.level.block.SlabBlock import net.minecraft.world.level.block.StairBlock import net.minecraft.world.level.block.WallBlock import net.minecraft.world.level.block.state.properties.BlockStateProperties +import net.minecraftforge.client.model.generators.BlockModelBuilder import net.minecraftforge.client.model.generators.ConfiguredModel import net.minecraftforge.client.model.generators.ModelFile import ru.dbotthepony.mc.otm.OverdriveThatMatters @@ -15,7 +15,6 @@ import ru.dbotthepony.mc.otm.core.registryName import ru.dbotthepony.mc.otm.datagen.blocks.MatteryBlockStateProvider import ru.dbotthepony.mc.otm.datagen.items.MatteryItemModelProvider import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider -import ru.dbotthepony.mc.otm.datagen.models.MatteryModelBuilder import ru.dbotthepony.mc.otm.registry.MBlocks import ru.dbotthepony.mc.otm.registry.MItems import ru.dbotthepony.mc.otm.registry.MNames @@ -181,8 +180,8 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr DataGen.decorativeCubeAll(MBlocks.DANGER_STRIPE_BLOCK) DataGen.decorativeColumn(MBlocks.METAL_BEAM, "metal_beam_side", "metal_beam_top") - var labLampOn: MatteryModelBuilder? = null - var labLampOff: MatteryModelBuilder? = null + var labLampOn: BlockModelBuilder? = null + var labLampOff: BlockModelBuilder? = null blockModelProvider.exec { val top = ResourceLocation(DataGen.MOD_ID, "block/decorative/metal_beam_top") diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt index af8524102..52418774b 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/BlockModels.kt @@ -9,30 +9,5 @@ fun addBlockModels(provider: MatteryBlockModelProvider) { resourceCubeAll(MBlocks.TRITANIUM_RAW_BLOCK) resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE) resourceCubeAll(MBlocks.TRITANIUM_INGOT_BLOCK) - - exec { - copy("block/battery/battery1", "block/battery/battery0").also { it.offset(-4f, 0f, 0f) } - copy("block/battery/battery2", "block/battery/battery0").also { it.offset(-8f, 0f, 0f) } - - copy("block/battery/battery3", "block/battery/battery0").also { it.offset(0f, 6f, 0f) } - copy("block/battery/battery4", "block/battery/battery0").also { it.offset(-4f, 6f, 0f) } - copy("block/battery/battery5", "block/battery/battery0").also { it.offset(-8f, 6f, 0f) } - - copy("block/battery/battery7", "block/battery/battery6").also { it.offset(4f, 0f, 0f) } - copy("block/battery/battery8", "block/battery/battery6").also { it.offset(8f, 0f, 0f) } - - copy("block/battery/battery9", "block/battery/battery6").also { it.offset(0f, 6f, 0f) } - copy("block/battery/battery10", "block/battery/battery6").also { it.offset(4f, 6f, 0f) } - copy("block/battery/battery11", "block/battery/battery6").also { it.offset(8f, 6f, 0f) } - - for (i in 0 .. 11) { - withExistingParent("block/battery/matter_capacitor$i", ResourceLocation(ru.dbotthepony.mc.otm.datagen.DataGen.MOD_ID, "block/battery/battery$i")) - .texture("1", "block/matterybank_core") - } - - for (i in 1 .. 7) { - copy("block/pattern/model$i", "block/pattern/model0").also { it.offset(-2f * i, 0f, 0f) } - } - } } } diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelBuilder.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelBuilder.kt deleted file mode 100644 index e1b04a422..000000000 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelBuilder.kt +++ /dev/null @@ -1,164 +0,0 @@ -package ru.dbotthepony.mc.otm.datagen.models - -import com.google.gson.JsonArray -import com.google.gson.JsonObject -import com.google.gson.JsonPrimitive -import net.minecraft.client.renderer.block.model.BlockModel -import net.minecraft.core.Direction -import net.minecraft.resources.ResourceLocation -import net.minecraftforge.client.model.generators.ModelBuilder -import net.minecraftforge.common.data.ExistingFileHelper -import org.joml.Vector3f -import ru.dbotthepony.mc.otm.container.set -import ru.dbotthepony.mc.otm.core.nbt.set -import ru.dbotthepony.mc.otm.core.set - -data class TextureSize(val width: Float, val height: Float) { - constructor(arr: JsonArray) : this(arr[0].asFloat, arr[1].asFloat) - - init { - require(width > 0f) { "Invalid width $width" } - require(height > 0f) { "Invalid width $height" } - } -} - -class MatteryModelBuilder(resourceLocation: ResourceLocation, existingFileHelper: ExistingFileHelper) : ModelBuilder(resourceLocation, existingFileHelper) { - var textureSize: TextureSize? = null - - fun fromJson(input: JsonObject) { - input["parent"]?.let { - parent(ExistingModelFile(ResourceLocation(it.asString), existingFileHelper)) - } - - input["ambientocclusion"]?.let { - ambientOcclusion = it.asBoolean - } - - input["gui_light"]?.let { - guiLight = BlockModel.GuiLight.valueOf(it.asString) - } - - (input["texture_size"] as? JsonArray)?.let { - textureSize = TextureSize(it) - } - - (input["textures"] as? JsonObject)?.let { - for ((k, v) in it.entrySet()) { - texture(k, v.asString) - } - } - - (input["elements"] as? JsonArray)?.let { - var i = -1 - - for (value in it) { - i++ - check(value is JsonObject) { "Encountered invalid element at $i" } - element().fromJson(value) - } - } - } - - override fun toJson(): JsonObject { - return super.toJson().also { - val textureSize = textureSize - - if (textureSize != null) { - it["texture_size"] = JsonArray().also { - it.add(textureSize.width) - it.add(textureSize.height) - } - } - } - } - - override fun element(): MatteryModelElement { - check(customLoader == null) { "Can not use custom loaders and elements at the same time" } - return MatteryModelElement().also(elements::add) - } - - override fun element(index: Int): MatteryModelElement { - return super.element(index) as MatteryModelElement - } - - fun offset(x: Float, y: Float, z: Float) { - for (element in elements) { - (element as MatteryModelElement).offset(x, y, z) - } - } - - fun offset(value: Vector3f) { - for (element in elements) { - (element as MatteryModelElement).offset(value) - } - } - - inner class MatteryModelElement : ElementBuilder() { - private var from: Vector3f = Vector3f() - private var to: Vector3f = Vector3f(16f, 16f, 16f) - - fun from(value: Vector3f) = from(value.x(), value.y(), value.z()) - fun to(value: Vector3f) = to(value.x(), value.y(), value.z()) - - override fun from(x: Float, y: Float, z: Float): MatteryModelElement { - from = Vector3f(x, y, z) - super.from(x, y, z) - return this - } - - override fun to(x: Float, y: Float, z: Float): MatteryModelElement { - to = Vector3f(x, y, z) - super.to(x, y, z) - return this - } - - fun offset(x: Float, y: Float, z: Float): MatteryModelElement { - from(x + from.x(), y + from.y(), z + from.z()) - return to(x + to.x(), y + to.y(), z + to.z()) - } - - fun offset(value: Vector3f) = offset(value.x(), value.y(), value.z()) - - fun fromJson(input: JsonObject) { - val from = input["from"] as JsonArray - val to = input["to"] as JsonArray - - from(from[0].asFloat, from[1].asFloat, from[2].asFloat) - to(to[0].asFloat, to[1].asFloat, to[2].asFloat) - - (input["faces"] as? JsonObject)?.let { - for ((k, v) in it.entrySet()) { - with(face(Direction.valueOf(k.uppercase()))) { - check(v is JsonObject) { "Element has invalid face at $k" } - - (v["uv"] as? JsonArray)?.also { uv -> - check(uv.size() == 4) { "Element at $k has invalid number of uvs ${uv.size()}" } - uvs(uv[0].asFloat, uv[1].asFloat, uv[2].asFloat, uv[3].asFloat) - } - - (v["rotation"] as? JsonPrimitive)?.also { rotation -> - when (rotation.asInt) { - 90 -> rotation(FaceRotation.CLOCKWISE_90) - -90, 270 -> rotation(FaceRotation.COUNTERCLOCKWISE_90) - 180, -180 -> rotation(FaceRotation.UPSIDE_DOWN) - else -> rotation(FaceRotation.ZERO) - } - } - - (v["emissivity"] as? JsonPrimitive)?.asInt?.also { emissivity -> - emissivity(emissivity, 0) - } - - (v["ao"] as? JsonPrimitive)?.asBoolean?.also { ao -> - ao(ao) - } - - (v["texture"] as? JsonPrimitive)?.also { - texture(it.asString) - } - } - } - } - } - } -} diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt index b7d1dca22..cec8563c5 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/models/MatteryModelProvider.kt @@ -6,44 +6,17 @@ import net.minecraft.resources.ResourceLocation import net.minecraft.server.packs.PackType import net.minecraft.world.level.block.Block import net.minecraft.world.level.block.DoorBlock +import net.minecraftforge.client.model.generators.BlockModelProvider import net.minecraftforge.client.model.generators.ModelProvider import net.minecraftforge.data.event.GatherDataEvent import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.core.registryName import java.util.LinkedList -private typealias Callback = (MatteryModelProvider) -> Unit +class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) { + private val callbacks = LinkedList<(MatteryBlockModelProvider) -> Unit>() -sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : ModelProvider(event.generator.packOutput, DataGen.MOD_ID, folder, ::MatteryModelBuilder, event.existingFileHelper) { - private fun extendWithFolder(rl: ResourceLocation): ResourceLocation { - return if (rl.path.contains("/")) rl else ResourceLocation(rl.namespace, folder + "/" + rl.path) - } - - fun copy(destination: String, source: String): MatteryModelBuilder { - val destinationLocation = extendWithFolder(if (destination.contains(":")) ResourceLocation(destination) else ResourceLocation(modid, destination)) - val sourceLocation = extendWithFolder(if (source.contains(":")) ResourceLocation("models/$source.json") else ResourceLocation(modid, "models/$source.json")) - - check(!generatedModels.containsKey(destinationLocation)) { "Model provider already contains model $destinationLocation" } - existingFileHelper.trackGenerated(destinationLocation, MODEL) - - return factory.apply(destinationLocation).also { - generatedModels[destinationLocation] = it - val resource = existingFileHelper.getResource(sourceLocation, PackType.CLIENT_RESOURCES) - val stream = resource.open() - val reader = stream.reader() - - try { - it.fromJson(JsonParser.parseReader(reader) as JsonObject) - } finally { - reader.close() - stream.close() - } - } - } - - private val callbacks = LinkedList() - - fun exec(callback: Callback) { + fun exec(callback: (MatteryBlockModelProvider) -> Unit) { callbacks.add(callback) } @@ -52,9 +25,7 @@ sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : Mode callback(this) } } -} -class MatteryBlockModelProvider(event: GatherDataEvent) : MatteryModelProvider(event, BLOCK_FOLDER) { override fun getName(): String { return "Block Models: $modid" }