# 硬核接力插件
## 概述
**硬核接力** 是一个为 PaperMC 服务器设计的独特且具有挑战性的多人游戏模式。它将经典的硬核体验转变为一个合作、高风险的接力赛,一群玩家共享单个角色的控制权。凭借共享的身体、物品栏和有限的生命数量,每个玩家的回合都至关重要。一个错误可能对整个团队造成后果,沟通和策略对于生存至关重要。
该插件设计为自包含且易于管理的。 整个游戏状态,包括共享角色的物品栏、位置和游戏结束状态,都直接与世界数据绑定。这意味着重新开始就像创建一个新世界一样简单。
视频示例:https://www.youtube.com/watch?v=L1FDRfQwBt0
-----
## 特性
* **计时接力:** 单个共享角色的控制权在可配置的间隔内轮流传给所有在线玩家。
* **共享身体:** 所有玩家的生命、饥饿值、饱和度、经验值、药水效果和剩余空气都同步,并在轮换过程中持续存在。物品栏和末影箱也共享。
* **无缝过渡:** 玩家的动量、速度,甚至鞘翅滑翔都被保留在各次轮换之间,确保高速运动和坠落继续进行,不会中断。
* **连续死亡系统:** 如果可配置数量的玩家连续“死亡”,游戏将为所有人结束。任何玩家的成功轮换完成都会重置此死亡计数器。
* **真正的硬核死亡:** 该插件巧妙地拦截致命伤害,防止死亡屏幕出现。相反,它会立即触发死亡惩罚和轮换,保持游戏流程。
* **动态玩家队列:** 中途加入游戏的玩家将被添加到轮换队列的末尾。离开的玩家将被移除。如果活动玩家离开,控制权将立即传递给队列中的下一个玩家。
* **锁定观众模式:** 所有非活动玩家被锁定到活动玩家的视角中,确保他们始终参与其中。这种视角在维度更改时也能无缝持续。
* **实时物品栏同步:** 观众可以随时打开他们的物品栏,查看活动玩家的物品栏和盔甲的实时视图。
* **UI 通知:** 持久的动作条消息会告知观众共享角色的状态、当前回合的剩余时间以及接下来是谁的回合。活动玩家仅在最后 10 秒内看到倒计时。
* **游戏结束状态:** 当世界结束时,所有玩家将被永久置于观众模式。此状态保存在世界的数据中,可以通过简单地删除世界文件夹来实现轻松重置。
* **单人游戏冻结:** 如果只有一名玩家在线,接力将暂停。该玩家与角色的最后已知状态同步,但在另一名玩家加入以恢复接力之前,将被冻结在原位,无法移动或交互。
-----
## 安装
1. 下载最新的 `HardcoreRelay.jar` 文件。
2. 将 `.jar` 文件放入服务器的 `/plugins` 目录中。
3. 重新启动或重新加载服务器。
4. 插件将在 `/plugins/HardcoreRelay/` 中生成一个 `config.yml` 文件。
-----
## 配置
`config.yml` 文件允许您自定义接力的核心机制。
```yaml
# 硬核接力插件配置
# 每个玩家的回合持续时间(秒)。
# 默认值:600 (10 分钟)
turn-duration: 600
# 在世界结束前允许连续玩家死亡的数量。
# 将其设置为 1,以获得经典的“第一次死亡结束游戏”的硬核体验。
# 默认值:2
max-consecutive-deaths: 2
# 玩家死亡后跳过的回合数 (如果游戏没有结束)。
# 默认值:2
death-penalty-skips: 2
# 如果真实,当只有一名玩家在线时,游戏将暂停。
# 默认值:true
wait-for-more-players: true
# 显示在等待更多玩家加入接力的动作条消息。
waiting-message: "&cWaiting for more players to join the relay..."
# --- UI 自定义 ---
# 观众的动作条消息格式。
# 占位符:{health}, {hunger}, {time}, {next_player}
spectator-message: "&cHP: &f{health} &c| Hunger: &f{hunger} &c| Time: &f{time} &c| Next: &f{next_player}"
# 在最后几秒钟内,活动玩家的动作条消息计数器。
# 占位符:{time}
active-player-countdown-message: "&4! Switching to {next_player} in {time} !"
```
-----
## 玩法
1. **加入服务器:** 只要有两名或更多的玩家在线,接力就会自动开始。
2. **第一名玩家:** 队列中的第一名玩家将控制共享角色。
3. **观众:** 所有其他玩家将自动置于观众模式中,锁定在活动玩家的视角中。
4. **轮换:** 当计时器到期时,控制权将传递给队列中的下一名玩家。Outgoing 玩家会被置于观众模式中,而新玩家在完全相同的地点、完全相同的物品栏、生命、动量上接管。
5. **生存:** 共同努力,收集资源、击败 Boss 并尽可能地生存!
-----
## 重置游戏
该插件是针对特定世界设计的。所有游戏进度(物品栏、位置、游戏结束状态)都存储在世界的数据本身中。要开始全新的硬核接力会话:
1. 停止您的服务器。
2. 删除世界文件夹(例如 `world`、`world_nether`、`world_the_end`)。
3. 重新启动服务器。 将会生成一个新的世界,插件将开始新的游戏。
-----
## 命令 & 权限
该插件旨在实现简洁,无需任何设置。 没有可配置的 **命令** 和 **权限**。 所有功能都是自动的。