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 c38e49530..72dc43e84 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -8,9 +8,11 @@ import net.minecraft.world.level.block.IronBarsBlock 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.TrapDoorBlock import net.minecraft.world.level.block.state.properties.BlockStateProperties import net.minecraft.world.level.block.state.properties.DoorHingeSide import net.minecraft.world.level.block.state.properties.DoubleBlockHalf +import net.minecraft.world.level.block.state.properties.Half import net.minecraftforge.client.model.generators.ConfiguredModel import net.minecraftforge.client.model.generators.ModelFile import net.minecraftforge.eventbus.api.SubscribeEvent @@ -304,6 +306,50 @@ object DataGen { } } + fun trapdoor(block: Block, texture: ResourceLocation) { + var trapdoorBottom: ModelFile? = null + var trapdoorTop: ModelFile? = null + var trapdoorOpen: ModelFile? = null + + val trapdoorBottomName = "${block.registryName!!.path}_bottom" + val trapdoorTopName = "${block.registryName!!.path}_top" + val trapdoorOpenName = "${block.registryName!!.path}_open" + + blockModelProvider.exec { + trapdoorBottom = it.trapdoorBottom(trapdoorBottomName, texture).renderType("cutout") + trapdoorTop = it.trapdoorTop(trapdoorTopName, texture).renderType("cutout") + trapdoorOpen = it.trapdoorOpen(trapdoorOpenName, texture).renderType("cutout") + } + + @Suppress("name_shadowing") + blockStateProvider.exec { + val trapdoorBottom = checkNotNull(trapdoorBottom) { "trapdoorBottom is null" } + val trapdoorTop = checkNotNull(trapdoorTop) { "trapdoorTop is null" } + val trapdoorOpen = checkNotNull(trapdoorOpen) { "trapdoorOpen is null" } + + with(blockStateProvider.getMultipartBuilder(block)) { + for (facing in TrapDoorBlock.FACING.possibleValues) { + for (open in listOf(false, true)) { + for (half in TrapDoorBlock.HALF.possibleValues) { + part().modelFile( + if (open) trapdoorOpen else when (half!!) { + Half.TOP -> trapdoorTop + Half.BOTTOM -> trapdoorBottom + } + ).rotationY( + facing.toYRotBlockstate() + ).addModel() + .condition(TrapDoorBlock.FACING, facing) + .condition(TrapDoorBlock.OPEN, open) + .condition(TrapDoorBlock.HALF, half) + .end() + } + } + } + } + } + } + fun decoratives(list: ColoredDecorativeBlock) { for (block in list.blocks.values) { decorativeCubeAll(block) @@ -406,6 +452,7 @@ object DataGen { AddEnglishLanguage(languageProvider) door(MBlocks.TRITANIUM_DOOR, modLocation("block/decorative/tritanium_door_top"), modLocation("block/decorative/tritanium_door_bottom")) + trapdoor(MBlocks.TRITANIUM_TRAPDOOR, modLocation("block/decorative/tritanium_trapdoor")) addBlockModels(blockModelProvider) addDecorativeData(blockStateProvider, itemModelProvider, blockModelProvider) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt index 036bdfed3..3c3bc4241 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/items/ItemModels.kt @@ -91,6 +91,7 @@ fun addItemModels(provider: MatteryItemModelProvider) { provider.generated(MItems.MATTER_DUST) provider.generated(MItems.TRITANIUM_DOOR) + provider.block(MItems.TRITANIUM_TRAPDOOR, "tritanium_trapdoor_bottom") for (item in MRegistry.CARGO_CRATES.allItems.values) { provider.block(item, "${item.registryName!!.path}_closed")