Add generics to ColoredDecorativeBlock so manual casts are no longer required

This commit is contained in:
DBotThePony 2025-01-22 22:11:42 +07:00
parent b4c8676daa
commit b01dba2a21
Signed by: DBot
GPG Key ID: DCC23B5715498507
5 changed files with 27 additions and 27 deletions

View File

@ -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)
}

View File

@ -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
)

View File

@ -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))
}

View File

@ -15,9 +15,9 @@ import java.util.function.Supplier
* Colored only
*/
@Suppress("unused")
open class ColoredDecorativeBlock(
open class ColoredDecorativeBlock<B : Block>(
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, Supplier<Item>>(DyeColor::class.java)
protected val blockMap = EnumMap<DyeColor, Supplier<Block>>(DyeColor::class.java)
protected val blockMap = EnumMap<DyeColor, Supplier<B>>(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<DyeColor, Block> by lazy {
val blocks: Map<DyeColor, B> 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<Block> {
return ColoredDecorativeBlock(baseName) {
Block(provider.invoke(it))
}

View File

@ -26,17 +26,17 @@ import java.util.stream.Stream
/**
* Base + Colored
*/
class DecorativeBlock(
class DecorativeBlock<B : Block>(
baseName: String,
private val provider: (DyeColor?) -> Block,
) : ColoredDecorativeBlock(baseName, provider) {
private var _block: Supplier<Block> by WriteOnce()
private val provider: (DyeColor?) -> B,
) : ColoredDecorativeBlock<B>(baseName, provider) {
private var _block: Supplier<B> by WriteOnce()
private var _item: Supplier<Item> by WriteOnce()
val block: Block get() = _block.get()
val item: Item get() = _item.get()
val allBlocks: Map<DyeColor?, Block> by lazy {
val allBlocks: Map<DyeColor?, B> 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<Block> {
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<Block> {
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<RotatableMatteryBlock> {
return DecorativeBlock(baseName) {
object : RotatableMatteryBlock(provider.invoke(it)) {
override fun rotationFreedom(): BlockRotationFreedom {