跳到主要内容

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 等级 —— 中心等级最高,边缘等级最低 —— 不断收缩的边界会稳步把玩家推向地图中更难也更有回报的区域。

一旦边界收缩到零,边界伤害就会变为致命,而致命伤害会把玩家移出对局(见下文)。当最后一名玩家离开后,对局结束,其世界被删除。

撤离

  1. 找到一个撤离点。屏幕顶部的 Boss 血条条是一条指南针带:它会为你视线 90° 范围内的每个撤离点显示一个 ⦿ 标记,大约每个字符 3°。这条带子在对局开始时就会出现,但在最初的一分钟内保持为空 —— 标记只会为可用的撤离点绘制,而那些撤离点要等解锁计时器触发后才会被放置。
  2. 右键点击撤离点上的拉杆。拉杆会被消耗,10 格范围内的所有人都会收到 "You have triggered an exit!" 提示,并为该撤离点开启一个单次 20 秒的撤离窗口
  3. 站在撤离区域内 —— 那是一个自撤离点向各个方向延伸 3 格的立方体。当你处于其中时,会看到 Extracting! in N seconds!
  4. 走出去会显示 Extraction cancelled!,但窗口仍在继续计时。在它关闭之前重新回到里面依然算数。
  5. 窗口关闭时,所有站在里面的人会同时撤离Victory / Extraction successful!。他们会被移出对局,并保留身上携带的一切。
每个撤离点只有一次窗口

拉动拉杆会摧毁它。如果你触发了某个撤离点却错过了那 20 秒窗口,这个撤离点就废了 —— 去找另一个吧。

死亡与物品损失

Extractioncraft 的对局给每位玩家一条命,没有重生,也没有死亡箱子。

  • 会致死的伤害会被直接取消。取而代之的是,该玩家被移出对局。
  • 被移出时,其生命值会恢复到上限,先前的游戏模式会被还原,并被传送回加入前所站立的位置。
  • 其背包中的所有物品都会被灵魂绑定(EliteMobs 的灵魂绑定附魔)—— 而后,如果这次移出并非一次成功的撤离,且 deleteItemsOnFailToExtracttrue(默认值),整个背包都会被清空。

/exc leave/exc quit 和断线使用的是同一条移出路径,因此在进行中的对局里,这三种方式都会让你失去战利品。

你离开的方式保留战利品?
在撤离点成功撤离
被怪物、玩家或边界击杀否(在默认配置下)
对局途中执行 /exc leave/exc quit否(在默认配置下)
对局途中断线否(在默认配置下)
在对局仍处于等待或倒计时阶段时离开

世界保护

实例对局世界在其整个生命周期内都受到保护:

  • 玩家无法破坏或放置方块、使用骨粉,或破坏地形。
  • 在对局开始之前,红石交互被阻止。
  • 当内容包设置 pvpEnabled: false 时,PvP 被阻止。
  • 传送进入或离开对局世界都会被取消。只有插件自身的传送才能通过。
  • 在对局进行期间,运行时会扫描对局世界中的闯入者。管理员(op)不受影响,只会收到一条动作栏警告而不会被移出。请注意,移出操作本身只对服务器仍保有对局玩家记录的玩家有效(即自上次重启以来进过对局的人);从未进过对局的玩家会被检测到,但实际上不会被移动。
  • 还有一个看门狗会检查已离开对局区域的玩家,但它试图把他们放回实例的起始位置,而 Extractioncraft 从未设置过该位置 —— 因此这道特定的安全网目前并不起作用。实际上,离开对局世界的传送本来就已经被直接取消了。

管理员可以用 /exc protection bypass 为自己关闭这些保护。

结束对局

当最后一名玩家被移出对局时,对局即告结束 —— 无论他是撤离、死亡、离开还是断线。对局结束会永久删除该实例世界,因此留在其中的任何东西都不会保留。

当插件被禁用时对局也会被拆除,这包括 /exc reload 和服务器关闭。