From 0ec081a3ae4d0a3bda531ce0ae613847d9795cff Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 22 Nov 2024 09:47:43 +0300 Subject: [PATCH] feat: load world scripts after content load --- src/content/ContentLoader.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index baf5e06e..6c94076d 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -707,18 +707,6 @@ void ContentLoader::load() { auto folder = pack->folder; - // Load main world script - fs::path scriptFile = folder / fs::path("scripts/world.lua"); - if (fs::is_regular_file(scriptFile)) { - scripting::load_world_script( - env, - pack->id, - scriptFile, - pack->id + ":scripts/world.lua", - runtime->worldfuncsset - ); - } - // Load world generators fs::path generatorsDir = folder / fs::u8path("generators"); foreach_file(generatorsDir, [this](const fs::path& file) { @@ -830,6 +818,21 @@ static void load_scripts(Content& content, ContentUnitDefs& units) { void ContentLoader::loadScripts(Content& content) { load_scripts(content, content.blocks); load_scripts(content, content.items); + + for (const auto& [packid, runtime] : content.getPacks()) { + const auto& pack = runtime->getInfo(); + // Load main world script + fs::path scriptFile = pack.folder / fs::path("scripts/world.lua"); + if (fs::is_regular_file(scriptFile)) { + scripting::load_world_script( + runtime->getEnvironment(), + pack.id, + scriptFile, + pack.id + ":scripts/world.lua", + runtime->worldfuncsset + ); + } + } } void ContentLoader::loadResources(ResourceType type, const dv::value& list) {