低代码代码生成桌面应用游戏开发【免费下载链接】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 中工具Tool元素的一个专用配置项Blocks affected受影响的方块展开它决定了一把特殊工具Special tool type能够以多快速度挖掘哪些方块。你将掌握该参数在 GUI 中的填写方式、它仅对 Special 工具类型生效的底层原因以及它在 NeoForge 代码生成模板中如何被翻译为getDestroySpeed判定逻辑的完整原理并附上仓库源码与集成测试的实证。1. 参数定义它控制什么MCreator 官方本地化帮助文档对Blocks affected给出了最精炼的定义德语版原文为Diese Liste legt fest, für welche Blöcke das Werkzeug verwendet werden kann.英文版plugins/mcreator-localization/help/en_GB/tool/blocks_affected.md则补充了一个关键前提This list defines what blocks the tool can be used on. This parameter is only used by the special tool type.即该列表定义工具可以作用于哪些方块且此参数仅由特殊工具类型使用。你可以在各语言版本的同一路径下找到对应帮助文件例如中文版位于 plugins/mcreator-localization/help/zh_CN/tool/blocks_affected.md。在 GUI 中该字段显示在工具元素属性页语言资源键为elementgui.tool.blocks_affected对应英文 Blocks affected: 见 plugins/mcreator-localization/lang/texts.properties德语为 Betroffene Blöcke: 。围绕它还有一批同属工具元素的相邻帮助文档可以对照阅读类型选择 type.md、挖掘效率 efficiency.md、方块掉落层级 blocks_drop_tier.md、修复材料 repair_items.md 以及方块破坏事件 when_block_destroyed.md。2. 数据模型blocksAffected 字段在 MCreator 源码中工具元素的数据模型定义于 src/main/java/net/mcreator/element/types/Tool.javaModElementReference public ListMItemBlock blocksAffected;要点说明类型为ListMItemBlock即一个可容纳多个方块或方块标签Tag的列表而非单个方块标注ModElementReference表示列表项是对工作区中其他 Mod 元素或原版资源的引用会参与跨元素的引用关系维护构造方法中初始化为空列表this.blocksAffected new ArrayList();见 Tool.java即新建工具时默认不限制任何方块。3. 适用前提为什么只有 Special 工具类型使用它工具类型字段在 Tool.java 中被限定为以下选项Pickaxe, Axe, Sword, Spade, Hoe, Shield, Shears, Fishing rod, Special, MultiTool而blocksAffectedPanel的可见性在 GUI 代码中被硬编码为仅当选中 Special 时显示见 src/main/java/net/mcreator/ui/modgui/ToolGUI.javaprivate void updateFields() { String selectedToolType (String) toolType.getSelectedItem(); if (selectedToolType ! null) { blockingModelPanel.setVisible(selectedToolType.equals(Shield)); blocksAffectedPanel.setVisible(selectedToolType.equals(Special)); ...这从 UI 层面印证了帮助文档该参数仅用于特殊工具类型的说明。原因从源码结构可以推断其他工具类型镐、斧、剑等的挖掘对象由原版的工具等级Tier与方块标签体系如MINEABLE_WITH_PICKAXE决定无需手工指定而 Special 类型没有内置的挖掘对象集合所以把哪些方块受本工具影响完全交给作者自定义。4. 界面配置如何填写方块与方块标签blocksAffected在 GUI 中由MCItemListField承载ToolGUI.javablocksAffected new MCItemListField(mcreator, ElementUtil::loadBlocksAndTags, false, true);其中ElementUtil::loadBlocksAndTags决定了列表候选来源为方块与方块标签与修复材料字段使用的loadBlocksAndItemsAndTags不同这里不含物品因此可以直接添加具体的原版方块或自定义方块如minecraft:dirt、工作区中自定义的方块元素也可以添加以TAG:开头的方块标签条目如TAG:walls、TAG:dirt从而一次性覆盖整类方块勾选/反选标记构造参数中的两个布尔值用于控制是否允许自由输入与多选行为。配置面板在属性页通过 ToolGUI.java 中的HelpUtils.wrapWithHelpButton(this.withEntry(tool/blocks_affected), ...)挂接帮助按钮点击即可弹出本篇所对应的帮助文档。5. 代码生成原理getDestroySpeed 与 containsAnyOfBlocks配置好的列表在生成 NeoForge 模组代码时会进入工具模板 plugins/generator-1.21.1/neoforge-1.21.1/templates/tool.java.ftl 中 Special 分支覆盖getDestroySpeed方法Override public float getDestroySpeed(ItemStack itemstack, BlockState blockstate) { return #if data.blocksAffected?has_content${containsAnyOfBlocks(data.blocksAffected blockstate)} ? ${data.efficiency}f : /#if1; }这里的语义是当列表非空时若目标方块命中列表或列表中的任一标签挖掘速度返回efficiency效率字段的值否则返回 1基础速度若列表为空则直接返回 1即不提供任何速度加成。相同的逻辑同样存在于下一代生成器 plugins/generator-26.3.x/neoforge-26.3/templates/tool.java.ftl两个受支持版本行为一致。实际生成的判定表达式由工具函数containsAnyOfBlocks拼装定义于 plugins/generator-1.21.1/neoforge-1.21.1/utils/mcitems.ftl。其核心处理分三类未映射的TAG:前缀条目→ 解析为方块标签映射后以#开头的条目→ 视为原版方块标签去掉#后解析普通方块条目→ 生成mappedBlockToBlock(block)的具体方块注册项。随后按内容拼装最终表达式仅含普通方块时List.of(BlockA, BlockB).contains(blockstate.getBlock())含标签时Stream.of(BlockTags.create(ResourceLocation.parse(tag名))).anyMatch(blockstate::is)两类混用时会用||连接多个标签之间也是||关系即命中任一即生效。这意味着添加多个方块/标签是按或逻辑生效的且普通方块与标签之间不互相排除可以自由混用。6. 与相邻参数及内置工具类型的对比理解 Blocks affected 后可以顺带厘清它与同页其他参数的分工参数作用与 Blocks affected 的关系efficiency效率工具的挖掘速度数值Blocks affected 决定对谁生效efficiency 决定生效时多快blocks_drop_tier掉落层级决定能否正确掉落对应等级的方块Special 类型下此面板被隐藏见 ToolGUI.java与 Blocks affected 互斥内置工具Pickaxe 等由Tier的getIncorrectBlocksForDrops与MINEABLE_WITH_*标签体系驱动不使用 Blocks affected见 tool.java.ftlMultiTool通过重写isCorrectToolForDrops综合多个MINEABLE_WITH_*标签判断同样不使用 Blocks affected此外Special 类型在 tool.definition.yaml 中被加入ITEMS:minecraft:pickaxes标签条件为toolType % Special使特殊工具在创造模式物品栏中归属于镐类标签便于与其他工具一并检索。7. 集成测试实证MCreator 的集成测试数据提供器 src/test/java/net/mcreator/integration/TestWorkspaceDataProvider.java 为 Special 工具准备了标准测试样本tool.blocksAffected new ArrayList(); if (!emptyLists Special.equals(toolType)) { ListMCItem blocksAndTags ElementUtil.loadBlocksAndTags(modElement.getWorkspace()); tool.blocksAffected.addAll( blocksAndTags.stream().map(e - new MItemBlock(modElement.getWorkspace(), e.getName())).toList()); tool.blocksAffected.add(new MItemBlock(modElement.getWorkspace(), TAG:walls)); tool.blocksAffected.add(new MItemBlock(modElement.getWorkspace(), TAG:dirt)); }该用例同时覆盖了普通方块条目与TAG:方块标签条目两种输入形式验证了模板对两类条目的解析与生成链路是完整的。这也从侧面提示只要工作区中存在任意方块/标签Special 工具就应当能生成对应的getDestroySpeed判定代码。8. 实践要点总结基于以上源码链路使用Blocks affected时有几点值得注意仅 Special 类型可见切换到其他工具类型时该面板自动隐藏编辑已存在的 Special 工具再切换类型会保留数据但不再生效列表为空 无速度加成getDestroySpeed直接返回 1工具不会获得任何针对方块的挖掘加速支持标签批量覆盖优先使用TAG:方块标签可让自定义工具天然兼容后续新增方块如模组后续加入的同标签方块判定为或关系列表内任意命中即返回效率值无需担心多个条目互相冲突与掉落层级联动Special 类型不参与方块掉落等级判定如需控制能否正确掉落方块应搭配其他机制如附加掉落条件additionalDropCondition。9. 延伸阅读工具元素完整字段模型src/main/java/net/mcreator/element/types/Tool.java工具 GUI 完整布局与字段联动src/main/java/net/mcreator/ui/modgui/ToolGUI.javaSpecial 分支生成模板plugins/generator-1.21.1/neoforge-1.21.1/templates/tool.java.ftl方块判定宏实现plugins/generator-1.21.1/neoforge-1.21.1/utils/mcitems.ftl工具元素定义与标签映射plugins/generator-1.21.1/neoforge-1.21.1/tool.definition.yaml集成测试用例src/test/java/net/mcreator/integration/TestWorkspaceDataProvider.java同主题帮助文档德语版efficiency.md、blocks_drop_tier.md、type.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 工具效率Efficiency参数详解从界面配置到代码生成原理MCreator 工具效率Efficiency参数详解从界面配置到代码生成原理 本文围绕 MCreator 的「工具」Tool元素中「效率」Effi低代码代码生成桌面应用游戏开发MCreator 粒子视觉缩放Scale参数深度解析从 GUI 配置到代码生成原理MCreator 粒子视觉缩放Scale参数深度解析从 GUI 配置到代码生成原理 粒子视觉缩放Scale是 MCreator 粒子元素中用于控制低代码代码生成桌面应用游戏开发MCreator 方块 GUI 绑定Bind GUI完整指南从参数配置到 NeoForge 代码生成MCreator 方块 GUI 绑定Bind GUI完整指南从参数配置到 NeoForge 代码生成 导读 在 MCreator 中绑定 GUIB低代码代码生成桌面应用游戏开发上一篇Handy离线语音转文字安装全攻略轻松解决5大常见问题下一篇RuoYi-Vue3 Excel导出全链路解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考