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 f0bbc3120..20938029d 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -219,6 +219,86 @@ object DataGen { } } + private fun MatteryBlockModelProvider.bars(name: String, parent: String, texture: ResourceLocation): ModelFile { + return withExistingParent(name, "block/$parent") + .texture("bars", texture) + .texture("edge", texture) + .texture("particle", texture) + .renderType("cutout_mipped") + } + + @Suppress("LocalVariableName") + fun bars(block: Block, texture: ResourceLocation) { + val name = block.registryName?.path ?: throw IllegalStateException("Invalid state of glass pane $block") + + val cap = "${name}_cap" + val cap_alt = "${name}_cap_alt" + val post = "${name}_post" + val post_ends = "${name}_post_ends" + val side = "${name}_side" + val side_alt = "${name}_side_alt" + + var mdl_cap by Delegates.notNull() + var mdl_cap_alt by Delegates.notNull() + var mdl_post by Delegates.notNull() + var mdl_post_ends by Delegates.notNull() + var mdl_side by Delegates.notNull() + var mdl_side_alt by Delegates.notNull() + + with(blockModelProvider) { + exec { + mdl_cap = bars(cap, "iron_bars_cap", texture) + mdl_cap_alt = bars(cap_alt, "iron_bars_cap_alt", texture) + mdl_post = bars(post, "iron_bars_post", texture) + mdl_post_ends = bars(post_ends, "iron_bars_post_ends", texture) + mdl_side = bars(side, "iron_bars_side", texture) + mdl_side_alt = bars(side_alt, "iron_bars_side_alt", texture) + } + } + + @Suppress("name_shadowing") + blockStateProvider.exec { + with(blockStateProvider.getMultipartBuilder(block)) { + part().modelFile(mdl_post_ends).addModel() + + part().modelFile(mdl_post).addModel() + .condition(IronBarsBlock.EAST, false) + .condition(IronBarsBlock.WEST, false) + .condition(IronBarsBlock.NORTH, false) + .condition(IronBarsBlock.SOUTH, false) + + part().modelFile(mdl_cap).addModel() + .condition(IronBarsBlock.EAST, false) + .condition(IronBarsBlock.WEST, false) + .condition(IronBarsBlock.NORTH, true) + .condition(IronBarsBlock.SOUTH, false) + + part().modelFile(mdl_cap).rotationY(90).addModel() + .condition(IronBarsBlock.EAST, true) + .condition(IronBarsBlock.WEST, false) + .condition(IronBarsBlock.NORTH, false) + .condition(IronBarsBlock.SOUTH, false) + + part().modelFile(mdl_cap_alt).addModel() + .condition(IronBarsBlock.EAST, false) + .condition(IronBarsBlock.WEST, false) + .condition(IronBarsBlock.NORTH, false) + .condition(IronBarsBlock.SOUTH, true) + + part().modelFile(mdl_cap_alt).rotationY(90).addModel() + .condition(IronBarsBlock.EAST, false) + .condition(IronBarsBlock.WEST, true) + .condition(IronBarsBlock.NORTH, false) + .condition(IronBarsBlock.SOUTH, false) + + part().modelFile(mdl_side).addModel().condition(IronBarsBlock.NORTH, true) + part().modelFile(mdl_side).rotationY(90).addModel().condition(IronBarsBlock.EAST, true) + part().modelFile(mdl_side_alt).addModel().condition(IronBarsBlock.SOUTH, true) + part().modelFile(mdl_side_alt).rotationY(90).addModel().condition(IronBarsBlock.WEST, true) + } + } + } + fun door(block: Block, textureTop: ResourceLocation, textureBottom: ResourceLocation) { var doorBottomLeft by Delegates.notNull() var doorBottomLeftOpen by Delegates.notNull() 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 1b0c4dd43..bc1ecb353 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt @@ -278,7 +278,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr DataGen.pane(glass, textureSide, textureRailing) } - DataGen.pane(MBlocks.TRITANIUM_BARS, ResourceLocation(DataGen.MOD_ID,"block/decorative/tritanium_bars"), ResourceLocation(DataGen.MOD_ID,"block/decorative/tritanium_bars")) + DataGen.bars(MBlocks.TRITANIUM_BARS, ResourceLocation(DataGen.MOD_ID, "block/decorative/tritanium_bars")) blockStateProvider.block(MBlocks.ENGINE) itemModelProvider.block(MItems.ENGINE)