From c5313d405b6356c4f557eec2287123aa08f3f440 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Tue, 2 Jan 2024 18:06:14 +0700 Subject: [PATCH] Actually make metal beams behave like pillars --- .../ru/dbotthepony/mc/otm/datagen/DataGen.kt | 5 +++++ .../mc/otm/datagen/DecorativeData.kt | 2 +- .../blocks/MatteryBlockStateProvider.kt | 22 +++++++++++++++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt index 29d749ca5..4092fb1ef 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -107,6 +107,11 @@ object DataGen { blockStateProvider.simpleBlockM(block) } + fun decorativePillar(block: Block, side: String, top: String) { + blockModelProvider.decorativeColumn(block, side, top) + blockStateProvider.simplePillar(block) + } + fun stairs(block: StairBlock, side: String, top: String) { blockStateProvider.exec { blockStateProvider.stairsBlock(block, modLocation(side), modLocation(top), modLocation(top)) 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 4a13dd03c..a9380202f 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt @@ -192,7 +192,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr } DataGen.decorativeCubeAll(MBlocks.DANGER_STRIPE_BLOCK) - DataGen.decorativeColumn(MBlocks.METAL_BEAM, "metal_beam_side", "metal_beam_top") + DataGen.decorativePillar(MBlocks.METAL_BEAM, "metal_beam_side", "metal_beam_top") var labLampOn: BlockModelBuilder? = null var labLampOff: BlockModelBuilder? = null diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt index 4aa2544be..509171aa9 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/blocks/MatteryBlockStateProvider.kt @@ -1,6 +1,8 @@ package ru.dbotthepony.mc.otm.datagen.blocks +import net.minecraft.core.Direction import net.minecraft.world.level.block.Block +import net.minecraft.world.level.block.RotatedPillarBlock import net.minecraft.world.level.block.state.BlockState import net.minecraftforge.client.model.generators.BlockStateProvider import net.minecraftforge.client.model.generators.ConfiguredModel @@ -10,10 +12,10 @@ import ru.dbotthepony.mc.otm.core.getValueNullable import ru.dbotthepony.mc.otm.core.math.BlockRotationFreedom import ru.dbotthepony.mc.otm.core.math.xRotationBlockstateNorth import ru.dbotthepony.mc.otm.core.math.yRotationBlockstateNorth -import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.core.registryName +import ru.dbotthepony.mc.otm.datagen.DataGen import ru.dbotthepony.mc.otm.datagen.modLocation -import java.util.LinkedList +import java.util.* typealias BlockStateTransform = (state: BlockState, builder: ConfiguredModel.Builder<*>, path: String) -> String? private val EMPTY: BlockStateTransform = { _, _, _ -> null } @@ -95,6 +97,22 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve return this } + fun simplePillar(vararg blocks: Block): MatteryBlockStateProvider { + for (block in blocks) { + exec { + getVariantBuilder(block) + .partialState().with(RotatedPillarBlock.AXIS, Direction.Axis.Y) + .modelForState().modelFile(models().getExistingFile(block.registryName)).addModel() + .partialState().with(RotatedPillarBlock.AXIS, Direction.Axis.Z) + .modelForState().modelFile(models().getExistingFile(block.registryName)).rotationX(90).addModel() + .partialState().with(RotatedPillarBlock.AXIS, Direction.Axis.X) + .modelForState().modelFile(models().getExistingFile(block.registryName)).rotationX(90).rotationY(90).addModel() + } + } + + return this + } + fun simpleBlockM(blocks: Collection): MatteryBlockStateProvider { blocks.forEach(this::simpleBlockM) return this