低代码代码生成桌面应用游戏开发【免费下载链接】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 方块能量存储功能中的max_receive参数它定义了能量元件方块、物品等单次从其他能量元件接收能量的上限。通过阅读本文你将理解该参数在 Block 编辑界面中的配置位置、与能量容量capacity、初始能量initial energy及最大提取max extract等兄弟参数的关系并从数据模型、图形界面和 NeoForge 代码生成模板三个层面掌握其在 MCreator 中的完整落地方式。参数定义max_receive 是什么MCreator 内置帮助文档对该参数的官方定义为该值是该能量元件方块、物品……可以从另一个能量元件接收的最大能量。德语原文Dieser Wert ist der maximale Wert der Energie, die das Energie-Element (Block, Gegenstand, ...) von einem anderen Energie-Element empfangen kann.该定义同时存在于各语言版本的帮助文档中例如 德语版、英文默认版 与 简体中文版。需要特别强调的是max_receive限定的并非能量存储总量而是每一次能量插入操作insertion能够进入该元件的最大能量值。这一点在界面标签中也有明确标注——texts.properties 中将该参数显示为Max energy receive:并附带小字注释Per insertion。也就是说这是一个单次速率限制而不是总量限制。在 Block 编辑界面中配置 max_receive界面入口max_receive位于方块Block元素的编辑界面中。打开任意方块的 Mod Element 编辑器向下滚动到Energy Storage能量存储区域即可看到该输入框。该区域从上到下依次为参数界面标签英文作用Enable energy storageEnable energy storage:是否启用该方块的能量存储功能Initial energyInitial energy:元件初始携带的能量值Maximal energy capacityMaximal energy capacity:元件能存储的最大能量总量Max energy receiveMax energy receive:单次可接收的最大能量本文主题Max energy extractMax energy extract:单次可向外提取的最大能量该布局在 BlockGUI.java 中按顺序构建其中max_receive的输入框与帮助按钮绑定代码如下energyStorage.add(HelpUtils.wrapWithHelpButton(this.withEntry(energy/max_receive), L10N.label(elementgui.block.energy_max_receive))); energyStorage.add(energyMaxReceive);帮助按钮机制输入框左侧的?帮助按钮正是本文所依托的帮助文档的入口。HelpUtils.wrapWithHelpButton会将energy/max_receive这个条目标识映射到对应语言包中的帮助文件——即plugins/mcreator-localization/help/语言代码/energy/max_receive.mdMCreator 会根据当前界面语言自动加载对应语言的说明找不到时回退到default英文版。这种配置界面 上下文帮助文档的设计让每个参数都有即查即用的本地化说明。启用条件需要注意的是能量存储相关控件并非始终可用。从 BlockGUI.java 可以看出energyMaxReceive等控件仅在hasInventorySelected即该方块已启用 tile entity / 物品栏时才被启用hasEnergyStorage.setEnabled(hasInventorySelected); energyInitial.setEnabled(hasInventorySelected); energyCapacity.setEnabled(hasInventorySelected); energyMaxReceive.setEnabled(hasInventorySelected); energyMaxExtract.setEnabled(hasInventorySelected);因此要配置max_receive需要先满足两个前提该方块绑定了 tile entity在方块的 Tile Entity 设置中开启并在能量存储区域勾选Enable energy storage。参数族与 energyCapacity、energyInitial、maxExtract 的关系max_receive并非孤立参数它与同一面板中的其他三个能量参数共同决定元件的能量行为energyCapacity最大容量元件最多可储存的能量总量。接收能量后元件内部存储量不会超过该值。即使外部持续注入当存储量达到容量上限时多余的注入会被拒绝。energyInitial初始能量元件刚被放置/生成到世界中时自带的基础能量。当容量与接收速率足够时初始能量决定了元件上电即用的程度。energyMaxReceive最大接收每次插入操作最多进入的能量。它约束的是流入侧的速率上限。energyMaxExtract最大提取每次提取操作最多取出的能量。它约束的是流出侧的速率上限。在数据模型中这四个字段在 Block.java 中集中定义且全部带有NonNullIf(hasEnergyStorage)注解——即只有启用了能量存储这些参数才是必填项public boolean hasEnergyStorage; NonNullIf(hasEnergyStorage) Numeric(init 0, min 0, max Integer.MAX_VALUE, step 1) public int energyInitial; NonNullIf(hasEnergyStorage) Numeric(init 400000, min 0, max Integer.MAX_VALUE, step 1) public int energyCapacity; NonNullIf(hasEnergyStorage) Numeric(init 200, min 0, max Integer.MAX_VALUE, step 1) public int energyMaxReceive; NonNullIf(hasEnergyStorage) Numeric(init 200, min 0, max Integer.MAX_VALUE, step 1) public int energyMaxExtract;默认值与取值范围从Numeric注解及构造函数 Block.java 可以确认各参数的默认值与约束参数默认值最小值最大值步长energyInitial00Integer.MAX_VALUE1energyCapacity4000000Integer.MAX_VALUE1energyMaxReceive2000Integer.MAX_VALUE1energyMaxExtract2000Integer.MAX_VALUE1可以看到energyMaxReceive与energyMaxExtract的默认值都是 200即默认情况下元件每 tick 接收与提取的速率限制相同。而energyCapacity的默认值 400000 远大于单次插入上限这也印证了容量是总量、receive/extract 是单次速率的设计思路。源码实现从字段到生成的 EnergyStorage数据模型的存取Block 元素的数据模型由 Block.java 定义。编辑界面在打开方块时会将模型中的值回显到输入框BlockGUI.javaenergyInitial.setValue(block.energyInitial); energyCapacity.setValue(block.energyCapacity); energyMaxReceive.setValue(block.energyMaxReceive); energyMaxExtract.setValue(block.energyMaxExtract);用户点击保存后界面值写回模型BlockGUI.javablock.hasEnergyStorage hasEnergyStorage.isSelected(); block.energyInitial (int) energyInitial.getValue(); block.energyCapacity (int) energyCapacity.getValue(); block.energyMaxReceive (int) energyMaxReceive.getValue(); block.energyMaxExtract (int) energyMaxExtract.getValue();整个链路清晰界面输入框 →Block模型字段 → 保存到工作区为后续代码生成提供数据。代码生成层面的落地当生成 NeoForge 1.21.1 模组代码时MCreator 使用 blockentity.java.ftl 模板把上述四个参数直接填入 NeoForgeEnergyStorage的构造函数#if data.hasEnergyStorage private final EnergyStorage energyStorage new EnergyStorage(${data.energyCapacity}, ${data.energyMaxReceive}, ${data.energyMaxExtract}, ${data.energyInitial}) { Override public int receiveEnergy(int maxReceive, boolean simulate) { int retval super.receiveEnergy(maxReceive, simulate); if(!simulate) { setChanged(); level.sendBlockUpdated(worldPosition, level.getBlockState(worldPosition), level.getBlockState(worldPosition), 2); } return retval; } Override public int extractEnergy(int maxExtract, boolean simulate) { int retval super.extractEnergy(maxExtract, simulate); if(!simulate) { setChanged(); level.sendBlockUpdated(worldPosition, level.getBlockState(worldPosition), level.getBlockState(worldPosition), 2); } return retval; } }; public EnergyStorage getEnergyStorage() { return energyStorage; } /#if从模板代码可以看出MCreator 直接采用 NeoForge 的EnergyStorageAPI其构造参数依次为(capacity, maxReceive, maxExtract, energy)正好对应界面上的四个参数。以该 API 的语义而言maxReceive就是receiveEnergy(int maxReceive, boolean simulate)方法中单次允许注入的能量上限模板还覆写了receiveEnergy与extractEnergy在非模拟simulatefalse的真实能量变动时通知区块更新并标记方块数据变更确保能量数值在客户端与存档中同步。该模板在同一 generator 插件的其他版本如 NeoForge 26.3 的 blockentity.java.ftl中保持了相同的实现方式。实践建议与常见误区基于上述定义、界面与源码实现在配置max_receive时可以参考以下要点区分单次速率与总量max_receive不是存储上限存储上限由energyCapacity决定。若需快速充能应提高max_receive而不仅是容量。接收速率的实际含义由于max_receive直接映射到EnergyStorage的maxReceive构造参数外部能量源每次调用receiveEnergy时实际进入的能量不会超过该值与剩余容量的较小者。可以推断将其设为 0 意味着该元件无法从外部接收能量例如纯输出型发电方块而较大的值则允许更快的充能节奏。与max_extract配合能量流通的完整链路包含接收与提取两侧。一个储能方块既可以从上游接收受max_receive限制又可以向下游输出受max_extract限制配置时应对两侧做整体设计。受 tile entity 前提约束只有方块启用了 tile entity 并勾选Enable energy storagemax_receive才会真正生效并在代码生成时写入EnergyStorage。否则即便在界面上看到该字段它也是禁用状态。总结max_receive是 MCreator 方块能量存储系统的核心速率参数之一它在 Block 编辑界面的 Energy Storage 面板中配置由Block数据模型承载默认值 200、取值范围 0 至Integer.MAX_VALUE最终通过 NeoForge 代码生成模板以EnergyStorage构造参数的形式落入生成的模组代码。理解它的单次插入速率限制本质并将其与energyCapacity、energyInitial、energyMaxExtract放在同一设计语境中考量是正确设计 MCreator 能量方块如发电机、电池、机器等的关键一步。若需进一步了解能量存储的整体设计可参阅同目录的 enable_storage.md、energy_capacity.md、initial_energy.md 与 max_extract.md 等帮助文档。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 能量系统详解Max energy extract最大提取能量参数的作用、配置与代码实现MCreator 能量系统详解Max energy extract最大提取能量参数的作用、配置与代码实现 导读 在 MCreator 的方块编辑器中「能低代码代码生成桌面应用游戏开发MCreator 维度参数详解怪物生成最大方块亮度monster_spawn_block_light_limit配置与源码解析MCreator 维度参数详解怪物生成最大方块亮度monster_spawn_block_light_limit配置与源码解析 本文聚焦 MCreator低代码代码生成桌面应用游戏开发MCreator 方块能量存储完全指南启用能量存储、Tile Entity 前置条件与参数配置MCreator 方块能量存储完全指南启用能量存储、Tile Entity 前置条件与参数配置 导读 本文围绕 MCreator 官方帮助文档条目 energ低代码代码生成桌面应用游戏开发上一篇3分钟终极解密如何免费高效转换网易云音乐NCM文件的完整方案下一篇猫抓Cat-Catch浏览器资源嗅探的终极解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?