蓝图引擎

蓝图引擎

游戏内节点编辑器:连接逻辑、声明类型化变量、在真实世界事件上于服务器端运行。239个节点,每个图都是可读文本且可还原。屏幕设计器、声明内容、性能分析器,以及供其他模组添加节点的API。

节点编辑器

Blueprints

一个用于 Minecraft 1.21.11 的游戏内节点编辑器。 放置节点、连接它们、声明类型化变量——图表会在服务器端根据真实世界事件运行。

与Team Abnormals的 Blueprint 模组,或名为 Blueprints 的模组无关——名称冲突,但项目不同。本模组名为 blueprints-mod。其模组ID和命名空间保持为 blueprint,因为重命名会破坏所有已有的图表。

声明一个命令,获得一个命令

声明了 home 的图表会获得一个真正的 /home 命令——无前缀,支持Tab补全,与服务器上其他命令一样。已被占用的名称会被拒绝,而不是被静默抢占:/kill 仍是原版命令。

on blueprint:event/command(player, name, arg) @with(name: "home") {
  blueprint:flow/branch(condition: blueprint:var/get(var: "defini")) {
    true: {
      blueprint:entity/teleport(entity: $player, pos: blueprint:var/get(var: "point"))
    }
    false: {
      blueprint:player/send_message(player: $player, text: "No home set — use /sethome")
    }
  }
}

图表即文本,文本即图表

上述片段并非伪代码。它是 BScript,即每个图表编译后生成的精确文本——而每个BScript也能解析回相同的图表。这不是导出:而是往返转换,受每次构建时的测试保护,包括重新读取模组自带示例的测试。

这正是让图表可以在拉取请求中被审查、可进行差异比较、可以粘贴到聊天窗口中的原因。在编辑器中复制,在Discord中粘贴,再粘贴回编辑器。

对服务器的开销

节点编辑器容易让人联想到缓慢的解释器。以下是由提交到仓库的基准测试得出的测量结果,这些测试若性能偏移会导致构建失败。

在 server_tick 上激活的图表 每tick调度时间 占50毫秒预算的比例
50 约0.25毫秒 0.5%
200 约0.6毫秒 1.2%

每个图表都在燃料预算下运行。失控的循环会被中断并报告,而不会让服务器宕机。反复出错的图表会自动禁用自身。

你也可以在游戏内用三条命令自行验证:

/blueprint bench
/bench
/blueprint profile blueprint:bench

基准测试本身就是一个真实的图表——包含三个嵌套循环——你可以在编辑器中打开、阅读和编辑它。没有任何隐藏在你无法看到的基准测试框架背后。

内置内容

  • 完整编辑器 — 面板、类型化连线、节点上的字面量、变量与作用域、撤销/重做、以BScript复制粘贴、可点击的诊断信息、脚本视图、注释、小地图、可重载的JSON主题、键盘导航。
  • 239种节点类型 — 屏幕(34)、数学(20)、世界(20)、玩家(19)、字符串(12)、流程(12)、实体(12)、向量(11)、逻辑(10)、列表、地图、文本、物品、记分板——包含26种事件。
  • 可持久化的类型化变量 — 数字、文本、布尔值,以及向量、方块位置和方向,作用域从单次执行到世界范围共五级。玩家的家坐标在重启后依然保留。
  • 屏幕设计器 — 12种小部件(标签、按钮、列表、下拉框、滑块、开关、输入框、进度条、物品槽、图片、实体预览、面板),并支持绑定:标签可以 跟随 变量,而无需通过节点写入。
  • 声明式内容 — 通过JSON文件定义物品和方块,无需编写代码。
  • 调试功能 — 断点、单步执行、编辑器中的实时数值、逐节点分析器。
  • 原生多人支持 — 登录时同步注册表、保存时乐观锁、服务端保护与配额。
屏幕设计器

三种扩展方式

其他模组可以通过Java构建器、@BlueprintNode 注解或纯数据包JSON来添加自己的节点——无需强制依赖。

移除这样的模组不会破坏现有图表:其节点会变成幽灵节点,保留其连线,并在模组重新安装时恢复生效。

安装

  1. Fabric Loader 0.16+ 和 Java 21
  2. Fabric API 0.139.4+
  3. 将jar文件放入 mods/ 文件夹

然后执行 /blueprint-edit create my_first,或按 F6 键。十分钟入门指南位于 docs/getting-started.md。

NeoForge:已存在NeoForge版本,并可在客户端和服务端启动,但Fabric是经过端到端完整测试的版本。NeoForge上仍有三处已知缺口,列于 docs/plan-multiloader.md。请知悉后使用。

仅服务端使用?编辑器是客户端组件,因此玩家需要安装模组才能编辑——但图表在服务端运行,原版客户端可以加入运行这些图表的服务器游玩。

许可证

MIT。 源代码 · 问题反馈


法文版

一个用于Minecraft 1.21.11的游戏内节点式逻辑编辑器。 放置节点、连接它们、声明类型化变量——图表会在服务端根据真实世界事件运行。

声明了 home 的图表会获得一个真正的 /home 命令,无前缀且支持自动补全。已被占用的名称会被拒绝,而不是被静默抢占:/kill 仍是Minecraft原版命令。

每个图表都会编译成可读的文本脚本(BScript),每个BScript也能重新解析回图表:这是往返转换,而非导出,并且在每次构建时都会进行验证。因此,图表可以在拉取请求中被审查、进行比较,也可以粘贴到聊天室中。

服务端的开销由已提交的基准测试进行测量,若性能偏移会导致构建失败:200个连接到 server_tick 的图表每tick占用约0.6毫秒,即预算的1.2%。每个图表都在燃料预算下运行——失控的循环会被中断并报告,绝不会让服务器宕机。

其余功能:239种节点类型(含26种事件)、可跨越重启持久化的类型化变量(数字、文本、向量、位置、方向)、包含12种小部件的屏幕设计器、JSON声明的物品内容、断点与分析器,以及让其他模组无需硬依赖即可添加节点的API——被移除的模组会留下幽灵节点,在重新安装时恢复生效。

入门指南: docs/getting-started.md。