Skip to content

Door System

oneachina edited this page Jul 25, 2026 · 2 revisions

门系统

门是 ZombieRun 的核心机制。玩家按编号顺序依次通过大门向终点推进。

门生命周期(v2)

按钮触发
  ↓
倒计时(duration 秒)—— Title 显示 "X 号大门即将开启……"
  ↓
门开了!(方块变空气)—— Title 显示 "X 号大门开启"
  ↓
倒计时(duration 秒)—— Title 显示 "X 号大门将在 N 秒后关闭……"
  ↓
关门判定(一次性,方块恢复)
  ├── 已通过玩家(位置 > 门中心)→ 更新 playerRoom + 触发 SpecialBehavior(如有)
  └── 未通过玩家(位置 < 门中心)→ 10 秒传送倒计时 → 传送到 DOOR_PLAYER/DOOR_ZOMBIE 重生点

核心变化(v1 → v2)

  • 不再实时追踪玩家"穿过门"事件。关门那一刻一次性判定位置
  • 开门和关门共用一个 duration 参数(默认 15 秒)。
  • 同组多扇门(如地铁三入口)共享一个门号,按钮触发一扇即全开,全部关后统一判定。

门模式

模式 触发方式 门号 用途
normal 人类右键按钮 自动递增 游戏主流程门
player 开局自动开启 人类初始区域的出口
zombie 开局 100 tick 后自动开启 僵尸初始区域的出口
start 游戏开始即开启 起始门

player / zombie / start 门不参与门号系统。

门组

多扇门使用相同 group 名即为一个门组。同组门共享门号、联动开启/关闭。

典型场景:地铁站多个入口 → 三扇门同组同号,任意按钮触发全部开启,全部关后统一传送。

# 第一扇:新组自动分配门号
/zr doors add normal -g subway_line1

# 第二、三扇:同名组自动继承门号
/zr doors add normal -g subway_line1
/zr doors add normal -g subway_line1

选区工具 postool

无需手打坐标,用选区棒可视化选区。

/zr postool                          # 获得木棍选区棒(再输一次关闭)
左键方块 → pos1                       # 第一个角
右键方块 → pos2                       # 第二个角
/zr doors add normal [-g 组名] [duration]

postool 选区同时也用于特殊行为的目标坐标:

  • pos1 = 人类传送目标
  • pos2 = 僵尸传送目标(可选,不设则不传僵尸)

添加门

# postool 选区后(推荐)
/zr doors add normal                               # 默认 duration
/zr doors add normal -g my_group 20                # 组 + duration=20
/zr doors add player                               # 起始门
/zr doors add zombie                               # 起始门

# 手打坐标(兼容旧方式)
/zr doors add <x1> <y1> <z1> <x2> <y2> <z2> <mode>

添加时自动扫描门区域内所有方块类型,关门时精确恢复。

编辑门

/zr doors edit <门名> duration <>
/zr doors edit <门名> door-number <新号>
/zr doors edit <门名> group <新组名>

查看 / 删除 / 重置

/zr doors info <门名>               # 查看详情
/zr doors list                      # 列出所有
/zr doors remove <门名>             # 删除
/zr doors reset <门名>              # 重置为关闭

按钮

按钮方块必须是 REDSTONE_LAMPLEVER

普通按钮

/zr buttons add <x> <y> <z> normal <门号>

人类右键触发开门倒计时。非人类无法操作。

撤离按钮(直升机)

/zr buttons add <x> <y> <z> escape

人类右键启动 30 秒直升机撤离倒计时,倒计时结束人类获胜。按钮使用后消失。

特殊传送行为

关门时自动传送"已通过"的玩家。支持人类/僵尸独立目标坐标。僵尸坐标不设则不传送僵尸。

地铁 Subway

关门 → 立即传送到绝对坐标(人类/僵尸各自的目标)。

# postool 选区后(推荐):pos1=人类目标, pos2=僵尸目标
/zr door behavior set <门号> subway "线路名"

# 手打坐标
/zr door behavior set <门号> subway "线路名" <hx> <hy> <hz> [zx] [zy] [zz]
配置项 说明
human-target-x/y/z 人类落地坐标
zombie-target-x/y/z 僵尸落地坐标(可选)
line-name 线路名称,用于 Title 提示

关门倒计时期间 Title 自动显示:

  • 未上车玩家:"X号线列车将在 N 秒后发车,请立即上车!"
  • 已上车玩家:"X号线列车将在 N 秒后发车……"

电梯 Elevator

关门 → 倒计时 → 垂直传送(保持 X/Z,改变 Y)。

# postool 后:pos1.y=人类Y, pos2.y=僵尸Y
/zr door behavior set <门号> elevator

# 手打
/zr door behavior set <门号> elevator <人类Y> [僵尸Y]
配置项 说明 默认
human-target-y 人类目标楼层 必填
zombie-target-y 僵尸目标楼层 可选
countdown 到达倒计时秒数 5

机场专线 Airport

关门 → Title 提示 → 延迟 tick 后传送(无倒计时 UI)。

/zr door behavior set <门号> airport [delayTicks]
配置项 说明 默认
human-target-x/y/z 人类目标 必填
zombie-target-x/y/z 僵尸目标 可选
delay-ticks 延迟 tick 数 60

查看 / 移除

/zr door behavior info <门号>
/zr door behavior remove <门号>

按门号操作,同组门自动全部生效。

房间号系统

每个玩家有一个 room 属性:

  • 关门时一次性判定:位置 > 门中心 → playerRoom 更新为该门号
  • 关门时 room < doorNumber 的玩家触发 10 秒传送倒计时
  • 用于 PlaceholderAPI:%zombierun_room%

Clone this wiki locally