- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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 方块编辑器中"生成高度(Gen Height / Generation Height)"这一核心参数。该参数决定了自定义方块在 Minecraft 世界中生成时的 Y 坐标范围(从最低生成层到最高生成层),是配置自定义矿石、稀有矿物分布时的关键设置。读完本文,你将理解该参数的取值范围与默认值、它与"生成形状"等其他生成参数的配合关系,并能参考原版矿石的生成高度区间设计出合理的自定义方块生成方案。
参数含义:方块可以在哪个 Y 高度区间内生成
在 MCreator 的方块编辑界面中,"生成高度"参数(Gen Height)控制的是该方块在 Y 轴方向上的生成范围。开启方块的世界生成功能后,MCreator 只会把该方块生成在"最小生成高度"与"最大生成高度"所界定的区间之内。
该参数由一对最小/最大值共同构成:
- Min Generate Height(最小生成高度):方块生成的最低 Y 层;
- Max Generate Height(最大生成高度):方块生成的最高 Y 层。
两者可以相等(即固定只在某一个 Y 层生成)。在界面中它们由一个双值微调器(JMinMaxSpinner)统一呈现,对应源码 BlockGUI.java 中的generateHeight组件,其定义如下:
private final JMinMaxSpinner generateHeight = ComponentFromAnnotation.minMaxSpinner(Block.class, "minGenerateHeight", "maxGenerateHeight").allowEqualValues();其中的.allowEqualValues()表明最小值与最大值允许取相同数值,适用于"只在某一特定层生成"的场景。
取值范围与默认值:-64 到 320
在 Java 版方块的数据模型 Block.java 中,两个高度字段以@Numeric注解声明了完整的取值范围与默认值:
public boolean generateFeature; @ModElementReference public List<BiomeEntry> restrictionBiomes; @NonNullIf("generateFeature") @ModElementReference public List<MItemBlock> blocksToReplace; @LimitedOptions({ "UNIFORM", "TRIANGLE" }) public String generationShape; @NonNullIf("generateFeature") @Numeric(init = 10, min = 1, max = 64, step = 1) public int frequencyPerChunks; @NonNullIf("generateFeature") @Numeric(init = 16, min = 1, max = 64, step = 1) public int frequencyOnChunk; @NonNullIf("generateFeature") @Numeric(init = 0, min = -64, max = 320, step = 1, allowMinMaxEqual = true) public int minGenerateHeight; @NonNullIf("generateFeature") @Numeric(init = 64, min = -64, max = 320, step = 1, allowMinMaxEqual = true) public int maxGenerateHeight;由此可以确认以下关键约束:
- 合法取值范围为 -64 到 320,与《我的世界》Java 版 1.18+ 之后的世界高度(主世界最低 Y 层为 -64,最高可达 320)完全对应;
- 默认值为最小 0、最大 64,即默认生成在传统地表附近区域;
- 步长为 1,可按任意整数层精确设置;
- 两个字段均标注了
@NonNullIf("generateFeature"),表示只有当"生成此方块(Generate this feature)"开关被开启时,这两个高度值才必须提供有效数据。
在界面加载与保存时,BlockGUI.java 与 (src/main/java/net/mcreator/ui/modgui/BlockGUI.java#L2008-L2009) 分别负责把这两个值写入控件与从控件回读:
generateHeight.setMinValue(block.minGenerateHeight); generateHeight.setMaxValue(block.maxGenerateHeight); // ... block.minGenerateHeight = generateHeight.getIntMinValue(); block.maxGenerateHeight = generateHeight.getIntMaxValue();原版矿石生成高度范围(参考基准)
MCreator 的帮助文档给出了原版(Vanilla)各类矿石的生成高度区间,作为自定义生成范围设计时的参考基准。完整的对照如下:
| 矿石 | 生成高度范围(Y 层) |
|---|---|
| 煤矿(Coal Ore) | 0 ~ 256 |
| 铜矿(Copper Ore) | -16 ~ 112 |
| 铁矿(Iron Ore) | -32 ~ 256 |
| 金矿(Gold Ore) | -64 ~ 32 |
| 红石矿(Redstone Ore) | -64 ~ -32 |
| 钻石矿(Diamond Ore) | -64 ~ 16 |
| 绿宝石矿(Emerald Ore) | -16 ~ 256 |
| 青金石矿(Lapis Lazuli) | -64 ~ 64 |
从这张表可以直观看出 MCreator 生成高度参数的设计意图:
- 贫瘠与高价值矿物的分层逻辑:钻石、红石、金矿等稀有矿物集中在较深的 Y 层(-64 ~ 16 附近),而煤矿、绿宝石矿等分布更广、更靠近地表;
- 高度范围决定获取难度:范围越窄、层越深,通常意味着矿物越稀有、越难获取;
- 完全可自定义:你的自定义方块可以自由设置任意范围(-64 ~ 320 内),既可以完全复刻某一种原版矿石的分布,也可以设计出"全高度均匀分布"或"仅高空生成"等原版不存在的玩法。
生成高度如何参与实际矿石生成(源码级原理)
生成高度参数并非只是界面上的数字,而是会直接写入最终生成的数据包/模组文件中。在 NeoForge 1.21.1 生成器中,方块生成配置由两个 JSON 模板共同完成:
- 方块目标与替换逻辑定义在 configured_oregen.json.ftl,其中
size取自frequencyOnChunk(每簇矿的规模),targets列出可被替换的方块(blocksToReplace); - 放置(placement)规则定义在 placed_oregen.json.ftl,生成高度正是在这里被消费:
{ "feature": "${modid}:${registryname}", "placement": [ { "type": "minecraft:count", "count": ${data.frequencyPerChunks} }, { "type": "minecraft:in_square" }, { "type": "minecraft:height_range", "height": { "type": "minecraft:${data.generationShape?lower_case?replace("triangle", "trapezoid")}", "min_inclusive": { "absolute": ${data.minGenerateHeight} }, "max_inclusive": { "absolute": ${data.maxGenerateHeight} } } }, { "type": "minecraft:biome" } ] }从该模板可以看到,minGenerateHeight与maxGenerateHeight被写入minecraft:height_range放置修饰器的min_inclusive/max_inclusive字段,与generationShape(生成形状,取UNIFORM均匀或TRIANGLE三角分布,模板中会把 triangle 转换为原版 JSON 使用的trapezoid类型)共同决定方块在每个区块中的纵向落点分布。generationShape这一参数在 BlockGUI.java 中定义为仅允许UNIFORM、TRIANGLE两个选项:
private final JComboBox<String> generationShape = ComponentFromAnnotation.options(Block.class, "generationShape");这意味着"生成高度范围"定义了分布的边界,而"生成形状"则决定矿簇在这个边界内偏向浅层、深层还是均匀散布,两者需要配合调整才能获得理想的产出曲线。
基岩版(Bedrock Edition)方块同样支持生成高度
生成高度参数不仅存在于 Java 版方块中,基岩版(Bedrock)方块数据模型 BEBlock.java 同样定义了minGenerateHeight与maxGenerateHeight,取值范围与默认值与 Java 版完全一致:
public boolean generateFeature; @LimitedOptions({ "uniform", "triangle" }) public String generationShape; @NonNullIf("generateFeature") @Numeric(init = 10, min = 1, max = 64, step = 1) public int frequencyPerChunks; @NonNullIf("generateFeature") @Numeric(init = 16, min = 1, max = 64, step = 1) public int oreCount; @NonNullIf("generateFeature") @Numeric(init = 0, min = -64, max = 320, step = 1, allowMinMaxEqual = true) public int minGenerateHeight; @NonNullIf("generateFeature") @Numeric(init = 64, min = -64, max = 320, step = 1, allowMinMaxEqual = true) public int maxGenerateHeight;其界面组件同样位于 BEBlockGUI.java:
private final JMinMaxSpinner generateHeight = ComponentFromAnnotation.minMaxSpinner(BEBlock.class, "minGenerateHeight", "maxGenerateHeight").allowEqualValues();在基岩版 Add-On 生成器中,这两个值被写入feature_rules的 distribution 配置,见模板 block_ore_feature_rule.json.ftl:
"distribution": { "iterations": ${data.frequencyPerChunks}, "coordinate_eval_order": "zyx", "x": { "distribution": "uniform", "extent": [ 0, 16 ] }, "y": { "distribution": "${data.generationShape}", "extent": [ ${data.minGenerateHeight}, ${data.maxGenerateHeight} ] }, "z": { "distribution": "uniform", "extent": [ 0, 16 ] } }在基岩版规则中,extent数组的第一个元素即最小生成高度、第二个元素为最大生成高度,generationShape直接决定 Y 轴上的分布形态(uniform或triangle)。因此无论你面向 Java 版(NeoForge / 数据包)还是基岩版(Add-On)开发,设置生成高度的方式与逻辑是一致的。
实战建议:如何设置生成高度
结合原版矿石高度表与生成模板的实现,设置自定义方块的生成高度时可以参考以下思路:
先明确方块的稀有度定位:
- 常见矿物/资源:可参考煤矿(0 ~ 256)或铁矿(-32 ~ 256)的宽范围设置;
- 稀有矿物:参考钻石(-64 ~ 16)、红石(-64 ~ -32)的深地层窄范围设置;
- 特殊玩法(如"天空矿"):可设置在 100 ~ 256 之间,实现原版不存在的浮空矿脉。
注意世界高度边界:MCreator 允许的最小值为 -64、最大值为 320,超出此范围的数值无法输入;在旧版本世界(生成高度仅 0 ~ 256)中,若将最小值设为负数,需要确保使用的是支持深板岩层的新版本世界。
配合生成形状使用:
UNIFORM(均匀)会在高度范围内平均分布产出,适合宽范围通用资源;TRIANGLE(三角)会在范围内形成"中间多、两端少"的分布,更适合模拟原版矿石的"越深越富集"或"特定层集中产出"的效果。与群系限制和替换方块联动:生成高度只是生成配置的一部分,BlockGUI.java 中同属"生成(Generation)"面板的还有"限制群系(restrictionBiomes)"、"替换方块(blocksToReplace)"、"每区块生成组数(frequencyPerChunks)"、"每组规模(frequencyOnChunk)"等参数,它们共同决定方块最终的世界分布形态。
小结
生成高度(Gen Height)是 MCreator 方块世界生成功能中最基础也最关键的参数之一。它通过minGenerateHeight/maxGenerateHeight一对数值(取值范围 -64 ~ 320,默认 0 ~ 64)定义方块的 Y 轴生成区间;在 Java 版中会被写入 NeoForge 的height_range放置规则,在基岩版中会被写入 Add-On 的feature_rulesdistribution 配置。参考原版矿石的高度分布表并结合generationShape、群系限制等参数,你可以精准设计出符合预期稀有度与分布形态的自定义矿石或结构方块。
- 低代码
- 代码生成
- 桌面应用
- 游戏开发
【免费下载链接】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 矿石生成详解:掌握"每区块矿脉数量(Gen Chunk Count)"参数与 Minecraft 矿脉生成原理
MCreator 矿石生成详解:掌握"每区块矿脉数量(Gen Chunk Count)"参数与 Minecraft 矿脉生成原理 导读 在 MCreator 中
低代码代码生成桌面应用游戏开发MCreator 方块生成参数详解:矿脉组大小(gen_group_size)的作用与配置指南
MCreator 方块生成参数详解:矿脉组大小(gen_group_size)的作用与配置指南 导读 在 MCreator 中为自定义方块开启"在世界中生成"功
低代码代码生成桌面应用游戏开发MCreator 自定义方块属性名称(Property Name)参数详解:命名规则、底层映射与代码生成
MCreator 自定义方块属性名称(Property Name)参数详解:命名规则、底层映射与代码生成 本篇技术指南聚焦 MCreator 中"自定义方块属性
低代码代码生成桌面应用游戏开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考