资讯详情

MCreator 自定义方块与红石比较器数据输出:inventoryComparatorPower 参数完全指南

📅 2026/10/16 1:45:11 | 华诺云谱 👁 阅读
MCreator 自定义方块与红石比较器数据输出:inventoryComparatorPower 参数完全指南
低代码代码生成桌面应用游戏开发【免费下载链接】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 方块编辑器中「Enable block output comparator data」启用方块输出比较器数据这一参数展开说明如何让自定义方块在容纳物品具备物品栏时向红石比较器输出基于物品数量的模拟红石信号。读者将掌握该参数在 GUI 中的位置与依赖关系、底层数据模型字段、NeoForge 端生成代码的原理以及一套可直接落地的红石自动化设计思路。一、参数是什么一句话定位MCreator 官方的中文帮助文档对block/comparator_data给出的说明非常精炼如果勾选该参数红石比较器将会根据方块内存储的物品数量来输出红石信号。英文原文Check this parameter if you want the block to work with comparators.德文原文Aktivieren Sie diesen Parameter, wenn der Block mit Vergleichern arbeiten soll.也就是说这是一个布尔开关checkbox当自定义方块拥有物品栏inventory时勾选它可以让该方块成为红石比较器的模拟信号源比较器输出的信号强度与方块内物品的数量/占用程度成正比。该帮助文档在多语言目录下同步维护中文版位于 plugins/mcreator-localization/help/zh_CN/block/comparator_data.md德语版即本次关联文档位于 plugins/mcreator-localization/help/de_DE/block/comparator_data.md。二、GUI 中的位置与操作步骤在 MCreator 中编辑方块Block元素时该参数位于方块 GUI 的Advanced高级页签、Tile Entity 相关区块中。2.1 界面实现证据在方块编辑器源码 BlockGUI.java 中该选项由复选框控件承载private final JCheckBox inventoryComparatorPower L10N.checkbox(elementgui.common.enable);它被放置在一个 8 行 × 2 列的属性面板中并配有一个帮助按钮帮助按钮直接绑定到本文所述的帮助文档条目props.add(HelpUtils.wrapWithHelpButton(this.withEntry(block/comparator_data), L10N.label(elementgui.block.comparator_data))); props.add(inventoryComparatorPower);界面标签文案来自本地化文件 plugins/mcreator-localization/lang/texts.propertieselementgui.block.comparator_dataEnable block output comparator data:2.2 操作步骤打开或新建一个方块元素进入Advanced页签在 Tile Entity 属性区域勾选Has inventory有物品栏—— 这是本参数生效的前提条件勾选Enable block output comparator data启用方块输出比较器数据按需配置物品栏大小Inventory size、堆叠上限Inventory stack size等参数保存并生成代码将 mod 编译后放入游戏测试。2.3 依赖关系与默认值从源码看该复选框的可用性与有物品栏强绑定。当未勾选 Has inventory 时refreshFieldsTileEntity()会将其置灰禁用private void refreshFieldsTileEntity() { boolean hasInventorySelected hasInventory.isSelected(); ... inventoryDropWhenDestroyed.setEnabled(hasInventorySelected); inventoryComparatorPower.setEnabled(hasInventorySelected); ... }见 BlockGUI.java同时在新建方块时该选项默认被勾选inventoryComparatorPower.setSelected(true);见 BlockGUI.java保存元素时GUI 状态写入数据模型block.inventoryComparatorPower inventoryComparatorPower.isSelected();加载元素时则反向回填inventoryComparatorPower.setSelected(block.inventoryComparatorPower);分别见 BlockGUI.java 与 BlockGUI.java三、数据模型Block 元素中的字段该开关在方块数据模型类 Block.java 中对应一个布尔字段紧邻物品栏相关字段public boolean hasInventory; ModElementReference(acceptedTypes { GUI.class }) Nullable public String guiBoundTo; public boolean openGUIOnRightClick; Numeric(init 9, min 0, max 256, step 1) public int inventorySize; Numeric(init 99, min 1, max 1024, step 1) public int inventoryStackSize; public boolean inventoryDropWhenDestroyed; public boolean inventoryComparatorPower;见 Block.java需要注意的字段约束inventorySize取值范围 0–256默认 9对应原版一行的物品栏inventoryStackSize取值范围 1–1024默认 99inventoryComparatorPower为纯布尔开关无数值参数——比较器输出强度由物品栏内容自动计算无需手动指定。在集成测试中该字段也被纳入随机化测试数据用于验证生成器的健壮性block.inventoryComparatorPower random.nextBoolean();见 TestWorkspaceDataProvider.java四、生成代码原理NeoForge 端的模拟信号实现勾选该参数后MCreator 的代码生成器会在生成的方块 Java 类中写入两个方法重写。以 1.21.1 NeoForge 生成模板 block.java.ftl 为例#if data.inventoryComparatorPower Override public boolean hasAnalogOutputSignal(BlockState state) { return true; } Override public int getAnalogOutputSignal(BlockState blockState, Level world, BlockPos pos) { BlockEntity tileentity world.getBlockEntity(pos); if (tileentity instanceof ${name}BlockEntity be) return AbstractContainerMenu.getRedstoneSignalFromContainer(be); else return 0; } /#if见 block.java.ftl在 26.3.x 新版 NeoForge 模板 block.java.ftl 中getAnalogOutputSignal签名多了一个Direction direction参数NeoForge 新版 API 的变化Override public boolean hasAnalogOutputSignal(BlockState state) { return true; } Override public int getAnalogOutputSignal(BlockState blockState, Level world, BlockPos pos, Direction direction) { BlockEntity tileentity world.getBlockEntity(pos); if (tileentity instanceof ${name}BlockEntity be) return AbstractContainerMenu.getRedstoneSignalFromContainer(be); else return 0; }见 block.java.ftl4.1 关键 API 含义hasAnalogOutputSignal()返回true声明该方块具备模拟输出能力红石比较器可以读取它getAnalogOutputSignal()返回 0–15 的信号强度AbstractContainerMenu.getRedstoneSignalFromContainer(be)Minecraft 原版提供的方法它根据容器中已占用槽位的数量计算信号强度公式为信号强度 占用槽位数 ÷ 总槽位数 × 14有物品的槽计 1满堆叠可计 2上限 15。这正是比较器根据方块内存储的物品数量输出红石信号这一描述在引擎层面的实现。4.2 与容器物品变化联动需要留意模拟信号并不会凭空刷新。容器内容发生变化后方块需要通知周围方块重新读取信号。生成模板中与物品栏销毁相关的onRemove/affectNeighborsAfterRemoval逻辑会调用world.updateNeighbourForOutputSignal(pos, this)1.21.1 模板见 block.java.ftl或Containers.updateNeighboursAfterDestroy26.3.x 模板保证比较器读数在物品变化后同步刷新。在游戏内漏斗、投掷器或玩家手动放入/取出物品时原版容器逻辑同样会触发邻居信号更新。五、实战应用信号读取与两种比较器模式勾选该参数后将红石比较器对准自定义方块即可读取信号。玩家可结合实际玩法设计5.1 经典应用场景场景设计思路物品储量指示用比较器读取箱子类方块配合红石灯/信号强度解码器显示储量百分比自动熔炉/自动合成控制当容器内物品达到阈值时输出信号控制投掷器或活塞启停自动补货系统信号低于阈值时激活漏斗链向容器补充原料存储统计多个方块经比较器汇总配合减法模式计算差额5.2 比较器的两种模式比较模式默认比较器输出信号强度 方块模拟信号强度。适合做储量指示——物品越多信号越强减法模式右键点击比较器切换输出 max(0, 侧向输入信号 − 后方方块信号)。适合做差值检测例如检测容器是否未满。5.3 应用前提与限制必须勾选 Has inventoryinventoryComparatorPower仅在方块具备物品栏时生效GUI 也会在未勾选物品栏时禁用该选项见上文refreshFieldsTileEntity信号基于槽位占用而非物品总数getRedstoneSignalFromContainer按占用槽位比例计算因此物品栏越大信号分辨率越高——例如 9 格物品栏每格约贡献 1–2 级信号而 27 格物品栏可提供更细腻的梯度需要容器内容变化时自动刷新生成代码依赖容器的setChanged()通知机制确保比较器读数实时准确该参数只影响模拟信号输出与方块自身的红石强/弱充能emittedRedstonePower等参数是两套独立机制不要混淆。六、与其他红石相关参数的配合在 BlockGUI.java 的属性面板中该参数与以下选项同处 Tile Entity 区块可组合出完整的红石交互方案Has inventory / Inventory size / Inventory stack size定义物品栏本身是比较器信号的基础Drop inventory items when destroyed控制方块被破坏时是否掉落物品同时触发邻居信号更新GUI binding为方块绑定 GUI让玩家可以手动存取物品从而改变比较器读数Input slots / Output slots配合自动化漏斗定义哪些槽位可进/可出影响占用槽位的计算结果。七、小结inventoryComparatorPower是 MCreator 方块元素中一个体积小但作用关键的开关它通过生成hasAnalogOutputSignal与getAnalogOutputSignal两个方法并复用原版AbstractContainerMenu.getRedstoneSignalFromContainer容器信号算法让自定义方块无缝接入原版红石比较器生态。理解它的依赖前提必须拥有物品栏、默认开启行为以及基于槽位占用比例的信号计算规则可以帮助你在做自动化存储、资源管理和红石机械时准确设计信号阈值避免信号跳变或读数不准等常见问题。延伸阅读中文帮助文档plugins/mcreator-localization/help/zh_CN/block/comparator_data.mdGUI 实现src/main/java/net/mcreator/ui/modgui/BlockGUI.java数据模型src/main/java/net/mcreator/element/types/Block.java1.21.1 NeoForge 生成模板plugins/generator-1.21.1/neoforge-1.21.1/templates/block/block.java.ftl26.3.x NeoForge 生成模板plugins/generator-26.3.x/neoforge-26.3/templates/block/block.java.ftl集成测试src/test/java/net/mcreator/integration/TestWorkspaceDataProvider.java赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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点击查看免费下载相关推荐SilentPatch终极GTA三部曲兼容性修复方案深度解析SilentPatch终极GTA三部曲兼容性修复方案深度解析 在现代操作系统上重温经典GTA游戏时技术兼容性问题常常成为玩家最大的障碍。游戏崩溃、分辨率不兼游戏开发逆向工程极客时间电子书构建技术开发者完整知识体系的最佳路径极客时间电子书构建技术开发者完整知识体系的最佳路径 在技术快速迭代的今天开发者面临着知识碎片化、学习路径模糊的普遍挑战。GitHub_Trending/ge终极Katana输出模块指南5种自定义数据格式轻松掌握终极Katana输出模块指南5种自定义数据格式轻松掌握 Katana作为下一代爬虫和蜘蛛框架其强大的输出模块允许用户灵活定制数据格式以满足不同场景需求。本文网页爬虫网络安全CLI应用安全上一篇Capacitor国际化方案多语言支持与地区适配全指南下一篇极致压缩OpenAI Baselines模型瘦身指南从512MB到64MB的推理加速实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑