Extractioncraft 对局流程
本页记录了从对局创建的那一刻起,到实例世界被删除为止实际发生的一切,包括各类计时器、撤离规则,以及玩家丢失装备的方式。
创建对局
/exc createMatch <contentPackage.yml> 会把内容包的 betterStructuresModulesContainerName 交给 BetterStructures,由它异步生成一个全新的实例世界。生成完成后:
- 会为该世界创建一个
ExtractionMatch,并以等待中状态启动。 - 执行该命令的玩家会被加入对局,并被传送到新世界中随机选定的一个出生点。
- 地图的生成池所定义的实例 Boss 会被生成。
进入对局的任何人都会被切换为冒险模式,并且其此前的游戏模式和位置都会被记录下来,以便在退出时恢复。
不存在队列,也没有匹配系统。对局之所以存在,是因为有人创建了它。
等待玩家
/exc createMatch 是唯一能把玩家送进对局的代码路径。Extractioncraft 没有注册 join 子命令,也没有任何其他代码调用共享运行时的加入方法,因此一个对局目前恰好只容纳一名玩家:创建它的那个人。下文中关于加入的所有内容描述的都是 Extractioncraft 所依托的共享 MagmaCore 对局运行时 —— 它已经配置好了,但目前还没有任何代码触达它。
在对局等待期间:
- 加入路径原本允许玩家数量达到内容包的
maxPlayers(所有预制的 Kobold Mines 内容包均为 8),并会用failedToJoinOngoingMatchAsPlayerInstanceIsFull拒绝已满的实例。 - 一旦对局开始,其他人便无法加入 —— 迟到者会收到
failedToJoinOngoingMatchAsPlayerMessage。 - 无法观战。Extractioncraft 从不把它的对局标记为可观战,因此观战者的加入请求总是被拒绝,
messaging.yml中的观战相关消息也永远不会被发送。 - 此时离开没有代价:物品清除规则只在对局开始后才生效。
开始对局
对局内的任何玩家都可以执行 /exc start。
- 如果在场人数少于
minPlayers,对局会拒绝开始,并通过matchFailedToStartNotEnoughPlayersMessage告知所有人($amount会被替换为所需人数)。 - 否则会进行3 秒倒计时,每秒更新一次标题。
- 如果在倒计时期间玩家人数降到
minPlayers以下,对局会被中止并直接结束。
倒计时结束的那一刻:
- 箱子和木桶会被放置到地图各处。
- 在地图布置期间被阻止的红石交互被解锁,因此撤离拉杆可以使用了。
- 15 分钟计时器、不断收缩的世界边界以及指南针 Boss 血条条全部启动。
- 每个撤离点的装饰性(不可用)版本被粘贴进地图。
计时器
| 计时器 | 时长 | 效果 |
|---|---|---|
| 对局计时器 | 15 分钟 | 在 Extractioncraft 侧边栏计分板上显示为 Timer MM:SS,每秒刷新一次。下限为 00:00。 |
| 撤离点解锁 | 开始后 1 分钟 | 每个撤离点的可用版本连同其拉杆一起被粘贴进来。 |
| 撤离窗口 | 20 秒 | 由拉动撤离点的拉杆开启。 |
| 打开容器 | 3 秒 | 搜刮箱子或木桶时你必须保持静止的时间。 |
对局计时器本身并不会结束对局 —— 结束对局的是世界边界。
世界边界
边界起始跨度为 740 格,大约每 24 tick(约 1.2 秒)收缩一格,在 15 分钟标记之前不久归零(740 次收缩、每次 24 tick,合计 14 分 48 秒)。
边界的警告距离被设为当前边界宽度减去 50(起始时为 690 格)。由于 Minecraft 将警告距离理解为"距边界多少格开始出现屏幕红色染色",如此大的数值覆盖了整个可玩区域,因此红色警告覆层在整场对局中对所有人都是常亮的,而不是只在你接近边缘时才出现。
由于 BetterStructures 会按照距离地图中心的远近来缩放 Boss 等级 —— 中心等级最高,边缘等级最低 —— 不断收缩的边界会稳步把玩家推向地图中更难也更有回报的区域。
一旦边界收缩到零,边界伤害就会变为致命,而致命伤害会把玩家移出对局(见下文)。当最后一名玩家离开后,对局结束,其世界被删除。
撤离
- 找到一个撤离点。屏幕顶部的 Boss 血条条是一条指南针带:它会为你视线 90° 范围内的每个撤离点显示一个
⦿标记,大约每个字符 3°。这条带子在对局开始时就会出现,但在最初的一分钟内保持为空 —— 标记只会为可用的撤离点绘制,而那些撤离点要等解锁计时器触发后才会被放置。 - 右键点击撤离点上的拉杆。拉杆会被消耗,10 格范围内的所有人都会收到 "You have triggered an exit!" 提示,并为该撤离点开启一个单次 20 秒的撤离窗口。
- 站在撤离区域内 —— 那是一个自撤离点向各个方向延伸 3 格的立方体。当你处于其中时,会看到
Extracting! in N seconds!。 - 走出去会显示
Extraction cancelled!,但窗口仍在继续计时。在它关闭之前重新回到里面依然算数。 - 窗口关闭时,所有站在里面的人会同时撤离:
Victory / Extraction successful!。他们会被移出对局,并保留身上携带的一切。
拉动拉杆会摧毁它。如果你触发了某个撤离点却错过了那 20 秒窗口,这个撤离点就废了 —— 去找另一个吧。
死亡与物品损失
Extractioncraft 的对局给每位玩家一条命,没有重生,也没有死亡箱子。
- 会致死的伤害会被直接取消。取而代之的是,该玩家被移出对局。
- 被移出时,其生命值会恢复到上限,先前的游戏模式会被还原,并被传送回加入前所站立的位置。
- 其背包中的所有物品都会被灵魂绑定(EliteMobs 的灵魂绑定附魔)—— 而后,如果这次移出并非一次成功的撤离,且
deleteItemsOnFailToExtract为true(默认值),整个背包都会被清空。
/exc leave、/exc quit 和断线使用的是同一条移出路径,因此在进行中的对局里,这三种方式都会让你失去战利品。
| 你离开的方式 | 保留战利品? |
|---|---|
| 在撤离点成功撤离 | 是 |
| 被怪物、玩家或边界击杀 | 否(在默认配置下) |
对局途中执行 /exc leave 或 /exc quit | 否(在默认配置下) |
| 对局途中断线 | 否(在默认配置下) |
| 在对局仍处于等待或倒计时阶段时离开 | 是 |
世界保护
实例对局世界在其整个生命周期内都受到保护:
- 玩家无法破坏或放置方块、使用骨粉,或破坏地形。
- 在对局开始之前,红石交互被阻止。
- 当内容包设置
pvpEnabled: false时,PvP 被阻止。 - 传送进入或离开对局世界都会被取消。只有插件自身的传送才能通过。
- 在对局进行期间,运行时会扫描对局世界中的闯入者。管理员(op)不受影响,只会收到一条动作栏警告而不会被移出。请注意,移出操作本身只对服务器仍保有对局玩家记录的玩家有效(即自上次重启以来进过对局的人);从未进过对局的玩家会被检测到,但实际上不会被移动。
- 还有一个看门狗会检查已离开对局区域的玩家,但它试图把他们放回实例的起始位置,而 Extractioncraft 从未设置过该位置 —— 因此这道特定的安全网目前并不起作用。实际上,离开对局世界的传送本来就已经被直接取消了。
管理员可以用 /exc protection bypass 为自己关闭这些保护。
结束对局
当最后一名玩家被移出对局时,对局即告结束 —— 无论他是撤离、死亡、离开还是断线。对局结束会永久删除该实例世界,因此留在其中的任何东西都不会保留。
当插件被禁用时对局也会被拆除,这包括 /exc reload 和服务器关闭。