蘑菇同步

创作者: Mushroom_Vikings
已更新:2026-09-15 16:41:02
16KB

关于此 MOD

其他蘑菇模组共用的服务器权威配置同步。本身没有游戏玩法。战斗调整、可制作生成器、哈尔多扩展和随机世界树需要此模组。

蘑菇同步

蘑菇模组共用的服务器权威同步。主机决定,客户端跟随,没有人的本地 .cfg 被重写。

它本身没有玩法。它的存在是为了让需要服务器权威设置的模组共享同一套实现,而不是重复四份相同的300行代码。

需要

模组 使用
战斗调整 配置同步
可制作刷怪笼 配置同步
哈尔多扩展 配置同步
随机世界树 原始频道(世界旋转)

蘑菇同步.dll 必须安装在那些东西所在的任何地方 在每个客户端和专用服务器上。发布压缩包会随它们一起附带,因此解压 蘑菇模组插件.zip 进入 BepInEx/ 够了。

使用它

配置同步,在一个插件的 醒来,绑定设置之前:

[BepInPlugin(PluginGuid, PluginName, PluginVersion)] [BepInDependency(MushroomSyncPlugin.PluginGuid)] public class MyPlugin : BaseUnityPlugin { internal static ConfigSync Sync; private void Awake() { Sync = ConfigSync.Create(PluginGuid, PluginVersion, Logger) .Protecting(Config) .OnApplied(ReapplyRuntimeState); EnableThing = Config.Bind("General", "EnableThing", true, "..."); Sync.Register(EnableThing); Sync.WatchForChanges(Config).Start(); } }

在那之后 启用事物.数值 在同步客户端上返回主机的值,在其他所有地方返回本地的值—— 无需更改调用点. 当你需要知道获得的是哪一个,或者希望同时保留本地值时,请使用 同步.尝试获取同步值(条目, 输出变量v).

已应用 这对任何将设置固化到游戏对象中的模组都很重要:仅更改配置是不够的,数值必须被重新推入。它会在主机数值到达时和丢失时都触发。

必须保留本地的设置

Sync.Exclude(SyncConfigInMultiplayer); // 退出选项本身 Sync.Exclude(GrantTableVersion); // 仅限服务器的记录

被排除的条目永远不会发送,也永远不会叠加显示。

退出

两道门,有意分开:

同步条件:仅当锁配置启用时同步;主机端:发布或保持静默。 同步接受条件:仅当同步启用时接受;客户端:跟随主机或不跟随。

受限条件 是 主机端切换 —它决定此机器在作为服务器时是否发布。Haldor Expansion只使用这个:一个客户端,带有 锁定配置 关闭状态下仍会跟随开启了该功能的宿主。

接受时 是 客户端退出战斗调整将相同的判定条件同时传递给两者,因为其 多玩家同步配置 表示“完全不同步”。

把两者混为一谈是一个值得指出的缺陷:如果主机端开关也拒绝传入的值,那么仅仅因为客户端在作为主机时不会分享自己的设置,就会导致该客户端无法跟随服务器。

推送你自己的数据

对于任何不是配置条目的内容,直接使用该频道——这就是Random Yggdrasil在世界轮换中所做的:

var channel = SyncChannel.Create("MyMod.Thing", PluginVersion, Logger); channel.WritePayload = pkg => { /* 服务器写入 */ }; channel.ReadPayload = pkg => { /* 客户端读取 */ }; channel.Cleared = reason => { /* 回退到本地 */ }; channel.Start(); channel.Broadcast(); // 服务器更改内容后

读取同步通道包数量(pkg) 读取带合理性上限的长度前缀,因此损坏的数据包不会导致无限制分配。

设计

查看 docs/DESIGN.md 关于它为何这样构建——分层设计,为何不像ServerSync那样封装登录套接字,以及为何值覆盖是只读的。

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!