资讯动态

MCreator 方块元素「Creative Pick Item(创造模式选取物品)」配置详解:从中键拾取到源码级实现

发布时间:2026/10/16 2:51:28 来源:尧图企业网站定制
低代码代码生成桌面应用游戏开发【免费下载链接】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 开源仓库中block/creative_pick_item帮助文档所讲解的**「Creative Pick Item创造模式选取物品」**配置项说明它在 MCreator 方块Block与植物Plant元素编辑器中的具体含义、操作方式并深入仓库源码揭示该配置如何从 GUI 落到数据模型、最终生成到目标模组NeoForge 1.21.1 / NeoForge 26.3的 Java 代码中。读完本文你将完整掌握该选项的默认行为、自定义行为与底层getCloneItemStack生成逻辑并能据此判断在何种场景下应使用它。原文档说了什么一个字段决定创造模式中键拾取结果原帮助文档 plugins/mcreator-localization/help/cs_CZ/block/creative_pick_item.md 用一句话界定了该配置的核心语义该选项决定当你对某个方块执行「拾取」操作即按住鼠标中键点击方块英文称 pick block时会被选取到手中的是哪个物品。如果该项留空则默认拾取方块本身。这段描述同时被多语言版本继承例如中文翻译位于 plugins/mcreator-localization/lang/texts_zh_CN.propertieselementgui.common.creative_pick_itemhtml选取物品brsmall留空为预设创造模式选取物品/small/html由此可以提炼出该选项的两条关键规则自定义拾取物品在「Creative Pick Item」中指定任意物品可以是原版物品也可以是本 Mod 或其他 Mod 的自定义物品那么在创造模式中键点击该方块时拿到的是你指定的物品默认行为留空不填则拾取方块自身对应的物品。在 MCreator GUI 中的位置与操作「Creative Pick Item」并不是一个独立的高级功能而是方块元素Block Element编辑器中「掉落物与行为」相关区段的一个条目。在 GUI 源码 src/main/java/net/mcreator/ui/modgui/BlockGUI.java 中可以清晰看到它的装配方式selp3.add(HelpUtils.wrapWithHelpButton(this.withEntry(block/creative_pick_item), L10N.label(elementgui.common.creative_pick_item))); selp3.add(PanelUtils.centerInPanel(creativePickItem));其中HelpUtils.wrapWithHelpButton(... this.withEntry(block/creative_pick_item))正是帮助文档与本配置项的绑定关系——block/creative_pick_item即对应仓库内plugins/mcreator-localization/help/语言/block/creative_pick_item.md这一系列帮助页creativePickItem是一个MCItemHolder控件BlockGUI.java它通过ElementUtil::loadBlocksAndItems加载仓库中已有的方块与物品列表因此你在下拉/选择器中既能选原版物品也能选已创建的自定义方块物品保存时通过block.creativePickItem creativePickItem.getBlock();写回元素模型加载时通过creativePickItem.setBlock(block.creativePickItem);回填 GUI见 BlockGUI.java 与 BlockGUI.java。同样的配置也存在于植物元素编辑器 src/main/java/net/mcreator/ui/modgui/PlantGUI.java因为植物Plant在数据模型层面同样拥有该字段。操作要点该条目是可留空的留空即采用默认行为拾取方块本身。只有当方块本身没有对应物品、或你希望中键拾取得到另一个物品时才需要显式指定。数据模型字段如何存储在元素的数据模型层该配置被建模为MItemBlock类型的字段方块src/main/java/net/mcreator/element/types/Block.java 中的public MItemBlock creativePickItem;植物src/main/java/net/mcreator/element/types/Plant.java 中的public MItemBlock creativePickItem;MItemBlock是 MCreator 对“物品/方块引用”的通用封装它既可以指代原版物品如minecraft:diamond也可以指代带CUSTOM:前缀的本 Mod 自定义元素引用。字段为 null 时即对应“留空/默认行为”。源码级原理模板如何生成「拾取」逻辑MCreator 的代码生成器会在生成方块/植物主类时依据该字段是否为 null 决定是否覆写 Minecraft/NeoForge 的getCloneItemStack方法——这正是创造模式中键拾取功能背后的实现钩子。NeoForge 1.21.1 生成模板在 plugins/generator-1.21.1/neoforge-1.21.1/templates/block/block.java.ftl 中#if data.creativePickItem?? !data.creativePickItem.isEmpty() Override public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { return ${mappedMCItemToItemStackCode(data.creativePickItem, 1)}; } #elseif !data.hasBlockItem (data.blockBase! ! FlowerPot) Override public ItemStack getCloneItemStack(LevelReader level, BlockPos pos, BlockState state) { return ItemStack.EMPTY; } /#if植物模板 plugins/generator-1.21.1/neoforge-1.21.1/templates/plant/plant.java.ftl 结构相同只是 1.21.1 的植物版本使用了getCloneItemStack(BlockState state, HitResult target, LevelReader world, BlockPos pos, Player player)这个旧签名重载。NeoForge 26.3 生成模板在新版生成器 plugins/generator-26.3.x/neoforge-26.3/templates/block/block.java.ftl 与 plugins/generator-26.3.x/neoforge-26.3/templates/plant/plant.java.ftl 中签名更新为带boolean includeData, Player entity参数的getCloneItemStack(LevelReader world, BlockPos pos, BlockState state, boolean includeData, Player entity)但逻辑分支保持一致。三条分支的语义解读从模板结构可以看出生成逻辑的完整语义条件生成的 Java 行为对应原文档语义creativePickItem非空覆写getCloneItemStack返回指定的物品堆栈数量 1中键拾取得到你指定的物品creativePickItem为空且hasBlockItem false且非花盆基座覆写getCloneItemStack返回ItemStack.EMPTY方块本身没有物品拾取为空creativePickItem为空且有方块物品不生成覆写沿用默认行为留空 默认拾取方块本身其中#if data.creativePickItem?? !data.creativePickItem.isEmpty()同时做了空值判断??和空引用判断isEmpty()这正是“留空即默认”在代码层面的落实而data.blockBase! ! FlowerPot的例外判断则确保以花盆为基座的方块即使没有物品也不会破坏原版花盆默认的拾取行为。映射细节mappedMCItemToItemStackCode如何把配置变成 Java 代码生成模板中反复出现的mappedMCItemToItemStackCode(data.creativePickItem, 1)是 MCreator 的 FTL 工具函数实现在 plugins/generator-1.21.1/neoforge-1.21.1/utils/mcitems.ftl#function mappedMCItemToItemStackCode mappedBlock amount1 #if mappedBlock?trim?starts_with(/*ItemStack*/) #return mappedBlock?replace(/*ItemStack*/, ) #elseif mappedBlock?contains(/*?*/) ...处理带条件的三元表达式映射... #elseif mappedBlock?starts_with(CUSTOM:) #return toItemStack(mappedElementToRegistryEntry(mappedBlock), amount) #else #return toItemStack(mappedBlock, amount) /#if /#function #function toItemStack item amount #if amount 1 #return new ItemStack( item ) #else #return new ItemStack( item , ... ) /#if /#function这意味着当你选择的拾取物品是本 Mod 自定义物品时配置以CUSTOM:xxx形式存储生成时会通过mappedElementToRegistryEntry解析为实际的注册条目最终产出类似new ItemStack(ExamplemodItems.DIAMOND_HAMMER.get())的代码当你选择原版物品时直接映射为如new ItemStack(Items.DIAMOND)的代码数量参数固定为 1中键拾取一次只拿一个物品因此toItemStack走new ItemStack(item)的简写分支。典型使用场景与注意事项结合上述实现可以归纳出该配置在实际 Mod 开发中的典型用法方块本身无物品但仍想可拾取某些方块如启用了hasBlockItem false的自定义方块、特殊基座方块没有对应的方块物品。若希望玩家中键点击时仍能拿到一个可放置/可参考的物品例如指向另一物品就必须在这里显式指定否则根据elseif分支拾取结果会是ItemStack.EMPTY空手。拾取关联物品而非方块例如自定义“机器方块”希望中键拾取时给到配套的“工具物品”或跨 Mod 引用某个已有物品作为拾取结果。保持默认普通带方块物品的方块无需配置留空即可获得“拾取方块本身”的原版体验同时避免生成多余的覆写代码。小结「Creative Pick Item」是 MCreator 方块/植物元素中一个看似简单、实则由完整链路支撑的配置项GUI 中通过MCItemHolder与帮助按钮呈现BlockGUI.java数据层以MItemBlock creativePickItem字段存储Block.java生成阶段由 NeoForge 各版本模板依据空值判断输出getCloneItemStack覆写最终由mappedMCItemToItemStackCode将自定义/原版物品映射为new ItemStack(...)代码。理解这条链路后你不仅能正确配置该选项也能准确预判“留空”“无方块物品”“指定关联物品”三种情况下生成代码的差异。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 方块参数解析Creative pick item创造模式选择物品——中键拾取行为与代码生成原理MCreator 方块参数解析Creative pick item创造模式选择物品——中键拾取行为与代码生成原理 本文基于 MCreator 开源仓库中德低代码代码生成桌面应用游戏开发MCreator 方块与植物元素「可被骨粉催熟」选项isBonemealable详解从 GUI 配置到代码生成MCreator 方块与植物元素「可被骨粉催熟」选项isBonemealable详解从 GUI 配置到代码生成 本文围绕 MCreator 方块Bloc低代码代码生成桌面应用游戏开发MCreator 方块物品纹理Block Item Texture属性详解从物品栏图标到手持模型的完整原理与配置指南MCreator 方块物品纹理Block Item Texture属性详解从物品栏图标到手持模型的完整原理与配置指南 导读 在 MCreator 中创建自低代码代码生成桌面应用游戏开发上一篇Pydantic 验证错误生产环境排查实战用 Logfire 记录失败数据、结构化错误与告警链路下一篇深入理解 libcurl 的 CURLOPT_TRAILERDATAHTTP Chunked 传输尾部头回调的用户数据指针创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑