存档文件
mods/Siren_Cultivation/Data/ 中的五份文件并不是设置。它们是服务器自身的存档状态,之所以经由与其他一切相同的配置机制写出,纯粹是因为这套机制是本引擎将服务器级数组落盘的成熟途径。
请勿在服务器运行期间手动编辑它们。 每一份文件都由一个管理器类在内存中持有当前的权威副本,并在每一次变动时整份重写 —— 因此你在磁盘上所做的任何改动,都会在该系统下一次发生任何事情时被悄然覆盖。若你确有必要精确修正其中一份,请先停服,编辑,再启动。
它们同样不带 ConfigName 与 ConfigVersion,因为并不存在需要版本化或迁移的、面向用户的结构。
以下所述皆为各文件存了什么,而非如何调整。这些系统的可调设置位于宗门社群配置。
宗门数据
服务器上的每一个宗门,位于路径 mods/Siren_Cultivation/Data/SectsData.json。由 SectManager 在内存中持有。
一个 Sects 数组。每个宗门记录其名称、宗主的 UUID、门人与长老名录、入门规矩与任何未决的入门申请、宗训,以及 —— 若其持有 —— 大殿:所在世界、大殿区块的 X 与 Z,以及该区块所摇出的灵脉阶位。已在大殿上镌刻功法的宗门还会存下那是哪一门功法,因为大殿一失,此法便须从每一名门人处收回。
见宗门。
阵法数据
服务器上每一座已布下的阵法,位于路径 mods/Siren_Cultivation/Data/FormationsData.json。由 FormationManager 在内存中持有。
一个 Formations 数组。每座阵法记录其类型、所锚定的世界与区块、以区块计的半径,以及它的掌阵者 —— 个人布设者记其 UUID,宗门掌控者记其宗门名 —— 另加创建时间。
见阵法。
战事数据
进行中的围攻与战后冷却,位于路径 mods/Siren_Cultivation/Data/WarsData.json。由 WarManager 在内存中持有。
两个数组。Sieges 存放每一场进行中的围攻:攻守双方的宗门名、争议大殿所在的世界与区块、攻方迄今累积的占据时长,以及围攻战期还剩多少。Cooldowns 存放每一个当前免受围攻的宗门名,及其免战到期的时间戳。
正因剩余战期与冷却到期时间都被持久化了,围攻中途重启服务器不会白送任何一方一次重置。
见宗门攻伐。
洞府数据
每一处已开辟的洞府与每一眼宗门山门灵泉,位于路径 mods/Siren_Cultivation/Data/DwellingsData.json。由 DwellingManager 在内存中持有。
一个 Dwellings 数组。每条记录其主人的 UUID(山门灵泉则记宗门名)、所覆盖的世界、区块与半径、其下的灵脉阶位、主人的境界序号(它决定灵泉的池容上限)、灵泉中当前所蓄的灵气、该灵气累积至的时间戳、已付供奉的到期时间戳,以及创建时间。
这两个时间戳,正是洞府按墙上时钟而非按 tick 累积的原因:灵泉的增长是由 LastAccrualMillis 与当下之间的间隔算出的,因此它能跨越一次重启或一段长久的离开而正确蓄满,且无人在场时服务器分毫不必操劳。
见洞府。
排行榜数据
服务器级的排名索引,位于路径 mods/Siren_Cultivation/Data/LeaderboardData.json。由 CultivationLeaderboard 在内存中持有。
一个 Entries 数组,每位已知修士一条:其 UUID、最后一次所见的用户名、境界与阶段序号,以及所存蓄的灵气。
它之所以被持久化而非纯粹留在内存里,是因为宗门排名要由它汇总而来。当这份索引只存在于内存中时,自上次重启以来未曾登入的门人计为零分,于是宗门榜排的是「谁恰好在线」,而非其实际的门人阵容。