Disallow to specify seed mix as zero to avoid EXTREMELY unlikely case where world's seed is zero, and we are generating chunk at 0, 0, in which Xoshiro256 will generate an exception

This commit is contained in:
DBotThePony 2025-03-05 10:25:17 +07:00
parent 92846cbad0
commit 0c15c93dcd
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.worldgen.placement
import com.github.benmanes.caffeine.cache.Caffeine
import com.github.benmanes.caffeine.cache.Scheduler
import com.mojang.serialization.Codec
import com.mojang.serialization.DataResult
import com.mojang.serialization.MapCodec
import com.mojang.serialization.codecs.RecordCodecBuilder
import it.unimi.dsi.fastutil.HashCommon
@ -102,7 +103,7 @@ abstract class AbstractEnormousPlacement(val parameters: Parameters) : Placement
val PARAMETERS_CODEC: MapCodec<Parameters> = RecordCodecBuilder.mapCodec {
it.group(
Codec.INT.minRange(0).fieldOf("chunk_scan_range").forGetter(Parameters::chunkScanRange),
Codec.LONG.fieldOf("seed_mix").forGetter(Parameters::seedMix),
Codec.LONG.validate { if (it == 0L) DataResult.error { "Due to technical limitations, seed_mix can not be zero" } else DataResult.success(it) }.fieldOf("seed_mix").forGetter(Parameters::seedMix),
CODEC.listOf().fieldOf("placement").forGetter(Parameters::placementModifiers),
).apply(it, ::Parameters)
}