SirenHytale
本节页面
  1. 修真
  2. 开服指南
  3. 存档文件

存档文件

mods/Siren_Cultivation/Data/ 中的 56 份文件并不是设置。它们是服务器自身的存档状态,之所以经由与其他一切相同的配置机制写出,纯粹是因为这套机制是本引擎将服务器级数组落盘的成熟途径。其中两份 —— CultivationSeasonData.json 与 MarketPriceData.json —— 由各自的系统自行载入,而非在启动时载入,因此要等到该系统首次有东西可存时才会出现。

请勿在服务器运行期间手动编辑它们。 每一份文件都由一个管理器类在内存中持有当前的权威副本,并在每一次变动时整份重写 —— 因此你在磁盘上所做的任何改动,都会在该系统下一次发生任何事情时被悄然覆盖。若你确有必要精确修正其中一份,请先停服,编辑,再启动。

它们同样不带 ConfigName 与 ConfigVersion,因为并不存在需要版本化或迁移的、面向用户的结构。缺失一份文件,或文件中缺失一个键,都只会解码为空 —— 与全新的服务器无异 —— 这正是删除存档文件始终可行的缘故:它会把那一个系统、且仅那一个系统,重置为一张白纸。至于代价,各文件之间相差悬殊,下文每一节或每张表都会指明。其中存放着玩家应得之物 —— 物品、灵石、奖励 —— 的那几份,最值得小心对待。

以下所述皆为各文件存了什么,而非如何调整。这些系统的可调设置位于核心配置、修炼配置、功法配置与宗门社群配置。最先描述的十一份文件各有一节;其余四十四份按领域归入随后的各张表,自已放置的设施起。

宗门数据

服务器上的每一个宗门,位于路径 mods/Siren_Cultivation/Data/SectsData.json。由 SectManager 在内存中持有。

一个 Sects 数组。每个宗门记录其名称、宗主的 UUID、门人与长老名录、入门规矩与任何未决的入门申请、宗训,以及 —— 若其持有 —— 大殿:所在世界、大殿区块的 X 与 Z,以及该区块所摇出的灵脉阶位。已在大殿上镌刻功法的宗门还会存下那是哪一门功法,因为大殿一失,此法便须从每一名门人处收回。

v0.11.1 立有宗门大阵的宗门,还会存下四个大阵键:ArrayRaisedAtMillis(大阵升起的时刻 —— 0 表示没有大阵,所以它既是开关,也是计时的起点)、ArrayRaisedBy(出资者的 UUID,管理员升起的则为空)、ArrayAdminRaised(用管理员测试指令升起的大阵为 true,它不花任何东西,也无需围攻)与 ArrayCostPaid(升起者实际付出的宗门贡献,因此一场中止的围攻恰好退还这个数,重启之后亦然)。0.11.1 之前保存的文件没有这些键,读作没有大阵。

v0.11.2 这里另存三样东西。Protected-Areas 是管理员以 /cultivation admin sectprotect add 划出的、禁止建宗门之地的方块列表 —— 每项记有 Name、World、Center-Chunk-X、Center-Chunk-Z、Radius-Chunks 与 Created-At-Millis;0.11.2 之前保存的文件则没有此项。每个宗门还以四个真实时钟数值存下它的宗门灵脉计时,因此服务器离线时它们也照常累计:VeinQualifiedSinceMillis(大殿首次不间断满足升脉条件的时刻)、VeinAscendedAtMillis(大殿灵脉由丰沛升为龙脉的时刻)、VeinDragonSinceMillis(大殿开始立于龙脉之上的时刻,品阶计时由此起算)与 VeinGrade(上次宣告的品阶,0-3)。0 表示未设置。占取、迁移、夺取或失去大殿,四者一并清零。灵脉的增益本身从不存档,而是由宗门等级与门人名册即时算出。

见宗门。

阵法数据

服务器上每一座已布下的阵法,位于路径 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、最后一次所见的用户名、境界与阶段序号,以及所存蓄的灵气。

它之所以被持久化而非纯粹留在内存里,是因为宗门排名要由它汇总而来。当这份索引只存在于内存中时,自上次重启以来未曾登入的门人计为零分,于是宗门榜排的是「谁恰好在线」,而非其实际的门人阵容。删掉它,这种情形便会重现,直到每名门人下次登入。

另有第二个数组 SeasonSnapshots,是旧的逐存档赛季基线。本版本只读取它,每个账号一次,作为迁移来源;当前的逐账号赛季进度存于修炼赛季数据。

师徒数据

全服每一段师徒之缘,位于路径 mods/Siren_Cultivation/Data/MasterDiscipleData.json。0.8.0 新增。

每段缘分一行 —— 师父的 UUID、弟子的 UUID,以及结缘于何时 —— 另有断缘冷却,用以在一小时内阻止双方结新缘。待答的邀约不在此处:它们只存于内存,120 秒后失效。

论道大会数据

宗门论道大会的状态,位于路径 mods/Siren_Cultivation/Data/TournamentsData.json。0.8.0 新增。

某宗当前正在进行的赛程 —— 轮次、对阵与尚在局中的人 —— 以及逐宗的开赛冷却。一场已结束的大会只留下它的冷却;魁首的称号记在账号上,不存于此。

秘境数据

每一处追踪中的秘境,位于路径 mods/Siren_Cultivation/Data/SecretRealmsData.json。0.8.0 新增。

每处一行:所在世界、锚定区块、何时开启、何时封印、是否已铺设过野兽,以及 —— 若由残片开启 —— 开启者是谁。之所以持久化,是为了让秘境敞开期间的一次重启,不至于留下一处没有计时器与之相系的开启站点。

丹炉数据

已放下的丹炉,位于路径 mods/Siren_Cultivation/Data/CauldronsData.json。0.8.0 新增。

每位修士一行:他的丹炉立于何处。在别处放下丹炉旗是移动这一行而非新增一行 —— 这正是「每位修士一座丹炉」成为数据本身的性质、而非一道检查的原因。

灵田数据

灵田地块,位于路径 mods/Siren_Cultivation/Data/FieldsData.json。0.8.0 新增。

每块地一行 —— 属于谁的洞府,以及已累积多少灵草进度 —— 因为灵田在主人离线时仍在生长,故不能存于玩家组件之中。洞府失效或被舍弃时,其地块随之作废。

网店数据

已缓存的宝阁权益名单,位于路径 mods/Siren_Cultivation/Data/WebStoreData.json。0.8.0 新增。

按已注册的权益分别记录:当前有权的账号 ID,以及该名单上次取回于何时。它是一份缓存,而非记录 —— 删掉它只会多一次提前重取,而一台曾经离线的服务器会继续沿用它最后见到的那份名单,而不是把所有人的权益撤销。

已放置的设施

玩家在世界中放下之物的登记簿。每一份都是一个放置记录的单一数组,由各自的管理器在内存中持有。删掉其中一份,服务器便会忘记那些放置;它不会移除方块本身。

文件存放内容删除后
BeastPensData.json每一座已放置的灵兽栏(Pens)。见灵兽。每座灵兽栏都被遗忘。
SpiritDensData.json每一座已放置的灵兽巢穴(Dens)。每座巢穴都被遗忘。
SpiritHearthsData.json每一座已放置的灵灶(Hearths)。见灵厨。每座灵灶都被遗忘。
TalismanDesksData.json每一座已放置的符箓案(Desks)。见符箓。每座符箓案都被遗忘。
ForgeAnchorsData.json每一座已放置的锻造台(ForgeAnchors)。见锻造。每座锻造台都被遗忘。
ArrayPlatformsData.json每一座已放置的传送法台(Platforms)。见传送阵。每座法台都被遗忘。
SiegeBannersData.json每一面立着的攻城旗(Banners)。见宗门攻伐。立着的旗帜都被遗忘。
TreasureCacheData.json每一处被追踪的宝藏与遗迹探索地点(Sites)。被追踪的地点都被遗忘。
HallOfFameFoundationData.json英名阁奠基 —— 一个全服唯一的单例,而非列表。只有一行:它是否已 Placed、所在世界与 X/Y/Z,以及何时、由谁放下。首次放置者为准;这是一处一次性的公共地标。奠基视为未放置。
ExpeditionsData.json每位修士进行中的灵兽远征(Expeditions)。进行中的远征都会丢失。
VeinTapsData.jsonv0.11.1 每一座引脉阵(Taps)及其储存的灵石与灵气、休眠状态,另有每个账号的当日领取记录(Ledger)、劫掠冷却(RaidCooldowns)、欠因行囊已满的劫掠者的灵石(Owed),以及为不在线的阵主排队的通知(Notices)。管理员测试阵法会在服务器启动时被丢弃。所有阵法连同欠下的灵石与冷却一并被遗忘。

稀有之地与门客

v0.11.2 四份 0.11.2 之前不存在的文件。它们都是新的,因此旧服务器起初都是空的。

文件存放内容删除后
StructureSitesData.json服务器上、各个世界里每一处稀有建筑遗址:Sites 数组(含已退役的墓碑记录,不带其方块格;每处现存遗址带有范围、方块格数量与方块格哈希,以及其机制所维持的实时状态 —— 矿脉的存余、剑冢今日已拔数)、NextId(遗址编号如 sword_tomb-3 背后的计数器,编号绝不重复使用),以及 RetiredMarkers(已清理墓碑的标记位置,其标记方块可能仍在原地,故不会再被发现)。文件在变动数秒后重写。所有遗址被遗忘。仍立着的建筑会在玩家经过时重新被发现并记录,但矿脉剩余的存余、剑冢的每日计数与已退役的遗址都会重置。
SwordTombData.json剑冢的逐玩家记录:Cooldowns(各玩家何时可再次拔剑)、Trials(试炼失败后各玩家何时可再次抽取某座剑冢的灵剑)、Wins(谁赢得了哪座剑冢的剑灵)与 Bonds(等待在石碑前结契的已胜剑灵)。拔剑冷却与试炼封锁重置;赢得剑灵却尚未结契者,会失去待定的结契,并可再次抽取该剑冢的剑灵。
FallenCaveData.json陨落修士洞府的账本,每座洞府、每位玩家一行 Visits:封印何时取走其灵气(Paid)、数额(Offer)、付出的角色(Payer)、传承何时授予(Looted),以及残魂之问的结果(Answered)。所有人可在每座洞府重新献祭、取传承、答问。
RetainersData.json每位门客与每份已保存的每日应聘名单:Retainers 数组与 Recruit-Lists 数组。已离去的门客以墓碑形式保留。所有门客与应聘名单被遗忘。

名分、誓言与传承

修士之间、宗门之间的关系,以行的数组存放。待答的邀约与提议在其中都不保存 —— 一份无人应答的邀约不值得持久化,它只在内存中失效。

文件存放内容删除后
AllianceData.json每一条存续中的宗门关系(不侵犯、通商与结盟这一阶梯,Alliances)、每一条单方面的仇敌宣告(Rivalries),以及分裂之后的冷却(RelationCooldowns)。所有宗门关系、仇敌宣告与冷却都被重置。
OathsData.json每一道已立的天道誓言(Oaths),以及每一项已判定、却尚未落到其玩家身上的违誓惩罚与押注转移(PendingPenalties)。它们存于同一份文件,是为了让一次违誓的已破状态与它所欠的惩罚由同一次保存写下。已立的誓言消失,任何尚欠的惩罚亦随之消失。
DaoInheritanceData.json道统传承:世家(Houses)、世家之间的仇敌关系(Rivalries)与传人确认(HeirConfirmations)。见道统传承。世家、仇敌关系与确认被重置。
LegacyData.json修行传承:每位立传人者现存的传人指定(HeirDesignations)、仍在等候离线传人的隐退增益(PendingGrants,各自带有自己的真实时钟期限),以及隐退的历史(LegacyHistory)。指定、等候中的馈赠与历史被重置。

欠付的奖励与托管账本

这些存放的是玩家应得之物 —— 物品、灵石、灵气,或在挣得之时无法送达的奖励。这些系统绝不会凭空删掉任何人的物品或灵石;它们会在此等候,直到能够送达。删除其中任何一份,即放弃它所存放的一切 —— 受影响的玩家不会得到补偿。

文件存放内容删除后
AuctionData.json整个坊市:每一件在售商品(Listings),与每一份可领取的包裹(Claimables)—— 一件到期未售出的商品退回的物品,或卖家离线时一笔成交的所得。每件商品与每一份未领取的包裹都会丢失。这是最需要保护的一份。
DaoDuelEscrowData.json大道赌斗中灵石押注背后的账本:赌斗进行期间每名参与者一行 Escrows,以及无法送达的退款所入的 StuckStakes(收款方离线或没有空位)。一次重启会使所有进行中的赌斗作废,下次启动时会退还每一笔遗留的托管。当时扣押的押注与未送达的退款会丢失。
TournamentWagerData.json观战押注背后的账本:每一注一行 Wagers,以及任何未送达的退款或派彩所入的 StuckParcels。重启绝不会恢复一场盘口,因此下次启动会把每一行遗留记录作为滞留包裹退还。未结的押注与未送达的派彩会丢失。
DuelGraceData.json斗法断线宽限账本(Rows):从斗法中途掉线的斗者身上扣下的灵气,无论它走到了哪一种状态(扣押、已派出或已退还)。斗法本身不留文件;只有这笔押注会被写下,使重启永远吞不掉它。因掉线斗法而仍被扣押或尚欠的灵气会丢失。
PagodaPendingRewards.json无法放入背包的试炼塔楼层奖励(Pending)。由 /cultivation pagoda claim 发放,登入时亦会自动发放。未领取的楼层奖励会丢失。
DungeonRewardData.json无法立即发放的铸炉守卫贡献奖励(PendingRewards)—— 例如发给一位在战斗中途断线的贡献者。见副本。未发放的副本奖励会丢失。
WorldBossData.json无法立即发放的灾劫兽贡献奖励(PendingRewards),于所有者下次登入时送达。同时存放预先掷定的下一只首领备忘(PrerollArmToken、PrerollEventId、PrerollBossWillSpawn、PrerollBossRoleId),/divine heavens 的预言读取的正是它。未发放的奖励会丢失,且已给出的预言可能不再点名其首领。
RiftData.json无法立即发放的虚空裂隙贡献奖励(PendingRewards),外加 NextRiftAllowedAtMillis —— 在此真实时钟时刻之前不得开启新的裂隙。v0.11.1 每条奖励行还带着随灵石一并欠付的灵气(QiAmount,出自 Rift-Reward-Qi-Per-Currency)。同一个 PendingRewards 队列如今也存放突袭与首领之赏的灵石(类型为 breach_spirit_stone 的行),在发放之前先写入,因此崩溃或背包已满都不会让它丢失。另有两张新表记录每日上限:BreachDailyClaims(突袭与宝匣的发放)和 BossDailyClaims(猎杀与地宫首领的发放),每行含 PlayerUuid、Day(UTC 的日序号)与 Count;写入新行时,往日的行会被丢弃。未发放的奖励(包括未发放的突袭与首领灵石)会丢失,裂隙冷却被遗忘,每名玩家当日的突袭与首领计数也都重置。
TideRewardsData.json兽潮守卫者的奖励队列(PendingRewards):每场已结算的围攻中每名守卫者一行,只在其灵石真正进入该玩家背包之前留在文件中。见兽潮。未送达的守卫者酬劳会丢失。
FactionPendingData.json已挣得却尚未送达的门派声望点数(Credits)—— 玩家离线或身处另一世界时的退路 —— 以及云海盟坊市的防刷计数器(PairStamps),二者同存一份文件,因为都是写入稀少的、小体量的逐玩家记录。见门派。未送达的声望会丢失,成交配对计数器被重置。

全服赛事

两场全服赛事。二者都不会跨重启恢复:启动时,管理器会取消并退还它所发现的一切。赛程仍留在文件里,供事后查看。(宗门论道大会则不同 —— 它们会恢复,凭论道大会数据。)

文件存放内容删除后
GrandTournamentData.json全服大比:阶段、轮次、参赛者、待定对阵、谁已晋级,以及冠军历史。v0.11.1 这场大比现已启用 —— 管理员以 /cultivation duel opengrandtournament 开启,或由 Grand-Tournament-Interval-Hours 计时器开启(默认 0,即关闭)—— 文件里还存着 LastAutoOpenAttemptMillis,即该计时器上一次尝试开启报名的真实时钟时刻(0 表示从未尝试)。赛程与冠军历史丢失,计时器也忘了上一次尝试,因此计时器开着时,它可能立刻再开一次报名。
DaoDuelTournamentData.json全服大道赌斗大会:阶段、轮次、参赛者、对阵、奖池、冠军历史与无法送达的奖品包裹(StuckPrizes),以及它上一次尝试自动开启的时间。赛程与冠军历史丢失,任何仍作为滞留包裹等候的奖品也一并作废。

排名、赛季与历史

排名索引的持久副本,以及往届赛季如何收场的记录。

文件存放内容删除后
DaoMasteryLeaderboardData.json大道精通排名索引:每位修士一条,含其天道占比、已显化之道的数量与综合得分,外加赛季基线(SeasonSnapshots)。排名为空,直到玩家下次登入。
SeasonHallOfFameData.json赛季循环:当前赛季的编号、起始时间与幂等守卫,以及英名阁历史,含正魔之战、修炼阶梯、大道精通与宗门的冠军名录。当前赛季的生命周期状态与英名阁历史丢失。
PathWarData.json正魔之战:双方的赛季总分、每位修士自己的一行、当前天裂窗口的状态(使窗口期中途的重启得以悄然收束,而不是让它永远敞开),以及已结算窗口的历史。赛季总分、个人记录与窗口历史丢失。
ReincarnationLedgerData.json每个账号的血脉点数与轮回次数 —— 见轮回账本数据。血脉加成永久丢失。
RivalNemesisData.json每位曾败给游历道友的玩家一条宿敌记录:宿敌的名字与位阶、对该玩家的胜负、最近一次交手,以及是否已退场。见游历道友。每一段宿怨重置;玩家不再有宿敌。
BountiesData.json悬赏令:当前的榜单(Board)、下一次轮换时间(RotationDueMillis),以及每位修士进行中与已领取的悬赏(Acceptances)。榜单与所有人的悬赏重置。
HeavenlyRealmData.json天界自身的世界级状态,仅一个字段:天露的逐账号每日采集与消耗账本(DewLedger)。旧的雕刻与重建键自 0.11.0 起已消失 —— 天界现由 WorldGen V2 生成 —— 仍带着它们的旧文件会被直接忽略。所有人每日的天露额度重置。

调度器与计数器

小型的常驻状态文件,丢了几乎没有代价。

文件存放内容删除后
CelestialData.json天象调度器的预掷结果:它预定下一次运行哪一场天象及何时(NextEventAtMillis、NextEventId、ArmToken、ArmedAtMillis)。/divine heavens 会读取它。调度器于下次启动时重新预定一次,一如预掷出现之前的做法。
TidesData.json每个兽潮目标的常驻状态(Targets):其世界、压制与冷却计时器。只有这些会撑过重启 —— 进行中的攻势刻意不保存,崩溃的兽潮也永不恢复。见兽潮。冷却与压制重置,于是各目标立刻再度符合条件。
ArrayCooldownsData.json每位玩家尚存的传送阵出行冷却(Cooldowns)。战斗近况锁定只在内存中,不在此处。所有人的出行冷却被清除。
BalanceLedger.json汇总的使用计数器 —— 稳定的计数器编号及其总数,外加记下第一条的时间(Counters、SinceMillis)。绝不存储任何玩家名或 UUID。由 /cultivation admin balance 与 /cultivation admin balance reset 读取并清除。仅计数器重置。

管理员备份数据

管理员对玩家进度所做编辑的撤销历史,位于路径 mods/Siren_Cultivation/Data/AdminBackupsData.json。由 AdminBackupStore 在内存中持有。

一个 Players 数组,每个目标玩家一行:其 UUID 与最后所知的名字、下一个序列号,以及一个备份的 Records 数组。每条记录载有备份于何时、其范围与来源、由谁对谁所为、涉及哪份存档、此后是否已被恢复以及恢复为何,还有一份前后数值的 Fields 列表。每位玩家保留多少条记录,由核心配置中的 Admin-Backups-Per-Player 决定;更旧的先被丢弃。

删除该文件,你就再也无法恢复任何过往的管理员编辑。一次已在进行中的恢复只在内存中受到保护,因此管理员恢复到一半时请勿触碰该文件。

轮回账本数据

服务器级的血脉点数索引,位于路径 mods/Siren_Cultivation/Data/ReincarnationLedgerData.json。由 ReincarnationLedger 在内存中持有。

一个 Entries 数组,每个轮回过的账号一条:其 UUID、最后所见的用户名、累积的 BloodlinePoints 与 ReincarnationCount。每位在线修士所得的加成都由这些点数算出,因此删除该文件会永久抹去血脉加成。见轮回与轮回配置。

修炼赛季数据

修炼阶梯赛季的逐账号进度,位于路径 mods/Siren_Cultivation/Data/CultivationSeasonData.json。仅由 CultivationLeaderboard 持有并写入,也由它直接载入 —— 因此与下文的坊市价格数据一样,这份文件要等到有东西可存时才会出现。

一个 Rows 数组,每个账号一行:UUID、SeasonId,以及两个等级,StartPeak(赛季首次见到该账号时,其名下任一真实修士达到的最高等级)与 Peak(以该账号最新的真实记录为准的同一读数)。赛季增量即 Peak - StartPeak,永不低于 0。它衡量的是账号名下最强的那位真实修士,而非恰好处于活跃状态的那份存档。

它取代了排行榜数据中的 SeasonSnapshots 数组,后者如今每个账号只读取一次,仅作迁移来源。删除该文件会把所有人在当前赛季的增量重置为零。见赛季循环。

坊市价格数据

坊市价格指南的后备存储,位于路径 mods/Siren_Cultivation/Data/MarketPriceData.json。由价格索引直接载入,因此这份文件要等到索引首次保存时才会出现。

一个 Sales 数组,存放近期成交的样本:ItemId、整叠的 TotalPrice、Quantity 与一个时间戳。它纯属描述性缓存,坊市本身从不查阅它 —— 因此删除它、或丢失最后一次被节流的保存,只会让指南在更长一阵子里显示「近期成交数据不足」。可以放心删除。见坊市。