Compare commits
3 Commits
99ebeddae4
...
a93fe595be
Author | SHA1 | Date | |
---|---|---|---|
a93fe595be | |||
b01dba2a21 | |||
b4c8676daa |
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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))
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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))
|
||||
}
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user