-- 初始化函数:游戏加载完成后执行 AddSimPostInit(function() -- 1. 检测当前世界是否为洞穴(主世界) local world = TheWorld if world ~= nil and world:HasTag("cave") and world.ismastershard then print("[CaveAsMaster] 检测到洞穴为主世界,开始修复...") -- 2. 自动生成可用的洞穴楼梯(出口) local function SpawnCaveExit() -- 生成在玩家出生点附近(优先),无玩家则生成在世界中心 local spawn_pos = Vector3(0, 0, 0) if ThePlayer ~= nil then spawn_pos = ThePlayer:GetPosition() end -- 检查是否已存在楼梯,避免重复生成 local exits = TheSim:FindEntities(spawn_pos.x, spawn_pos.y, spawn_pos.z, 50, {"cave_exit"}) if #exits == 0 then -- 生成楼梯并设置为可用(打开、解锁) local exit = SpawnPrefab("cave_exit") exit.Transform:SetPosition(spawn_pos.x, spawn_pos.y, spawn_pos.z) exit.components.door:Open(true) exit.components.door:Lock(false) print("[CaveAsMaster] 已生成可用的洞穴楼梯,位置:", spawn_pos) else print("[CaveAsMaster] 已存在洞穴楼梯,无需重复生成") end end -- 3. 修复季节同步(默认设为秋天,可自定义) local function FixSeasonSync() -- 强制设置季节(autumn/winter/spring/summer) world:PushEvent("ms_setseason", "autumn") -- 重置天数为1,避免时间错乱 world:PushEvent("ms_setcycles", 1) -- 强制设为白天 world:PushEvent("ms_settime", 0.5) print("[CaveAsMaster] 已修复季节/时间同步") end -- 4. 延迟执行(确保世界加载完成) -- 生成楼梯 SpawnCaveExit() -- 修复季节 FixSeasonSync() -- 5. 可选:禁用地表分片(纯洞穴世界) -- 取消下面注释即可禁用地表 -- if world.shard ~= nil then -- world.shard:DisableShard("Caves") -- 禁用原地表分片 -- end end end) -- 玩家加入时提示(可选) AddPlayerPostInit(function(player) if TheWorld:HasTag("cave") and TheWorld.ismastershard then player:DoTaskInTime(3, function() player.components.talker:Say("洞穴已设为主世界,楼梯已生成!") end) end end)