建造者

建造者

一款Fabric模组,能批量从特殊格式的JSON文件导入建筑结构。

Buildcraft

English | 中文

Builder

简介

一个 Fabric 模组,可从特殊格式的 JSON 文件中批量导入建筑。

它最初是为 3D 模型转 Minecraft 工具 — Minecraftify2.0 开发的数据导入器,并常与其配合使用。

当然,此模组也可以独立使用。只要你能够生成所需格式的 JSON 文件,就可以使用此模组导入建筑。

功能

  • 从位于 config/mybuilds/ 目录下的 JSON 文件批量导入方块。
  • 玩家可以使用 builder:anchor_block 来设置相对坐标系的原点和朝向,从而精确控制导入方块的位置和朝向。
  • 支持撤销功能以防止失误。你可以撤销最多最近 3 次建筑操作。
  • 支持将当前世界中的方块导出到 JSON 文件。

使用方法

  1. 在 config/mybuilds/ 目录下创建一个特定格式的 JSON 文件,例如 example.json

    • 你可以使用 Minecraftify2.0 从 3D 模型生成 JSON 文件。详情请参阅其 仓库文档。
    • 你也可以使用 /builder save 命令从当前世界导出 JSON 文件。具体用法见下文。
    {
        "minecraft:stone": [[1, 0, 0],[2, 0, 0],[3, 0, 0]],
        "minecraft:oak_planks": [[0, 1, 1],[0, 1, 2]],
        "minecraft:spruce_stairs":[[2, 0, 1, 3]],
        "minecraft:oak_log":[[3, 0, 1, -3],[4, 0, 1, -1]]
    }
    • 键是方块 ID,值是相对坐标的数组。
    • 相对坐标数组中的每个元素代表一个方块的相对坐标,格式为 [x, y, z, w]。
      • x 表示相对于原点的 x 轴偏移。
      • y 表示相对于原点的 y 轴偏移。
      • z 表示相对于原点的 z 轴偏移。
      • w 是可选参数,用于指定具有方向属性方块的方向。
        • 当为正数时,代表水平方向。对应的数值对应下图(例如,楼梯):
        • 当为负数时,代表轴向方向。对应的数值对应下图(例如,原木):
  2. 在游戏世界中放置一个 builder:anchor_block 来定义参考原点和朝向。

  3. 运行命令:

    /builder place example

    结构将在距离玩家最近的锚点方块处生成。

  4. 要撤销上一次操作,请运行:

    /builder undo

    这将撤销最近的建筑操作(最多 3 次)。

  5. 如果需要从当前世界导出建筑,请输入:

    /builder save <x> <y> <z> <name>

    其中 <x> <y> <z> 代表选定的区域范围。

    模组将以距离玩家最近的锚点方块作为起点 (0,0,0),并将从 (0,0,0) 到 (x,y,z) 范围内的方块数据导出到 config/mybuilds/<name>.json 文件中。

    请注意,x 轴对应红色轴,y 轴对应绿色轴,z 轴对应蓝色轴。导出的 JSON 文件格式与导入的格式相同。

命令列表

  • /builder place <name> 从 config/mybuilds/<name>.json 导入建筑
  • /builder list 列出 config/mybuilds/ 目录下的所有 JSON 文件
  • /builder anchors 列出所有锚点方块的坐标
  • /builder undo 撤销最近的建筑操作
  • /builder clear 清除所有锚点方块
  • /builder save <x> <y> <z> <name> 将指定区域内的方块数据导出到 config/mybuilds/<name>.json 文件
  • /builder help 显示帮助信息

注意事项

  • 在生成建筑之前,你必须放置一个锚点方块。模组在放置结构时会自动找到离玩家最近的锚点方块。

  • 锚点方块可以在建筑方块物品栏标签中找到。

  • 撤销仅适用于使用 /builder place 命令放置的方块,不会影响手动放置的方块。

  • 由于 JSON 文件只记录了方块的相对坐标,因此无法精确导入某些特殊方块(如按钮、门等,这些方块包含更多信息)。

致谢

本项目基于 FabricMC/fabric-example-mod。