
共享生命
所有玩家共享一条生命。生命值、饥饿值、物品栏、末影箱、经验值和死亡都是共通的,因此一人受伤,全体受伤。每一项共享都有独立开关。仅在服务端运行,原版客户端无需任何额外操作。
生命共享
一条命,由你们所有人共同分担
生命值、饥饿值、物品栏、末影箱、经验值和状态效果在服务器上的所有人之间共享。你们中一人受到的伤害,由所有人共同承受。一人拾取的物品会出现在所有人的物品栏中。而当你们中一人死亡时,其他人也会随之倒下。
一切都在服务端运行。原版客户端无需安装任何东西。 把 jar 放进服务器的 mods 文件夹,所有玩家,无论是否装了模组,都会共享同一条命。
共享的内容
以下每一项都是独立的开关。关掉你不想要的项,模组就完全不会读取或写入玩家的那部分数据。
| 共享项 | 默认 | 含义 |
|---|---|---|
shareHealth |
开启 | 一条生命条。伤害、治疗、生命恢复和命令都作用于同一个共享池。 |
shareAbsorption |
关闭 | 同时共享黄色的伤害吸收心,而不是把它们留作个人缓冲。 |
shareHunger |
开启 | 一条饥饿条,包含饱和度,以一名玩家的速度消耗,而非整组人的速度。 |
shareInventory |
开启 | 物品的总开关。下面四项决定哪些部分跟随共享。 |
shareHotbar |
开启 | 槽位 0 到 8。 |
shareMainInventory |
开启 | 快捷栏上方的三行,槽位 9 到 35。 |
shareArmor |
开启 | 头盔、胸甲、护腿、靴子。 |
shareOffhand |
开启 | 副手槽位。 |
shareEnderChest |
开启 | 一个末影箱,27 个槽位。 |
shareExperience |
开启 | 一个经验总量。一名成员拾取的经验球会让所有人升级。 |
shareEffects |
开启 | 一套状态效果。牛奶会为所有人清除它们。 |
shareDeath |
开启 | 一名成员死亡会带走其他人。 |
所以“仅共享快捷栏”就是把 shareMainInventory、shareArmor 和 shareOffhand 关掉。“除盔甲外全部共享”就只是把 shareArmor 关掉。未共享的槽位完全保持个人所有,包括死亡时,只有共享的槽位会被清空。
不共享的:每名玩家当前手持的快捷栏槽位、氧气供应、进度、统计数据,以及箱子里的任何东西。
安装到已有世界会将所有人合并为一条命
添加模组后第一个登录的玩家会为该池播种,随后其他所有人都会接收到他的物品栏、生命值和经验。先决定好这个人应该是谁,或者事后用 /livesshared adopt <player> 来修正。在全新的世界里没有什么会丢失。无论哪种情况都请先备份。
命令
/ls 是 /livesshared 的别名。
| 命令 | 权限 | 作用 |
|---|---|---|
/livesshared 或 /livesshared status |
所有人 | 正在共享的内容,以及该池当前的生命值、饥饿值、等级和槽位数量。 |
/livesshared set <option> <true\|false> |
op 2 | 切换任意开关并写入配置。 |
/livesshared exempt <player> <true\|false> |
op 2 | 将某名玩家移出该池,或放回。不带参数会列出谁被排除。 |
/livesshared reload |
op 2 | 重新读取 config/livesshared.json。 |
/livesshared resync |
op 2 | 将该池重新推送给所有人,用于客户端看起来不同步的情况。 |
/livesshared adopt <player> |
op 2 | 以该玩家的状态作为整组的命。恢复工具。 |
在游戏内将某项共享重新开启时,该池会采用执行该命令者的状态,所以“大家会得到谁的东西”的答案永远是“输入命令的那个人”。
队伍
开启 useScoreboardTeams 后,每个计分板队伍共享各自的命,所有无队伍的人再共享另一条。加入不同的队伍会在下一个 tick 让你获得该队伍的命;你原来的队伍保留他们的命。
配置
config/livesshared.json 会在首次运行时写出,包含每个选项以及一个内置的 #option-guide 解释每一项,因此该文件本身即文档。布尔值可用 /livesshared set 实时编辑;文本和列表选项则编辑文件后再 /livesshared reload。
| 选项 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关。false 会让所有人恢复各自独立。 |
damageFeedback |
true |
因他人受击而失去生命值的成员会收到受伤音效和红色闪烁。 |
announceSharedDeath |
true |
当一组人一同倒下时进行广播。 |
sharedDeathMessage |
见配置 | 广播文本。{player} 和 {group} 会被填入。 |
excludeCreative |
true |
创造模式的玩家处于该池之外。 |
excludeSpectators |
true |
旁观者处于该池之外。 |
exemptPlayers |
[] |
永不加入任何池的名字或 uuid,用于管理员或管理账号。 |
effectBlacklist |
[] |
即使开启 shareEffects 也保持个人所有的效果 id。 |
useScoreboardTeams |
false |
每个计分板队伍一个池,所有无队伍玩家共享另一个。 |
autosaveMinutes |
5 |
有玩家在线时,两次池保存之间的分钟数。 |
工作原理
每个 tick,对每个组:成员自上次接收到池以来所改变的任何内容都会被折回池中,然后该池再被推送给所有人。
数值以增量形式折入,并且会累加。两名玩家在同一 tick 各受到三点伤害,整组就会损失六点,两名玩家同时进行生命恢复也都会治疗该池。物品按槽位折入。
饥饿值是例外。 每名玩家都会产生自己的消耗度,因此把它全部相加会让一条饥饿条以你们人数的倍数速度被清空。整组吃的东西仍会累加,因为那些是从共享堆叠中取出的真实物品,但整组消耗的则会在成员之间分摊,所以饥饿条会以相当于一名玩家的速度消耗。单人时,这与原版完全一致。
共享的受击是能感受到的,而不仅仅是看到的。 当该池受到别人招致的伤害时,没有承受该伤害的成员仍会收到红色闪烁、镜头震动以及实际落到身上的伤害类型对应的受伤音效,所以摔落听起来像摔落,灼烧听起来像灼烧。受限于原版自身的受伤冷却时间,并且对承受该伤害的人跳过。
死亡与物品复制。 关闭 keepInventory 时,死亡的玩家会掉落共享物品栏,因此整组的那份就在他们倒下的地方。其他所有人在被击杀前,其共享槽位会被清空,否则他们每个人都会掉落同一批物品的一份副本。你选择不共享的槽位永不被触及,会正常掉落。开启 keepInventory 时,什么都不掉落,也不清空任何东西。
持久化。 该池存储在 <world>/livesshared/<group>.dat,并在登出、关闭以及每 autosaveMinutes 分钟时保存。没有它的话,重启后第一个登录的玩家会以自己的状态为整组播种。
已知特性
- 图腾无法让你免于同伴的死亡。 共享死亡使用与
/kill相同的伤害来源,会绕过无敌。 - 信标可能使共享效果闪烁。 信标只对范围内的玩家刷新其效果;当范围外某名玩家持有的那份效果耗尽时,整组会跟随他们,直到信标下一次脉冲。
- 生命值是以数值形式共享的。 最大生命条较小的玩家会被限制在自己的上限,而不是显示整组的完整池。
- 生命恢复会随组规模放大。 生命值双向累加,所以多名玩家同时进行生命恢复会以多倍治疗该池。饥饿值是唯一被分摊的属性。
安装
生命共享是服务端模组。只有服务器需要它,玩家用未修改的客户端即可加入。
| Minecraft | Fabric | NeoForge |
|---|---|---|
| 26.2 | livesshared-1.0.0+mc26.2.jar |
livesshared-1.0.0+mc26.2-neoforge.jar |
| 26.1.2 | livesshared-1.0.0+mc26.1.2.jar |
livesshared-1.0.0+mc26.1.2-neoforge.jar |
- 将对应你的加载器和 Minecraft 版本的 jar 放入服务器的
mods文件夹。在 Fabric 上,还需添加 Fabric API;NeoForge 无需其他东西 - 启动服务器。首次运行时会写出
config/livesshared.json - 在将其添加到已有世界之前,请阅读上文关于现有世界的说明
四个构建版本行为完全一致。单人游戏同样可用,且只有一名玩家时,该模组与原版没有区别。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。