Compare commits

...

3 Commits

3 changed files with 18 additions and 34 deletions

View File

@ -37,6 +37,13 @@ class FlywheelBatteryBlockEntity(blockPos: BlockPos, blockState: BlockState) : M
private var multiblock: ShapedMultiblock? = null
private var lastHeight = -1
var batteryLevel = Decimal.ZERO
set(value) {
if (field != value) {
field = value
markDirtyFast()
}
}
private var cachedChargeEfficiency = Decimal.ONE
val formed: Boolean

View File

@ -188,24 +188,6 @@ fun <T : Enum<T>> T.prev(values: Array<out T>): T {
return values[next]
}
fun IntArray.shuffle(random: RandomGenerator) {
for (i in lastIndex downTo 1) {
val j = random.nextInt(i + 1)
val copy = this[i]
this[i] = this[j]
this[j] = copy
}
}
fun <T> MutableList<T>.shuffle(random: RandomGenerator) {
for (i in lastIndex downTo 1) {
val j = random.nextInt(i + 1)
val copy = this[i]
this[i] = this[j]
this[j] = copy
}
}
fun IntArray.shuffle(random: RandomSource) {
for (i in lastIndex downTo 1) {
val j = random.nextInt(i + 1)
@ -216,12 +198,7 @@ fun IntArray.shuffle(random: RandomSource) {
}
fun <T> MutableList<T>.shuffle(random: RandomSource) {
for (i in lastIndex downTo 1) {
val j = random.nextInt(i + 1)
val copy = this[i]
this[i] = this[j]
this[j] = copy
}
return Util.shuffle(this, random)
}
fun <T> List<T>.random(random: RandomGenerator): T {

View File

@ -7,8 +7,8 @@ import net.minecraft.world.level.levelgen.PositionalRandomFactory
import java.lang.StringBuilder
import java.util.random.RandomGenerator
class CMWCRandom(seed: Long = System.nanoTime(), private val stateSize: Int = CMWC_DEFAULT_STATE_SIZE) : RandomGenerator, RandomSource {
private val state = IntArray(stateSize)
class CMWCRandom(seed: Long = System.nanoTime()) : RandomGenerator, RandomSource {
private val state = IntArray(CMWC_STATE_SIZE)
private var carry = 0
private var stateIndex = 0
private val gaussian = MarsagliaPolarGaussian(this)
@ -37,7 +37,7 @@ class CMWCRandom(seed: Long = System.nanoTime(), private val stateSize: Int = CM
}
override fun nextInt(): Int {
stateIndex = (stateIndex + 1) % state.size
stateIndex = (stateIndex + 1).and(CMWC_STATE_SIZE - 1)
val t = 18782L * state[stateIndex] + carry
carry = t.ushr(32).toInt()
@ -83,24 +83,24 @@ class CMWCRandom(seed: Long = System.nanoTime(), private val stateSize: Int = CM
}
override fun fork(): RandomSource {
return CMWCRandom(nextLong(), stateSize)
return CMWCRandom(nextLong())
}
override fun forkPositional(): PositionalRandomFactory {
return Positional(nextLong(), stateSize)
return Positional(nextLong())
}
class Positional(val seed: Long, val stateSize: Int = CMWC_DEFAULT_STATE_SIZE) : PositionalRandomFactory {
class Positional(val seed: Long) : PositionalRandomFactory {
override fun at(x: Int, y: Int, z: Int): RandomSource {
return CMWCRandom(Mth.getSeed(x, y, z).xor(seed), stateSize)
return CMWCRandom(Mth.getSeed(x, y, z).xor(seed))
}
override fun fromHashOf(name: String): RandomSource {
return CMWCRandom(name.hashCode().toLong().xor(seed), stateSize)
return CMWCRandom(name.hashCode().toLong().xor(seed))
}
override fun fromSeed(seed: Long): RandomSource {
return CMWCRandom(seed, stateSize)
return CMWCRandom(seed)
}
override fun parityConfigString(builder: StringBuilder) {
@ -109,7 +109,7 @@ class CMWCRandom(seed: Long = System.nanoTime(), private val stateSize: Int = CM
}
companion object {
const val CMWC_DEFAULT_STATE_SIZE = 256 // 4096
const val CMWC_STATE_SIZE = 256 // 4096
const val CMWC_CARRY_MAX = 809430660
}
}