跳转到内容

世界逻辑

世界逻辑是为地图加入游戏行为的规则列表。无需编写代码。编辑器将规则作为数据(scene.json)导出后,服务器插件 NP Scene 会原样执行。

一条规则按以下顺序执行。

顺序部分含义示例
1触发器规则开始的事件(一个)进入区域时 · 右键 Actor · 破坏方块时 · 计时器
2过滤规则限制全局仅一次 · 每位玩家一次 · 冷却 · 权限
3条件全部为真时才继续时段 = 夜晚 · 手持物品 · 概率
4动作从上到下依次执行声音 · 屏幕标题 · 显示 Actor · 等待 · 传送

加入动作「等待」(wait)后,其后的动作会延迟指定的秒数执行。等待期间如果同一规则再次发生,会另外再运行一份。

触发器、条件、动作的完整列表及字段见世界逻辑 type 列表。

内容位置
世界逻辑面板工具 › 世界逻辑(下方停靠区域的「世界逻辑」选项卡。也可在「窗口」菜单中打开)
区域触发器向导Ctrl+Shift+T · 工具 › 创建区域触发器… · 面板中的「区域触发器」·「添加」› 区域触发器(向导)
以节点查看同一规则工具 › 逻辑图 — 逻辑图

使用区域触发器向导创建「进入时播放声音 + 显示标题」的规则。

  1. 按 Ctrl+Shift+T。
  2. 在视口地面上拖动以绘制区域。直接单击则生成 4×4 区域。按 Esc 取消绘制。
  3. 在向导窗口的「名称」中输入 入口。
  4. 「何时」保持为「玩家进入时」。
  5. 在「要执行的动作」中点击「播放声音」和「显示标题」。下方会生成对应的行。
  6. 确认「结果」栏中的一行说明(例如「玩家进入「入口」时 → …」)。
  7. 点击「创建」。区域 Actor 和规则会一并生成(按一次 Ctrl+Z 即可全部撤销)。
  8. 如需立即确认,点击「创建并立即测试」。运行将开始。

面板分为左侧的规则列表和右侧的属性栏。

元素作用
「区域触发器」启动区域触发器向导(在视口中拖动创建新区域)。
「变量」打开变量 · enum · 数据类型窗口 — 变量 · 函数 · 数据类型
+新建规则(进入区域 → 消息)。
复制 · 删除复制或删除所选规则。
上移 · 下移调整规则顺序。同一时刻触发的规则按列表顺序执行。
规则行启用图标 · 触发器图标 · 名称 · 一行说明 · 错误/注意图标
「触发」(行尾)附在仅能手动触发的触发器的规则上。在运行中按该事件已发生的方式执行。

列表下方还有三个栏。

栏内容
区域「在视口中显示区域·阻挡框」· 所选区域说明 · 区域检查
模拟时段(大气预览时刻 · 白天 · 夜晚)· 天气(晴天 · 雨天 · 雷暴)· 拥有全部权限
历史「运行测试」按钮及触发 · 跳过 · 动作记录(时间以秒计)

在视口或大纲中选择区域后,使用该区域的规则会在列表中高亮显示,并打开第一条规则。如果没有使用该区域的规则,会显示「为“名称”添加要执行的事」按钮。

部分内容
头部使用复选框 · 触发器图标 · 规则名称 ·「触发」(仅能手动触发的触发器)· 用向导修改
一行说明以 → 开头的通俗说明。每次修改都会更新。
idscene.json 中的规则 id。只能使用英文字母、数字及 _ . -。按 Enter 确认修改。
触发器type 按钮 + 字段
条件条件卡片列表 +「添加条件」
动作动作卡片列表 +「添加动作」
过滤全局仅一次 · 每位玩家一次 · 冷却 · 权限
  • 点击 type 按钮后,会打开按分组(区域 · 流动 · 世界 · 画面 · Actor · 碰撞 · 方块 · 战斗 · 变量 · 函数)划分的菜单。
  • 仅能手动触发的触发器在菜单中会附有「(触发按钮)」。
  • 更换 type 时,同名的 Actor 字段和文本字段的值会原样保留。
  • 条件、动作卡片上有编号、上移、下移、复制、删除按钮。
  • 必填字段的名称后带有 *。
  • Actor 字段的选择列表中只显示与该字段类型相符的 Actor。
  • 检查信息(错误 · 注意)显示在对应字段的正下方。
字段scene.json含义
全局仅一次once在整个服务器中只执行一次。
每位玩家一次once_per_player每人执行一次。开启「全局仅一次」时不生效。
冷却cooldown同一人再次执行前需要等待的秒数。
权限permission只有拥有该权限节点的人才能执行(例如 noplatea.vip)。

条件为假时,不会留下触发记录(仅一次 · 冷却)。

在地面上拖动绘制区域后,向导窗口打开。视口中会显示黄色的草稿盒。

字段选项
名称区域(或阻挡框)Actor 的名称
大小X(宽)· Z(长)· Y(高)的格数。保持地面中心不变进行调整。
何时玩家进入时 · 玩家离开时 · 碰撞时 (撞到阻挡盒) · 破坏方块时
要破坏的方块选择「破坏方块时」时使用。留空表示任意方块,也可以使用 #minecraft:logs 之类的标签。
何人任何人 · 仅第一个人 (全服仅一次)
循环每次 · 仅一次 (每位玩家)

点击「要执行的动作」中的按钮会生成一行。各行从上到下依次执行。

要执行的动作生成的动作
播放声音声音
显示标题屏幕标题
聊天消息聊天消息
显示 Actor显示 Actor — 选择新文本时,会在区域上方创建一个隐藏的文本 Actor。
显示方块填充方块 — 将用选择工具(4)选中的区域作为范围。
播放动画播放动画
传送传送 — 选择新目的地时会创建出生点 Actor。
开门将门的范围变为空气,并在指定秒数后恢复(可选择开关门声音)。
检查点动作栏文本 + 检查点 — 指定复活位置(出生点 Actor)。
  • 「创建」会一次性生成区域、所需的 Actor 和规则。
  • 用向导修改已有规则时,按钮会变为「保存」·「保存并立即测试」。
  • 向导无法识别的动作会作为「其他动作」行原样保留。条件、冷却、权限也保持不变。
  • 选择「碰撞时」时,会创建阻挡框而不是区域。

自 0.9.11 起:「破坏方块时」·「放置方块时」·「右键方块时」触发器新增了「在哪里」字段。

「在哪里」area判定
区域zone触发区域 Actor 内的方块(与以往相同)
所选方块blocks仅限在视口中选中的方块格
任意位置anywhere整个世界。无需区域。

使用「所选方块」的步骤如下。

  1. 在视口中用选择工具选中方块。
  2. 点击「所选方块」字段中的「从选区」。除空气以外的格子会被填入。
  3. 点击眼睛按钮,会在视口中重新选中并显示这些格子。
  • 所选方块最多 4,096 格。范围较大时请使用区域 Actor。
  • 没有「在哪里」的旧规则按「区域」读取。
  • 可以用「方块」字段过滤方块类型(留空表示任意方块)。

每次修改规则时都会进行检查。列表行中显示错误、注意图标,属性栏中则在对应字段下方显示信息。

类型示例
错误不存在的 Actor · 类型不符的 Actor · 不存在的片段 · 错误的声音 id · 被方块埋住而无法进入的区域 · 同名的函数规则
注意声音库 · 原版中不存在的声音 · 没有接收规则的信号 · 没有 wait 的信号循环 · 没有规则使用的区域 · 规则全部关闭的区域 · 未知 type

未知 type(本编辑器中不存在的事件插件的 type)以只读字段显示,并原样保留。如果服务器上有该插件,则会执行。

控制台命令 logic 以文本形式显示规则、片段列表及检查结果。

  1. 在导出窗口中创建 .npbuild 时开启「包含场景」(默认开启)。scene.json 会被放入 .npbuild 中 — 导出与导入
  2. 将 .npbuild 安装到服务器时,会应用旋转、翻转、位置并转换为服务器坐标。
  3. 服务器插件 NP Scene 执行规则。不会生成新的代码。
  • 坐标以建筑的最小角(origin)为基准导出。格式见 scene.json 格式。
  • 「仅一次」记录、标志等状态由服务器保存在 state.json 中。
  • 动作「服务器命令」需要运营者在服务器设置中开启后才会执行。编辑器不会执行。
选项位置默认值含义
在视口中显示区域·阻挡框面板「区域」开触发区域半透明盒 + 名称 · 规则一行说明,阻挡框(斜线)
时段面板「模拟」大气预览时刻运行时「时段」条件所参照的时间
天气面板「模拟」晴天运行时「天气」条件所参照的天气
拥有全部权限面板「模拟」开关闭后,运行时权限过滤和条件为假
包含场景导出窗口开将 scene.json 放入 .npbuild
键动作
Ctrl+Shift+T创建区域触发器(拖动绘制区域 → 向导)
Esc取消绘制区域 · 关闭向导窗口
Ctrl+Z撤销规则更改(文本输入合并为一步)
1~9运行中执行「触发」列表中的规则
  • 规则较多时,可用逻辑图一览整体流程。两者是同一份数据,在哪一边修改都可以。
  • 运行中修改规则,会从下一次运行开始生效。运行在开始时会复制规则使用。
  • 「破坏方块时」·「受到伤害时」等触发器不会在运行中自动发生。请用「触发」按钮或数字键进行测试。
  • 「取消事件」动作只有作为规则的第一个动作时才有意义(在 wait 之前)。
  • 「发送信号」会当场立即执行接收该名称的规则。有多个接收规则时全部执行。