触发器与条件
15 个触发器、最多 11 个条件、目标上下文、常用配方与逐层排查。
LiDungeon 的逻辑结构是:
事件发生 -> 触发器捕获 -> 逐项检查条件 -> 通过后执行功能
“触发器少”通常有三种原因:当前菜单分类、地牢类型或可选依赖不同。当前完整基准是 15 个触发器;程序化房间触发器只在相关场景使用,MythicMobs 会把普通生物死亡触发器替换为 Mythic 版本,所以总数仍是 15。
触发器完整清单
| 中文菜单名 | 内部类型 | 触发时机 | 关键设置 |
|---|---|---|---|
| 方块检测器 | TriggerBlockDetector |
指定位置方块被放置或破坏 | 检测放置/破坏、方块、延迟;同时允许该位置操作 |
| 聊天消息 | TriggerChat |
玩家发送匹配文本 | 文本、完全匹配、大小写、重复、延迟 |
| 玩家检测器 | TriggerDistance |
玩家进入位置半径 | 半径、最少玩家、逐玩家触发、重复、延迟 |
| 地牢开始 | TriggerDungeonStart |
地牢正式开始 | 适合开场标题、刷怪、关门 |
| AND 门 | TriggerGateAnd |
关联触发器全部激活 | 子触发器列表 |
| OR 门 | TriggerGateOr |
任一关联触发器激活 | 子触发器列表 |
| 右键方块 | TriggerInteract |
玩家按配置点击位置方块 | 点击类型、重复、延迟 |
| 钥匙物品检测器 | TriggerKeyItem |
玩家使用指定物品 | 物品、点击类型、消耗、任意位置、重复、延迟 |
| 离开地牢监听器 | TriggerLeaveDungeon |
玩家离开实例 | 可阻止普通离开、重复、延迟 |
| 生物死亡计数器 | TriggerMobDeath 或 TriggerMythicMobDeath |
指定生物死亡达到数量 | 生物 ID、数量、半径、重复、延迟 |
| 玩家死亡计数器 | TriggerPlayerDeath |
玩家死亡次数达到要求 | 数量、按玩家计数、重复、延迟 |
| 红石信号接收器 | TriggerRedstone |
指定方块收到红石 | 重复、延迟;没有明确玩家/队伍目标 |
| 信号接收器 | TriggerRemote |
收到同名远程信号 | 信号名、等待条件、重复、延迟 |
| 房间门开关 | TriggerRoomDoorChange |
程序化房间门打开或关闭 | 门名、动作、重复 |
| 进入/离开房间 | TriggerRoomPresence |
玩家进入/离开程序化房间 | 触发时机、原因筛选、重复 |
每个触发器还能添加条件,并可限制到房间。位置型触发器复制/旋转后要验证位置和朝向。
11 类条件
基础安装有 9 类;安装 MythicMobs 和 PlaceholderAPI 后最多 11 类。
| 中文菜单名 | 内部类型 | 判断内容 | 常见用途 |
|---|---|---|---|
| 触发概率 | ConditionChance |
随机概率 | 随机彩蛋、掉落分支 |
| 地牢难度 | ConditionDifficulty |
LiDungeon 难度 ID | HARD 专属怪物;与原版 /difficulty 无关 |
| 变量比较 | ConditionInstanceVariable |
当前实例共享变量 | 阶段、机关总进度 |
| 范围内生物 | ConditionMobWithin |
半径内指定生物数量 | 清怪开门、Boss 存活检查 |
| 玩家数量 | ConditionPartySize |
当前或初始玩家数 | 多人机关、人数缩放 |
| 范围内玩家 | ConditionPlayersWithin |
位置周围玩家数量 | 全员到齐、区域占领 |
| 玩家变量比较 | ConditionPlayerVariable |
每名目标玩家变量 | 个人任务、个人钥匙状态 |
| 地牢状态 | ConditionStatus |
自定义状态字符串 | 阶段机、Boss 状态 |
| 已用时间 | ConditionTimeElapsed |
运行时间范围 | 限时分支、延迟阶段 |
| Mythic 条件 | ConditionMythic |
MythicMobs 条件行 | 仅安装 MythicMobs |
| 占位符检查 | ConditionPlaceholderAPI |
PAPI 输出比较 | 仅安装 PlaceholderAPI,可选择检查全部玩家 |
条件可以切换“要求通过/要求不通过”。排查时先确认这个反转开关,避免判断逻辑与预期相反。
执行与目标上下文
触发器是否能提供明确玩家目标,决定后续功能能否对某个玩家执行:
- 玩家检测、聊天、交互、钥匙、玩家死亡通常有玩家上下文;
- 红石等世界事件没有明确玩家,后续“玩家目标”功能可能没有对象;
- “为每名玩家触发”开启时,玩家检测器会为范围内每名玩家分别执行;关闭时通常只为最近玩家触发一次;
- 限制到房间可避免同一模板在不同程序化房间中误触。
常用逻辑配方
清怪开门
生物死亡计数器(数量=10)
+ 条件:范围内生物=0
-> 门控制器(解锁/打开)
-> 标题(区域已清理)
两个机关同时激活
右键方块 A ─┐
├─ AND 门 -> 门控制器
右键方块 B ─┘
全员到达后开始 Boss
玩家检测器(半径=6、最少玩家=N)
+ 条件:玩家数量达到队伍人数
-> 多功能组合
-> 门控制器(关闭入口)
-> 生物生成器(Boss)
-> Boss 血条
远程信号跨区域联动
任意触发器 -> 信号发送器(signal=boss_dead)
远处信号接收器(signal=boss_dead, 等待条件=true)
-> 奖励/出口/标题
触发器不出现
- 查看启动日志加载数量。
- 确认是在正确的功能/触发器菜单与分类。
- 房间门和房间成员触发器需要程序化房间上下文。
- MythicMobs 安装后普通死亡触发器会被 Mythic 版本替换,不会同时显示两个。
- PAPI 只增加条件,不增加触发器。
- Citizens 只增加 NPC 功能,不增加触发器。
- 可选插件必须在 LiDungeon 启动前成功加载;热装插件后要重启。
触发了但功能没执行
按以下顺序拆解:
- 临时移除全部条件,验证事件能否触发。
- 只绑定“消息发送器”,验证功能链。
- 逐个加回条件,检查比较符、数值类型和反转开关。
- 检查目标类型:当前事件是否提供玩家、队伍或位置。
- 关闭“只触发一次”类限制,重新进实例测试。
- 确认没有把触发器限制到错误房间。
- 保存、退出编辑、重载地牢后再测试一个全新实例。
不要直接在旧活动实例里判断重载是否生效;活动实例通常保留创建时的运行状态。