恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
MCreator 生物群系自定义树的果实方块参数详解:从界面配置到代码生成原理
首页
资讯中心
/
MCreator 生物群系自定义树的果实方块参数详解:从界面配置到代码生成原理
MCreator 生物群系自定义树的果实方块参数详解:从界面配置到代码生成原理
发布时间:2026/10/16 6:22:37
低代码代码生成桌面应用游戏开发【免费下载链接】MCreatorMCreator 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 生物群系Biome定义中的果实方块Fruits Block参数它用于在启用自定义树的群系中指定挂在树上的果实方块如丛林树上的可可豆。通过阅读本文你将掌握该参数在 MCreator 界面中的配置方式、置空禁用技巧以及它在数据模型与 Neoforge/数据包代码生成器中的底层实现原理。参数定位自定义树的果实方块由谁控制在 MCreator 的生物群系编辑器中树木Trees区块集中了树的数量、形状、树干与树枝方块等配置项。其中果实方块Fruits Block参数专门控制当该群系使用自定义树Custom trees时用于生成果实的方块。官方帮助文档对这一参数的核心说明为该参数控制用于树果实的方块例如丛林树上的可可豆Kakao前提是启用了自定义树。选择空气方块Air block即可禁用树果实。换句话说这一参数把原版树装饰器Tree Decorator中的可可豆放置逻辑替换为你自己指定的任意方块从而让自定义树长出果实。这一行为有明确的原生参照原版 Minecraft 的丛林树通过CocoaDecorator在树干上随机生成可可豆而 MCreator 的果实方块参数正是围绕这个机制设计的。在 MCreator 界面中配置果实方块果实方块选择器在生物群系编辑器中位于树木配置区域。从源码看BiomeGUI.java 中该选择器与minHeight最小树高、treeStem树干方块、treeBranch树枝方块、vines_block藤蔓方块等控件并列通过帮助按钮关联到biome/fruits_block帮助条目并使用MCItemHolder承载方块选择sbbp5.add(HelpUtils.wrapWithHelpButton(this.withEntry(biome/fruits_block), L10N.label(elementgui.biome.fruits_block))); sbbp5.add(PanelUtils.join(treeFruits));该选择器在初始化时仅加载方块类元素而非物品见 BiomeGUI.javatreeFruits new MCItemHolder(mcreator, ElementUtil::loadBlocks);一个关键交互细节是只有选中自定义树Custom trees时果实方块选择器才可用。updateBiomeTreesForm()方法在用户切换树类型时动态控制各控件的启用状态BiomeGUI.java选中自定义树时minHeight、treeVines、treeStem、treeBranch、treeFruits全部启用切回原版树时则全部禁用。这意味着在原版树模式下树木果实由 Minecraft 原版逻辑决定MCreator 不注入自定义果实。在编辑已有群系时openInEditingMode()会把已保存的biome.treeFruits值回填到选择器BiomeGUI.java保存时则通过biome.treeFruits treeFruits.getBlock()写回数据模型BiomeGUI.java。选择空气方块以禁用树果实当你不希望自定义树生成任何果实例如只想做一棵纯净的装饰树时将该参数选择为**空气方块Air block**即可。这是文档明确给出的禁用方式也是实际操作中最直接的做法。在代码层面禁用效果由hasFruits()判定函数保证——当果实方块为空时整个果实装饰器都不会被生成详见下一节因此不会在生成的树上挂任何果实。数据模型treeFruits 字段与启用判定生物群系的数据模型位于 Biome.javatreeFruits以MItemBlock类型存储与treeStem、treeBranch、treeVines同级public MItemBlock treeStem; public MItemBlock treeBranch; public MItemBlock treeVines; public MItemBlock treeFruits;果实功能是否生效由 Biome.java 中的hasFruits()统一判定public boolean hasFruits() { return hasTrees() treeType TREES_CUSTOM treeFruits ! null !treeFruits.isEmpty(); }从中可以提炼出果实装饰器生效的三个必要条件hasTrees()treesPerChunk 0即该群系必须生成树Biome.javatreeType TREES_CUSTOM必须是自定义树模式TREES_CUSTOM 1原版树不适用treeFruits非空果实方块选择器已指定一个实际方块——空值或空气选择之外的未选状态都不会生成果实。生成原理FruitDecorator 如何替换原版可可豆逻辑当hasFruits()返回 true 时Neoforge 代码生成器会基于 FreeMarker 模板 tree_fruits_decorator.java.ftl 生成一个名为${name}FruitDecorator的 Java 类。该类直接继承原版的CocoaDecorator可可豆装饰器EventBusSubscriber public class ${name}FruitDecorator extends CocoaDecorator { public static MapCodec${name}FruitDecorator CODEC MapCodec.unit(${name}FruitDecorator::new); public static TreeDecoratorType? DECORATOR_TYPE new TreeDecoratorType(CODEC); SubscribeEvent public static void registerTreeDecorator(RegisterEvent event) { event.register(Registries.TREE_DECORATOR_TYPE, ResourceLocation.parse(${modid}:${registryname}_tree_fruit_decorator), () - DECORATOR_TYPE); } public ${name}FruitDecorator() { super(0.2f); } ... }有几个值得注意的实现细节继承CocoaDecorator并调用super(0.2f)构造器传入的概率 0.2f 对应原版可可豆的生成概率约 20%即每个合适的树干位置有约两成概率挂上果实覆盖place方法模板通过mcc.getMethod(...)反编译并替换原版CocoaDecorator.place中的放置代码把Blocks.COCOA.defaultBlockState().setValue(CocoaBlock.AGE, ...).setValue(CocoaBlock.FACING, direction)替换为你指定的果实方块状态mappedBlockToBlockStateCode(data.treeFruits)朝向处理由于原版可可豆是有朝向的方块模板额外生成了oriented(BlockState, Direction)辅助方法根据树干所在方向对果实方块做 90° / 180° 旋转确保果实能正确贴在树干四周注册命名装饰器类型以${registryname}_tree_fruit_decorator注册到原版TREE_DECORATOR_TYPE注册表随 mod 一起加载。MCreator 的 26.3.x 系列生成器面向更新的 Minecraft 版本采用相同的设计见 tree_fruits_decorator.java.ftl差异仅在ResourceLocation.parse/Identifier.parse等 API 命名上。生成器装配从定义文件到 JSON 数据包果实装饰器的生成时机由生成器定义文件控制。在 neoforge-1.21.1/biome.definition.yaml 中- template: biome/tree_fruits_decorator.java.ftl name: SRCROOT/BASEPACKAGEPATH/world/features/treedecorators/NAMEFruitDecorator.java condition: hasFruits()即仅在hasFruits()为 true 时才生成并输出该 Java 装饰器类输出路径为world/features/treedecorators/NAMEFruitDecorator.java。藤蔓装饰器tree_leave_decorator、tree_trunk_decorator则以hasVines()为条件二者互不干扰。对于数据包生成器树配置 JSON 中的装饰器列表由 configured_tree.json.ftl 生成decorators: [ #if data.hasFruits() { type: ${modid}:${registryname}_tree_fruit_decorator }#if data.hasVines(),/#if /#if ... ]可以看到果实装饰器以${modid}:${registryname}_tree_fruit_decorator的 ID 被写进minecraft:tree配置的decorators数组与藤蔓装饰器并列。另外数据包生成器的biome.definition.yaml中声明了field_exclusions: [..., treeVines, treeFruits, ...]见 datapack-1.21.1/biome.definition.yaml说明在数据包模式下这些字段的处理与 Java 代码生成器存在差异实际生效逻辑以各自生成器模板为准。实战建议与排查要点想要结果实的自定义树确保在生物群系编辑器中选择自定义树并分别在树干、树枝、果实选择器中指定方块。果实方块建议选择有明确朝向属性的方块如可可豆、南瓜等这样oriented()的旋转逻辑才能正确贴树生成只想做观赏树把果实方块设为空气方块hasFruits()判定为 false生成代码中不会出现任何果实装饰器树上干干净净排查树没有果实问题依次检查三点——treesPerChunk是否大于 0、树类型是否为自定义树、果实方块选择器是否真的选中了方块。三者缺一hasFruits()都会返回 falseBiome.java概率调整当前生成模板中果实挂载概率固定为super(0.2f)约 20%与原版可可豆一致如需修改概率需要调整生成器模板 tree_fruits_decorator.java.ftl 中的构造参数修改仓库模板需自行承担后续维护成本请谨慎操作。相关文档与源码索引官方帮助条目本文所依据的原始文档fruits_block.md界面实现BiomeGUI.java数据模型与判定逻辑Biome.javaNeoforge 生成模板tree_fruits_decorator.java.ftl1.21.1、tree_fruits_decorator.java.ftl26.3.x生成器定义neoforge-1.21.1/biome.definition.yaml数据包树配置模板configured_tree.json.ftl赞分享低代码代码生成桌面应用游戏开发【免费下载链接】MCreatorMCreator 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 方块斧削皮结果参数Stripping Result全面解析从界面配置到源码生成原理MCreator 方块斧削皮结果参数Stripping Result全面解析从界面配置到源码生成原理 导读 本篇文章围绕 MCreator 中方块B低代码代码生成桌面应用游戏开发MCreator 生物群系生成参数详解大陆性Continentalness的作用原理与配置实践MCreator 生物群系生成参数详解大陆性Continentalness的作用原理与配置实践 大陆性Continentalness是 MCreato低代码代码生成桌面应用游戏开发MCreator 生物群系树的形状Tree shape参数完全指南选择自定义树形骨架到数据包生成原理MCreator 生物群系树的形状Tree shape参数完全指南选择自定义树形骨架到数据包生成原理 本文围绕 MCreator 生物群系Biome低代码代码生成桌面应用游戏开发上一篇python-mini-projects 实战使用 Tweepy 抓取指定 Hashtag 的推文并生成 CSV下一篇Cranelift 对比 LLVMWasmtime 代码生成器的单层 IR 架构与设计取舍创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考