ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

MCreator 拼图结构生成:详解 Jigsaw 大小(size)参数的作用与配置

MCreator 拼图结构生成:详解 Jigsaw 大小(size)参数的作用与配置
  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】MCreator

MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.

项目地址:https://gitcode.com/gh_mirrors/mc/MCreator
点击查看免费下载

MCreator 的结构(Structure)元素支持生成 Minecraft 原版风格的 Jigsaw 拼图结构,而size(大小)参数直接决定了这一生成过程的深度与规模。本文以官方帮助文档plugins/mcreator-localization/help/de_DE/structure/jigsaw_size.md为核心,结合仓库中 Structure.java 与结构生成模板源码,系统讲解 size 参数的含义、取值范围、生成效果及其与回落池(Fallback Pool)的配合方式,帮助你正确配置可复现的拼图结构。

一、size 参数是什么:拼图结构的"扩展深度"

在 Minecraft 原版机制中,Jigsaw 结构(如村庄、前哨站、古城)由多个通过拼图方块(Jigsaw Block)拼接在一起的部件结构组成。生成时,游戏从主结构(Start Pool)开始,沿着拼图连接点逐层向外扩展,把更多部件"挂"到已放置的部件上。

size 参数定义的就是这个扩展过程的规模:它决定了可以生成多少个拼图部件结构、以及它们能与主结构及彼此之间建立多少层连接。官方帮助文档中的原文说明为:

Dieser Parameter definiert wie viele Jigsaw-Teilstrukturen generiert werden können/mit ihrer Hauptstruktur verbunden werden können. (此参数定义可以生成多少个、能够与主结构相互连接的拼图部件结构。)

简单来说:size 越大,结构可以向外"生长"的层数越多、能挂接的部件越多,最终生成的整体结构也就越大、越复杂。

二、取值范围、默认值与界面位置

在 MCreator 源码中,size字段定义于 Structure.java:

@Numeric(init = 1, min = 0, max = 20, step = 1) public int size;

由该注解可以确认三个关键信息:

  • 默认值(init)为 1,即新建结构元素时,默认只允许 1 层拼图扩展;
  • 取值范围为 0~20,步长为 1(整数);
  • 构造方法中将this.size = 1作为初始化值,与注解默认值保持一致。

在界面侧,该参数位于 StructureGUI.java 的"拼图大小"面板中,与"距中心最大距离(maxDistanceFromCenter)"参数并排展示:

JPanel jigsawSize = new JPanel(new GridLayout(2, 2, 10, 2)); jigsawSize.add(HelpUtils.wrapWithHelpButton(this.withEntry("structure/jigsaw_size"), ...)); // 帮助按钮指向本文档 jigsawSize.add(size); jigsawSize.add(HelpUtils.wrapWithHelpButton(this.withEntry("structure/jigsaw_max_distance_from_center"), ...)); jigsawSize.add(maxDistanceFromCenter);

值得注意的是,withEntry("structure/jigsaw_size")正是帮助你当前阅读的这篇帮助文档在软件内被索引调用的方式——它在 MCreator 的"结构"元素编辑界面中通过"?"帮助按钮弹出。

三、size 如何落到生成的 Minecraft 数据包 JSON 中

当 MCreator 生成模组时,结构元素会被输出为原版数据包格式的minecraft:jigsaw结构 JSON。核心模板为 structure.json.ftl:

{ "type": "minecraft:jigsaw", "start_pool": "${modid}:${registryname}", "size": ${data.size}, "max_distance_from_center": ${(data.terrainAdaptation != "none")?then([data.maxDistanceFromCenter, 116]?min, data.maxDistanceFromCenter)}, ... }

可以看到,MCreator 界面上设置的size值会原样写入原版结构 JSON 的size字段。在 Minecraft 内部,JigsawStructure 的size字段语义即为拼图扩展的最大深度:游戏递归地从 Start Pool 出发,每一层深度沿着各部件中拼图方块的 target pool 查找并放置新部件,直到达到size深度上限为止。

与之直接相关的是同面板的max_distance_from_center(距中心最大距离)参数,定义于 Structure.java:

@Numeric(init = 64, min = 1, max = 128, step = 1) public int maxDistanceFromCenter;
  • 默认值 64,范围 1~128;
  • 它从另一个维度约束拼图部件生成:部件距离结构中心不得超过该值;
  • 从生成模板可以看出,当地形适应(terrainAdaptation)不为"none"时,游戏实际还会把该上限进一步收紧到 116,因为地形调整需要额外空间。

因此,size 与 max_distance_from_center 是一对协同参数:前者控制"能往外扩几层",后者控制"最远能扩到哪里",两者共同决定了结构生成的范围。

四、回落池(Fallback Pool):让结构"封口"的关键一步

文档特别强调了回落池与 size 参数的重要配合关系:

Mithilfe eines Fallback-Pools kann ein weiteres Puzzleteil platziert werden, um die Struktur an der angegebenen Stelle zu vervollständigen. (借助回落池,可以在指定位置再放置一个拼图部件,以完成结构。)

这意味着:即便达到 size 规定的扩展层数上限,游戏仍会尝试使用回落池放置一个"终结部件"(terminator)来闭合结构,避免结构边缘出现空洞或悬空。

回落池的详细语义见配套帮助文档 jigsaw_fallback_pool.md:

  • 当当前池中的部件无法在指定位置生成时(例如空间不足或已达深度上限),游戏会改用回落池来挑选一个终结部件;
  • 如果设置为${modid}:${registryname}_<pool_name>,游戏将从本结构列表中的<pool_name>池挑选部件;
  • 回落池也可以复用当前池,但如果其部件与其他同结构部件重叠,则会被忽略。

该字段在数据模型中的定义位于 Structure.java 的内部类JigsawPool:

public String poolName; public String fallbackPool; @ModElementReference @ResourceReference("structure") @Nullable public List<JigsawPart> poolParts;

在生成的模板池 JSON(template_pool.json.ftl)中,回落池字段被映射为原版的fallback字段:

"name": "${modid}:${registryname}_${data.poolName}", "fallback": "${data.fallbackPool?has_content?then(w.resolveModNamespace(data.fallbackPool), "minecraft:empty")}",

即:若配置了回落池则使用之,否则回落到minecraft:empty(空池,即不再放置部件)。在实际工程中,你通常会在每个部件结构末尾放置一个带空结构的拼图方块,让回落池以"空部件"方式安全地结束扩展。

五、实战调参建议与已知限制

结合文档与源码,给出以下可落地的配置建议:

  1. 小型装饰结构(如路边小雕像、告示牌组合):size保持默认 1 即可,结构规模小、生成开销低;
  2. 中型建筑群(如营地、瞭望塔):可设置为 2~5,配合 2~3 个部件池让结构呈现"主楼 + 若干附属"的形态;
  3. 大型村落类结构:可按需提升到 10~20,但需要注意性能开销与生成稳定性,且每个部件的拼图方块 target pool 必须与poolName对应(命名规则为${modid}:${registryname}_<pool_name>,见 jigsaw_pools.md);
  4. 每个部件体积上限:由于性能原因,原版单个结构部件(结构方块保存的 .NBT 建筑)上限为48×48×48方块,详见 structure.md;
  5. 始终配置回落池:即使size值很小,也建议为每个部件池设置回落池,以保证在深度上限或空间不足时结构仍能被完整闭合。

需要再次强调的是,size描述的是"扩展深度"而非"部件数量"的精确值——实际生成的部件数量还取决于各部件中拼图方块的数量与 target pool 的指向关系,size 只是放宽了允许扩展的最大层数。

六、进一步阅读与源码导航

  • 帮助文档体系:同一目录下还提供了 jigsaw_pools.md、jigsaw_pool_name.md、jigsaw_fallback_pool.md、jigsaw_max_distance_from_center.md 等相互关联的说明文档;
  • 数据模型:Structure.java(含size、maxDistanceFromCenter、JigsawPool/JigsawPart内部类);
  • 界面实现:StructureGUI.java(拼图大小面板及帮助按钮绑定);
  • 生成模板:structure.json.ftl(size字段输出)、template_pool.json.ftl(fallback字段输出);
  • 生成器定义:structure.definition.yaml(说明结构 JSON 与模板池 JSON 的输出路径与命名规则)。

通过理解 size 参数的"深度扩展"本质、把握它与 max_distance_from_center 及回落池之间的配合关系,你就可以在 MCreator 中稳定地构建出从单层小建筑到多层复合村落的各种 Jigsaw 拼图结构。

  • 低代码
  • 代码生成
  • 桌面应用
  • 游戏开发

【免费下载链接】MCreator

MCreator is an open-source software used to make Minecraft Java Edition mods, Minecraft Bedrock Edition Add-Ons, resource packs, and data packs using an intuitive easy-to-learn interface or with an integrated code editor. It is used worldwide by Minecraft players, aspiring mod developers, for education, online classes, and STEM workshops.

项目地址:https://gitcode.com/gh_mirrors/mc/MCreator
点击查看免费下载

相关推荐

上一篇:MTK刷机神器:USB读取速度终极优化指南 🚀
下一篇:DEPENDENCIES.md

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进