Compare commits

...

3 Commits

6 changed files with 30 additions and 31 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

@ -597,7 +597,7 @@ infix fun FluidStack.isNotSameAs(other: FluidStack): Boolean {
data class DoublePair(val first: Double, val second: Double)
// normal distribution via Box-Muller
// normal distribution via Marsaglia polar method
fun RandomGenerator.nextNormalDoubles(stddev: Double, mean: Double): DoublePair {
var rand1: Double
var rand2: Double
@ -607,7 +607,7 @@ fun RandomGenerator.nextNormalDoubles(stddev: Double, mean: Double): DoublePair
rand1 = 2.0 * nextDouble() - 1.0
rand2 = 2.0 * nextDouble() - 1.0
distSqr = rand1 * rand1 + rand2 * rand2
} while (distSqr >= 1)
} while (distSqr >= 1.0 || distSqr == 0.0)
val mapping = sqrt(-2.0 * ln(distSqr) / distSqr)
@ -617,8 +617,7 @@ fun RandomGenerator.nextNormalDoubles(stddev: Double, mean: Double): DoublePair
)
}
// All Mojang's random sources use MarsagliaPolarGaussian for generating normal distributed doubles,
// which is Box-Muller transform already, so we can use that
// All Mojang's random sources use MarsagliaPolarGaussian for generating normal distributed doubles
fun RandomSource.nextNormalDoubles(stddev: Double, mean: Double): DoublePair {
return DoublePair(
nextGaussian() * stddev + mean,

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 {