- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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.
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(空池,即不再放置部件)。在实际工程中,你通常会在每个部件结构末尾放置一个带空结构的拼图方块,让回落池以"空部件"方式安全地结束扩展。
五、实战调参建议与已知限制
结合文档与源码,给出以下可落地的配置建议:
- 小型装饰结构(如路边小雕像、告示牌组合):
size保持默认 1 即可,结构规模小、生成开销低; - 中型建筑群(如营地、瞭望塔):可设置为 2~5,配合 2~3 个部件池让结构呈现"主楼 + 若干附属"的形态;
- 大型村落类结构:可按需提升到 10~20,但需要注意性能开销与生成稳定性,且每个部件的拼图方块 target pool 必须与
poolName对应(命名规则为${modid}:${registryname}_<pool_name>,见 jigsaw_pools.md); - 每个部件体积上限:由于性能原因,原版单个结构部件(结构方块保存的 .NBT 建筑)上限为48×48×48方块,详见 structure.md;
- 始终配置回落池:即使
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.
相关推荐
MCreator 拼图结构(Jigsaw Structure)的 Jigsaw Pools 配置指南:池分组、目标池命名与生成机制
MCreator 拼图结构(Jigsaw Structure)的 Jigsaw Pools 配置指南:池分组、目标池命名与生成机制 本篇指南围绕 MCreato
低代码代码生成桌面应用游戏开发MCreator Jigsaw 拼图池的 pool_name 参数:模板池命名、目标池引用与生成机制详解
MCreator Jigsaw 拼图池的 pool_name 参数:模板池命名、目标池引用与生成机制详解 MCreator 的「结构(Structure)」元素
低代码代码生成桌面应用游戏开发MCreator 方块生成参数详解:矿脉组大小(gen_group_size)的作用与配置指南
MCreator 方块生成参数详解:矿脉组大小(gen_group_size)的作用与配置指南 导读 在 MCreator 中为自定义方块开启"在世界中生成"功
低代码代码生成桌面应用游戏开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考