From b01dba2a2183d18eb335a93f90e9617b6336a4a5 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 22 Jan 2025 22:11:42 +0700 Subject: [PATCH] Add generics to ColoredDecorativeBlock so manual casts are no longer required --- .../ru/dbotthepony/mc/otm/datagen/DataGen.kt | 12 ++++++------ .../dbotthepony/mc/otm/datagen/DecorativeData.kt | 10 +++++----- .../otm/datagen/lang/MatteryLanguageProvider.kt | 2 +- .../registry/objects/ColoredDecorativeBlock.kt | 14 +++++++------- .../mc/otm/registry/objects/DecorativeBlock.kt | 16 ++++++++-------- 5 files changed, 27 insertions(+), 27 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 2b98ecd8b..869892f85 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -427,7 +427,7 @@ object DataGen { } } - fun decoratives(list: ColoredDecorativeBlock) { + fun decoratives(list: ColoredDecorativeBlock<*>) { for (block in list.blocks.values) { decorativeCubeAll(block) } @@ -437,7 +437,7 @@ object DataGen { } } - fun decoratives(list: DecorativeBlock) { + fun decoratives(list: DecorativeBlock<*>) { for (block in list.allBlocks.values) { decorativeCubeAll(block) } @@ -447,7 +447,7 @@ object DataGen { } } - fun decoratives(subdir: String, list: ColoredDecorativeBlock) { + fun decoratives(subdir: String, list: ColoredDecorativeBlock<*>) { for (block in list.blocks.values) { decorativeCubeAll(subdir, block) } @@ -457,7 +457,7 @@ object DataGen { } } - fun decoratives(subdir: String, list: DecorativeBlock) { + fun decoratives(subdir: String, list: DecorativeBlock<*>) { for (block in list.allBlocks.values) { decorativeCubeAll(subdir, block) } @@ -467,7 +467,7 @@ object DataGen { } } - fun decoratives(subdir: String, suffix: String, list: ColoredDecorativeBlock) { + fun decoratives(subdir: String, suffix: String, list: ColoredDecorativeBlock<*>) { for (block in list.blocks.values) { decorativeCubeAll(subdir, suffix, block) } @@ -477,7 +477,7 @@ object DataGen { } } - fun decoratives(subdir: String, suffix: String, list: DecorativeBlock) { + fun decoratives(subdir: String, suffix: String, list: DecorativeBlock<*>) { for (block in list.allBlocks.values) { decorativeCubeAll(subdir, suffix, block) } 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 aeb72318b..f0bee8fc8 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DecorativeData.kt @@ -49,7 +49,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr } for ((color, block) in MRegistry.TRITANIUM_STAIRS.allBlocks) { - DataGen.decorativeStairs(block as StairBlock, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path) + DataGen.decorativeStairs(block, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path) } for ((color, block) in MRegistry.TRITANIUM_PRESSURE_PLATE.allBlocks) { @@ -77,7 +77,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr for ((color, block) in MRegistry.TRITANIUM_SLAB.allBlocks) { blockStateProvider.exec { blockStateProvider.slabBlock( - block as SlabBlock, + block, MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!, modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/${MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path}") ) @@ -87,7 +87,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr for ((color, block) in MRegistry.FLOOR_TILES_SLAB.blocks) { blockStateProvider.exec { blockStateProvider.slabBlock( - block as SlabBlock, + block, MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!, modLocation("${DataGen.DECORATIVE_BLOCK_LOCATION}/${MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!.path}") ) @@ -96,7 +96,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr for ((color, block) in MRegistry.FLOOR_TILES_STAIRS.blocks) { DataGen.decorativeStairs( - block as StairBlock, + block, MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!.path, MRegistry.FLOOR_TILES.blocks[color]!!.registryName!!.path ) @@ -104,7 +104,7 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr for ((color, block) in MRegistry.TRITANIUM_WALL.allBlocks) { DataGen.decorativeWall( - block as WallBlock, + block, sideTexture = MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path, topTexture = MRegistry.TRITANIUM_BLOCK.allBlocks[color]!!.registryName!!.path ) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt index c638eabba..3bb71b5b4 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/lang/MatteryLanguageProvider.kt @@ -161,7 +161,7 @@ class MatteryLanguageProvider(private val gen: DataGenerator) { .put(DyeColor.BLACK, black) .build() - fun add(list: ColoredDecorativeBlock, toFormat: String) { + fun add(list: ColoredDecorativeBlock<*>, toFormat: String) { for ((color, target) in mapped) { slave.add(list.blocks[color]!!, toFormat.format(target)) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt index 1b1a52221..bf904c2da 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/ColoredDecorativeBlock.kt @@ -15,9 +15,9 @@ import java.util.function.Supplier * Colored only */ @Suppress("unused") -open class ColoredDecorativeBlock( +open class ColoredDecorativeBlock( val baseName: String, - private val provider: (DyeColor) -> Block, + private val provider: (DyeColor) -> B, ) : IBlockItemRegistryAcceptor { var registeredItems = false private set @@ -26,7 +26,7 @@ open class ColoredDecorativeBlock( private set protected val itemMap = EnumMap>(DyeColor::class.java) - protected val blockMap = EnumMap>(DyeColor::class.java) + protected val blockMap = EnumMap>(DyeColor::class.java) fun forEachItem(consumer: (String, DyeColor, Item) -> Unit) { MRegistry.DYE_ORDER.forEach { @@ -34,7 +34,7 @@ open class ColoredDecorativeBlock( } } - fun forEachBlock(consumer: (String, DyeColor, Block) -> Unit) { + fun forEachBlock(consumer: (String, DyeColor, B) -> Unit) { MRegistry.DYE_ORDER.forEach { consumer.invoke(it.name.lowercase(), it, getBlock(it)) } @@ -45,12 +45,12 @@ open class ColoredDecorativeBlock( return itemMap[dyeColor]!!.get() } - fun getBlock(dyeColor: DyeColor): Block { + fun getBlock(dyeColor: DyeColor): B { check(registeredBlocks) { "Didn't register items yet" } return blockMap[dyeColor]!!.get() } - val blocks: Map by lazy { + val blocks: Map by lazy { check(registeredBlocks) { "Didn't register blocks yet" } SupplierMap(MRegistry.DYE_ORDER.map { it to blockMap[it]!! }) } @@ -84,7 +84,7 @@ open class ColoredDecorativeBlock( } companion object { - fun simple(baseName: String, provider: (DyeColor) -> BlockBehaviour.Properties): ColoredDecorativeBlock { + fun simple(baseName: String, provider: (DyeColor) -> BlockBehaviour.Properties): ColoredDecorativeBlock { return ColoredDecorativeBlock(baseName) { Block(provider.invoke(it)) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt index 28fad5f05..50152bc42 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/objects/DecorativeBlock.kt @@ -26,17 +26,17 @@ import java.util.stream.Stream /** * Base + Colored */ -class DecorativeBlock( +class DecorativeBlock( baseName: String, - private val provider: (DyeColor?) -> Block, -) : ColoredDecorativeBlock(baseName, provider) { - private var _block: Supplier by WriteOnce() + private val provider: (DyeColor?) -> B, +) : ColoredDecorativeBlock(baseName, provider) { + private var _block: Supplier by WriteOnce() private var _item: Supplier by WriteOnce() val block: Block get() = _block.get() val item: Item get() = _item.get() - val allBlocks: Map by lazy { + val allBlocks: Map by lazy { check(registeredBlocks) { "Didn't register items yet" } SupplierMap(Streams.concat(MRegistry.DYE_ORDER.stream().map { it to blockMap[it]!! }, Stream.of(null to _block))) } @@ -57,19 +57,19 @@ class DecorativeBlock( } companion object { - fun simple(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { + fun simple(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { return DecorativeBlock(baseName) { Block(provider.invoke(it)) } } - fun rotatable(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { + fun rotatable(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { return DecorativeBlock(baseName) { RotatableMatteryBlock(provider.invoke(it)) } } - fun rotatable(baseName: String, shape: BlockShape, rotationFreedom: BlockRotationFreedom, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { + fun rotatable(baseName: String, shape: BlockShape, rotationFreedom: BlockRotationFreedom, provider: (DyeColor?) -> BlockBehaviour.Properties): DecorativeBlock { return DecorativeBlock(baseName) { object : RotatableMatteryBlock(provider.invoke(it)) { override fun rotationFreedom(): BlockRotationFreedom {