I'm trying to figure out how to add a seed ("long seed") to this function:
LevelStem createLevel(MinecraftServer server, ResourceKey<Level> levelType, long seed)
{
if (levelType == Level.OVERWORLD) {
ServerLevel oldLevel = server.getLevel(Level.OVERWORLD);
} else if (levelType == Level.NETHER) {
ServerLevel oldLevel = server.getLevel(Level.NETHER);
} else if (levelType == Level.END) {
ServerLevel oldLevel = server.getLevel(Level.END);
} else {
throw new CommandRuntimeException(Component.literal(String.format("Error copying dimension: %s", "Only the overworld, nether, and end are supported")));
}
ServerLevel oldLevel = server.overworld();
DynamicOps<Tag> ops = RegistryOps.create(NbtOps.INSTANCE, server.registryAccess());
ChunkGenerator oldChunkGenerator = oldLevel.getChunkSource().getGenerator();
ChunkGenerator newChunkGenerator = ChunkGenerator.CODEC.encodeStart(ops, oldChunkGenerator)
.flatMap(nbt -> ChunkGenerator.CODEC.parse(ops, nbt))
.getOrThrow(false, s ->
{
throw new CommandRuntimeException(Component.literal(String.format("Error copying dimension: %s", s)));
});
Holder<DimensionType> typeHolder = oldLevel.dimensionTypeRegistration();
// newChunkGenerator.withSeed(server.getLevel(Level.OVERWORLD).getSeed()); DOES NOT WORK
return new LevelStem(typeHolder, newChunkGenerator);
}
I could have used ChunkGenerator#withSeed(long seed) in 1.16/1.17, but where did it move to for 1.19? If It was removed, how do I mimic this functionality?