MCreator 食物「食用结果物品」参数详解:从 GUI 配置到源码生成原理
低代码代码生成桌面应用游戏开发【免费下载链接】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 仓库中的帮助文档 result_item.md德文版另有 en_GB 与 zh_CN 对应版本展开。该文档正文只有一句话但其对应的「Eating item result / Essensergebnis」参数却横跨 Java Edition 与 Bedrock Edition 两条生成链路背后涉及物品数据模型、条件判定逻辑与两套 NeoForge 模板实现。本文将围绕这个参数从界面操作到源码生成逐层展开帮助你在 MCreator 中正确配置「吃完食物后留下/获得某个物品」的行为并理解其底层原理。一、这个参数是什么一句话定位帮助文档德文版的原文是Dieser Parameter legt fest, welcher Gegenstand dem Inventar der Entität hinzugefügt werden soll, die diese Nahrung aß.即该参数定义了「食用该食品的实体」的物品栏中应被添加的物品。英文版表述为 what item should be added to inventory of the entity that ate this food中文版为「该参数定义了食用该食品的实体的物品栏中应添加的物品」。需要特别注意的是文档说的是添加到食用者物品栏而不是替换掉被吃掉的那格物品。实际上它在游戏中的完整表现是吃完食物后如果原物品栈被消耗为空则食用结果物品作为替代返回如果原物品栈还有剩余可堆叠食物则结果物品会被尝试放入食用者物品栏放不下时直接掉落在地。这一点可以从生成模板的代码中精确验证详见下文第四节。在 MCreator 的界面文案中该参数的完整提示是见 texts.propertiesEating item result: Leave empty to consume the food.中文含义「食用结果物品」——留空则直接消耗该食物。这是理解本参数行为的关键分界线留空食物吃完即被消耗不产出任何物品多数食物如此填入物品吃完后向食用者返回/发放该物品。二、界面位置在哪个编辑器里配置2.1 Java Edition物品元素Item的「Food」子面板在 Java Edition 的物品元素编辑器中该参数位于Food食物子面板内其控件定义在 ItemGUI.javaprivate final MCItemHolder eatResultItem new MCItemHolder(mcreator, ElementUtil::loadBlocksAndItems);它使用MCItemHolder方块/物品选择器候选列表来自ElementUtil::loadBlocksAndItems即工作区中全部自定义方块与物品。它与帮助按钮的绑定在 ItemGUI.javafoodSubpane.add(HelpUtils.wrapWithHelpButton(this.withEntry(item/result_item), L10N.label(elementgui.item.eating_result))); foodSubpane.add(PanelUtils.centerInPanel(eatResultItem));this.withEntry(item/result_item)正是帮助系统到本文档item/result_item.md的映射入口。同面板还包含营养值Nutritional value默认 4范围 -1000~1000、饱和度修正Saturation modifier默认 0.3、「Is always edible?」等参数它们共同构成 MCreator 的食物定义。2.2 Bedrock EditionBE 物品的同一帮助入口该参数同样服务于 Bedrock EditionAdd-On的物品编辑器。在 BEItemGUI.java 中食物属性面板使用同一个帮助文档入口item/result_item对应控件为usingConvertsTofoodProperties.add(HelpUtils.wrapWithHelpButton(this.withEntry(item/result_item), L10N.label(elementgui.item.eating_result))); foodProperties.add(PanelUtils.centerInPanel(usingConvertsTo));所以这份「result_item」帮助文档同时被 Java Edition 与 Bedrock Edition 两个编辑器引用——只是两个平台对「食用结果物品」的底层实现与数据字段名不同eatResultItemvsusingConvertsTo下文将分别剖析。三、数据模型与生效条件源码如何判定3.1 Java EditionItem.eatResultItem该参数的数据字段定义在 Item.java 的 Food 分组中// Food public boolean isFood; Numeric(init 4, min -1000, max 1000, step 1) public int nutritionalValue; Numeric(init 0.3, min -1000, max 1000, step 0.1) public double saturation; public MItemBlock eatResultItem; public boolean isMeat; public boolean isAlwaysEdible; NonNullMappable(eat) public ItemUseAnimation animation;字段类型为MItemBlock与方块/物品选择器MCItemHolder对应。围绕它有两个重要的判定方法Item.javapublic boolean hasEatResultItem() { return isFood eatResultItem ! null !eatResultItem.isEmpty(); } public boolean hasCustomEatResultItem() { return isFood eatResultItem ! null !eatResultItem.isEmpty() eatResultItem.getUnmappedValue() .startsWith(CUSTOM:); }从中可以提炼出三条硬性生效规则必须以isFood是食物为前提——否则即使填了物品也不会生成任何相关代码结果物品不能为空!eatResultItem.isEmpty()才算有结果物品hasCustomEatResultItem()进一步区分当结果物品是本工作区自定义元素映射值以CUSTOM:开头时走一套独立的生成分支见第五节。3.2 UI 的联动控制界面加载与保存时ItemGUI在 ItemGUI.java 与 L909 处完成双向绑定eatResultItem.setBlock(item.eatResultItem); // 加载模型 → 控件 item.eatResultItem eatResultItem.getBlock(); // 保存控件 → 模型同时该控件仅在「是食物」被勾选时启用ItemGUI.javaeatResultItem.setEnabled(foodSelected);避免在非食物物品上误配置。Bedrock 侧同理BEItemGUI.updateFoodPanel()会在isFood未勾选时禁用usingConvertsToBEItemGUI.java。四、Java EditionNeoForge 1.21.1代码生成finishUsingItem重写MCreator 的代码生成器通过 FreeMarker 模板产出最终的 Java 类。在 item.java.ftl 中只要满足hasProcedure(data.onFinishUsingItem) || data.hasEatResultItem()就会重写finishUsingItemOverride public ItemStack finishUsingItem(ItemStack itemstack, Level world, LivingEntity entity) { ItemStack retval #if data.hasEatResultItem() ${mappedMCItemToItemStackCode(data.eatResultItem, 1)}; // 食用结果物品数量 1 /#if super.finishUsingItem(itemstack, world, entity); #if data.hasEatResultItem() if (itemstack.isEmpty()) { return retval; // 原物品已吃完 → 直接返回结果物品 } else { if (entity instanceof Player player !player.getAbilities().instabuild) { if (!player.getInventory().add(retval)) // 优先放入物品栏 player.drop(retval, false); // 放不下则掉落 } return itemstack; // 返回剩余食物可堆叠场景 } /#if }这段生成代码完整实现了帮助文档所述的语义实体吃完食物LivingEntity不限于玩家后食用结果物品以数量 1 生成原食物栈被吃空时结果物品作为retval返回相当于留下该物品原食物栈仍有剩余时例如可堆叠的堆叠型食物结果物品优先添加进玩家物品栏getInventory().add背包已满则掉落在实体位置drop——这正是文档中添加到实体物品栏这一表述在真实游戏代码中的落地方式创造模式instabuild下不额外发放避免复制物品。该模板同时处理onFinishUsingItem过程吃完后触发的 MCreator 过程说明食用结果物品与吃完触发过程可以同时配置、互不冲突。五、新版 NeoForge26.3.x生成usingConvertsTo与USE_REMAINDER组件在较新的 26.3.x 生成器对应较新的 Minecraft 版本中实现方式改为基于数据组件Data Components。模板 item.java.ftl 中存在两条分支分支一普通非自定义食用结果物品—— 直接在食物的 Consumables 构建器中调用usingConvertsTo#if data.hasEatResultItem() !data.hasCustomEatResultItem() .usingConvertsTo(${mappedMCItemToItem(data.eatResultItem)}) /#if这会把结果物品写入食物的USE_REMAINDER数据组件由原版游戏机制在处理吃完/使用完时自动产出剩余物品。分支二自定义CUSTOM:前缀食用结果物品—— 由于自定义元素在构造阶段尚未注册需要通过事件在运行时补挂组件item.java.ftlSubscribeEvent public static void modifyItemComponents(ModifyDefaultComponentsEvent event) { event.modify(${JavaModName}Items.${REGISTRYNAME}.get(), (builder, _, _) - builder.set(DataComponents.USE_REMAINDER, new UseRemainder(new ItemStackTemplate(${mappedMCItemToItem(data.eatResultItem)})))); }对应地类上会标注EventBusSubscriberitem.java.ftl。可以看到hasCustomEatResultItem()这个方法的引入正是为了区分可直接内联进构建器的原版物品与需运行时解析的自定义物品两种生成路径。六、Bedrock Edition Add-Onusing_converts_toJSON 字段Bedrock 侧的数据模型字段为usingConvertsToBEItem.java位于 Food 分组// Food public boolean isFood; Numeric(init 4, min -1000, max 1000, step 1) public int foodNutritionalValue; Numeric(init 0.3, min -1000, max 1000, step 0.1) public double foodSaturation; public boolean foodCanAlwaysEat; public MItemBlock usingConvertsTo;Add-On 生成模板在 item.json.ftl 中将其输出为行为包物品 JSON 的using_converts_to字段#if data.usingConvertsTo?? !data.usingConvertsTo.isEmpty(), using_converts_to: ${mappedMCItemToRegistryNameNoTags(data.usingConvertsTo)} /#ifBedrock 的行为包物品定义正是通过using_converts_to声明使用该物品后转化为哪个物品。MCreator 的usingConvertsTo选择器与 Java 版一样使用MCItemHolderBEItemGUI.java确保你能从工作区现有方块/物品中直接选取。七、典型应用场景结合上述实现这个参数最常见的用途包括吃完留下容器/空容器如吃完一碗蘑菇煲后留下碗、喝完牛奶后留下桶——把碗/桶填入「食用结果物品」即可这正是原版同款交互消耗型产出吃完某个特殊食物后获得骨头、羽毛、金粒等副产品如原版鸡吃完种子后产出骨粉的玩法在 Mod 中的复刻堆叠食物的剩余返还可堆叠且带usingConvertsTo的食物吃最后一口时才返还结果物品其余情况尝试放入物品栏——细节见第四节生成的itemstack.isEmpty()判断跨平台同步Java Edition 与 Bedrock Edition 编辑器共用同一份帮助文档同一设计意图在两个平台上分别落地为eatResultItemNeoForge与using_converts_toAdd-On JSON。八、配置注意事项必须先在食物子面板勾选「Is food? / 是食物」否则该参数不生效hasEatResultItem()与hasCustomEatResultItem()均以isFood为前提UI 上控件也会被禁用留空 直接消耗不填任何物品吃完即消失这是绝大多数普通食物的默认行为自定义元素的选择在 Java Edition 26.3.x 生成器中选取本工作区自定义物品CUSTOM:前缀会走ModifyDefaultComponentsEvent的运行时挂载分支属于预期行为而非异常数量固定为 1生成代码中结果物品数量写死为1mappedMCItemToItemStackCode(data.eatResultItem, 1)如需数量变化应配合onFinishUsingItem过程实现帮助文档复用item/result_item帮助入口同时被 ItemGUI.java 与 BEItemGUI.java 引用修改配置前建议先阅读该帮助条目确认平台差异。相关帮助文档与源码索引该参数在食物配置中与其他参数紧密协作可一并阅读同目录下的相关帮助文档营养值与饱和度item/nutritional_value.md、item/saturation.md是否始终可食用item/always_edible.md食用动画item/animation.md关键源码与模板数据模型与判定Item.java、BEItem.java编辑器界面ItemGUI.java、BEItemGUI.java生成模板item.java.ftl1.21.1、item.java.ftl26.3.x、item.json.ftlAdd-On界面文案texts.properties、texts_de_DE.properties赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 物品使用时长use_duration参数详解食物进食时间与物品使用持续时间的配置指南MCreator 物品使用时长use_duration参数详解食物进食时间与物品使用持续时间的配置指南 本篇文章围绕 MCreator 中“物品使用时长低代码代码生成桌面应用游戏开发MCreator 食物物品参数深度解析Always Edible饱食度已满时仍可食用MCreator 食物物品参数深度解析Always Edible饱食度已满时仍可食用 本文围绕 MCreator 中食物物品Item的 Always低代码代码生成桌面应用游戏开发MCreator 食物物品「饱和度修饰符」参数详解从饥饿机制到源码实现MCreator 食物物品「饱和度修饰符」参数详解从饥饿机制到源码实现 MCreator 是一款用于制作 Minecraft Java 版模组、基岩版 Add低代码代码生成桌面应用游戏开发上一篇老电脑装不了新系统用 Rufus 把 U 盘做成启动盘从格式化到隐藏开关一次讲清下一篇DeepStream-Yolo终极指南快速集成YOLO目标检测模型 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DeepFilterNet ONNX 导出完整指南:从一条命令到跨平台部署

DeepFilterNet ONNX 导出完整指南:从一条命令到跨平台部署

DeepFilterNet ONNX 导出完整指南:从一条命令到跨平台部署 【免费下载链接】DeepFilterNet Noise supression using deep filtering 项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNet 你要做的是把 DeepFilterNet 音频降噪模型转成一套可跨平…

2026/10/17 6:06:34 阅读更多 →
Claude Code模板实战:用CLAUDE.md、斜杠命令与hooks打造AI协作基线

Claude Code模板实战:用CLAUDE.md、斜杠命令与hooks打造AI协作基线

我刚开始用 Claude Code 的时候,跟大多数人一样,把 CLAUDE.md 当成一个“可写可不写的项目简介”。直到有天下午,我发现自己在五个不同项目里反复粘贴同一段话——“请先读一下 package.json 和 src 目录结构,然后再按我们团队的规…

2026/10/17 6:06:34 阅读更多 →
宝官并非稳赢:扑克牌概率、庄家优势与规则设计的数学真相

宝官并非稳赢:扑克牌概率、庄家优势与规则设计的数学真相

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 7:55:02 阅读更多 →

最新新闻

三语言实现大文件分片上传实战

三语言实现大文件分片上传实战

文件上传功能实战:Java、Python、PHP 实现大文件分片上传在现代 Web 应用开发中,大文件上传是一个常见且复杂的场景。传统一次性上传方式在面对 100MB 以上文件时,容易因网络波动、超时或内存溢出导致失败。分片上传(Chunked Uplo…

2026/10/18 8:14:12 阅读更多 →
自组织映射SOM原理与Python实现:从竞争学习到拓扑保持

自组织映射SOM原理与Python实现:从竞争学习到拓扑保持

简介:这份资源是面向机器学习初学者与数据科学学习者的SOM自组织映射神经网络Python实现项目,聚焦无监督学习中的数据降维、聚类与可视化需求。SOM通过竞争学习将高维输入映射到低维拓扑空间,是理解神经网络竞争机制的经典入门算法&#xff0…

2026/10/18 8:14:12 阅读更多 →
多步流程中的越权漏洞剖析与修复实践

多步流程中的越权漏洞剖析与修复实践

前阵子做一次授权安全评估,某项目的后台审批流程让我印象很深。这个系统有一条"发起申请 → 业务审批 → 办结归档"的三步链路,前两步做得挺规范,登录校验、状态控制、角色校验都到位了。问题恰恰出在最后一步:审批接口…

2026/10/18 8:14:12 阅读更多 →
开发岗没出路?四条转型路线与实操避坑指南

开发岗没出路?四条转型路线与实操避坑指南

做开发这些年,我越来越常听见身边人问:“开发岗是不是没出路了?”起因无外乎三种:投了一轮简历回复寥寥,面了几轮被源码级问题问到怀疑人生,或者眼看部门收缩、项目砍掉,今天还在维护老系统&…

2026/10/18 8:14:12 阅读更多 →
LangChain六组件完全指南:模型、提示词、链、记忆、检索、Agent

LangChain六组件完全指南:模型、提示词、链、记忆、检索、Agent

很多人第一次打开 LangChain 的文档,都会被那一大堆 Module 名字吓到——模型、提示词、链、记忆、检索、代理、回调,好像每个都能单独写一本书。但如果你退一步看,LangChain 其实只做了一件事:把大模型和各类外部能力串联起来。而…

2026/10/18 8:14:12 阅读更多 →
一阶倒立摆平衡车仿真与GUI调参工具:从建模到源码全解析

一阶倒立摆平衡车仿真与GUI调参工具:从建模到源码全解析

先说个反直觉的结论:做平衡车,最花时间的不一定是焊板子和调实车,而是把一阶倒立摆模型在GUI里跑通。我见过太多人上来就调PID,参数改来改去,最后连车为什么一直朝一个方向冲都说不清楚——根子在于脑子里没有一个能复…

2026/10/18 8:13:12 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →