mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/LCE-Revelations.git
synced 2026-06-02 05:47:29 +00:00
Add seed validation for server world creation and override-seed property
The dedicated server previously picked a completely random seed with no biome diversity checks (the client validates but the server skipped it). On top of that, the client's findSeed() was hardcoded to only check a 54-chunk (Classic) area, so Large worlds had no diversity guarantee beyond the center. New server worlds now use findSeed() scaled to the full target world size. Added override-seed in server.properties to fix existing worlds without deleting them.
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
#include "../../Minecraft.World/TilePos.h"
|
||||
#include "../../Minecraft.World/compression.h"
|
||||
#include "../../Minecraft.World/OldChunkStorage.h"
|
||||
#include "../../Minecraft.World/BiomeSource.h"
|
||||
#include "../../Minecraft.World/LevelType.h"
|
||||
#include "../../Minecraft.World/net.minecraft.world.level.tile.h"
|
||||
#include "../../Minecraft.World/Random.h"
|
||||
|
||||
@@ -545,6 +547,12 @@ int main(int argc, char **argv)
|
||||
app.SetGameNewHellScale(serverProperties.worldHellScale);
|
||||
#endif
|
||||
|
||||
if (serverProperties.hasOverrideSeed)
|
||||
{
|
||||
LogInfof("startup", "Seed override active: %lld", serverProperties.overrideSeed);
|
||||
app.SetSeedOverride(serverProperties.overrideSeed);
|
||||
}
|
||||
|
||||
StorageManager.SetSaveDisabled(serverProperties.disableSaving);
|
||||
// Read world name and fixed save-id from server.properties
|
||||
// Delegate load-vs-create decision to WorldManager
|
||||
@@ -584,9 +592,17 @@ int main(int argc, char **argv)
|
||||
{
|
||||
param->seed = config.seed;
|
||||
}
|
||||
else if (worldBootstrap.saveData == nullptr)
|
||||
{
|
||||
// Only run seed validation when creating a brand-new world.
|
||||
// Existing worlds already have their seed in level.dat.
|
||||
LogInfof("startup", "Finding seed with biome diversity for %d-chunk world...", config.worldSizeChunks);
|
||||
param->seed = BiomeSource::findSeed(LevelType::lvl_normal, config.worldSizeChunks);
|
||||
LogInfof("startup", "Selected seed: %lld", param->seed);
|
||||
}
|
||||
else
|
||||
{
|
||||
param->seed = (new Random())->nextLong();
|
||||
param->seed = (new Random())->nextLong(); // placeholder; level.dat seed takes priority
|
||||
}
|
||||
#ifdef _LARGE_WORLDS
|
||||
param->xzSize = (unsigned int)config.worldSizeChunks;
|
||||
|
||||
Reference in New Issue
Block a user