Fix blockseed for on_generated in mapgen env

This commit is contained in:
sfan5 2024-07-22 16:31:46 +02:00 committed by GitHub
parent a7a719261e
commit 02f40e5b0d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 8 additions and 5 deletions

@ -692,7 +692,7 @@ void *EmergeThread::run()
"EmergeThread: Lua on_generated", SPT_AVG);
try {
m_script->on_generated(&bmdata);
m_script->on_generated(&bmdata, m_mapgen->blockseed);
} catch (const LuaError &e) {
m_server->setAsyncFatalError(e);
error = true;

@ -50,6 +50,7 @@ class ModApiMapgen;
// Structure containing inputs/outputs for chunk generation
struct BlockMakeData {
MMVManip *vmanip = nullptr;
// Global map seed
u64 seed = 0;
v3s16 blockpos_min;
v3s16 blockpos_max;

@ -167,6 +167,7 @@ private:
*/
class Mapgen {
public:
// Seed used for noises (truncated from the map seed)
s32 seed = 0;
int water_level = 0;
int mapgen_limit = 0;
@ -180,6 +181,7 @@ public:
EmergeParams *m_emerge = nullptr;
const NodeDefManager *ndef = nullptr;
// Chunk-specific seed used to place ores and decorations
u32 blockseed;
s16 *heightmap = nullptr;
biome_t *biomemap = nullptr;

@ -45,7 +45,7 @@ void ScriptApiMapgen::on_shutdown()
runCallbacks(0, RUN_CALLBACKS_MODE_FIRST);
}
void ScriptApiMapgen::on_generated(BlockMakeData *bmdata)
void ScriptApiMapgen::on_generated(BlockMakeData *bmdata, u32 seed)
{
SCRIPTAPI_PRECHECKHEADER
@ -66,7 +66,7 @@ void ScriptApiMapgen::on_generated(BlockMakeData *bmdata)
lua_pushvalue(L, vmanip);
push_v3s16(L, minp);
push_v3s16(L, maxp);
lua_pushnumber(L, bmdata->seed);
lua_pushnumber(L, seed);
runCallbacks(4, RUN_CALLBACKS_MODE_FIRST);
lua_pop(L, 1); // return val

@ -35,6 +35,6 @@ public:
void on_mods_loaded();
void on_shutdown();
// Called after generating a piece of map before writing it to the map
void on_generated(BlockMakeData *bmdata);
// Called after generating a piece of map, before writing it to the map
void on_generated(BlockMakeData *bmdata, u32 seed);
};