首页 / 资讯中心 / 文章详情

MCreator 基岩版方块模型完全指南:Normal / Cross / 单纹理 / 自定义 `.geo.json` 模型的选择与渲染原理

MCreator 基岩版方块模型完全指南:Normal / Cross / 单纹理 / 自定义 `.geo.json` 模型的选择与渲染原理 ★ FEATURED ARTICLE
低代码代码生成桌面应用游戏开发【免费下载链接】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 仓库中 de_DE 语言包的 beblock 模型帮助文档英文原文见 default 语言包同路径文档展开。该文档面向 MCreator 的 Bedrock Edition Add-On 生成器generator-addon-26.5x讲解「Bedrock Block基岩版方块元素类型BEBLOCK」的模型Model选择模型决定方块的视觉外观而不决定方块的边框Bounding Box。读完本文你将掌握四种模型选项的含义与适用场景、模型与渲染方法Render Method的配合关系、纹理联动逻辑以及 MCreator 从 UI 配置到生成block.json的完整底层实现链路。1. 文档背景它挂在哪个界面、服务哪个功能在 MCreator 中新建BE Block基岩版方块元素后GUI 分为「视觉Visual」「属性Properties」「生成Generation」「脚本Scripts」四个页面其中「视觉」页顶部即「模型」下拉框。该下拉框的帮助按钮绑定的帮助入口正是beblock/model相关代码见 BEBlockGUI.javarenderSettings.add( HelpUtils.wrapWithHelpButton(this.withEntry(beblock/model), L10N.label(elementgui.beblock.model))); renderSettings.add(renderType);也就是说plugins/mcreator-localization插件在语言包help/语言/beblock/model.md中提供该下拉框的逐语言帮助文本MCreator 的 UI 会按当前界面语言自动加载对应的 Markdown 并渲染为帮助弹窗。这也是为什么同一份文档在仓库中存在de_DE、zh_CN、default英文基准等多份副本。核心前提原文第一句模型只定义视觉外观不定义方块的边框。这一点至关重要——在 Bedrock 引擎中方块的碰撞体积collision box与模型几何体是两套独立的数据即使选用了自定义几何模型方块仍然可以也通常需要单独设置贴合或不贴合模型形状的边框。2. 四种模型选项详解原文档给出了四个选项Normal、Cross、Single texture、Custom。MCreator 源码中这三个内置模型被定义为常量见 BEBlockGUI.javapublic static final Model normal new Model.BuiltInModel(Normal); public static final Model cross new Model.BuiltInModel(Cross model); public static final Model singleTexture new Model.BuiltInModel(Single texture); public static final Model[] builtinitemmodels new Model[] { normal, cross, singleTexture };2.1 Normal —— 每面独立纹理的普通方块视觉表现标准立方体方块六面均可使用独立纹理。适用场景绝大多数常规方块石块、矿石、地板等。纹理要求需要顶部、底部、前后左右共最多 6 张纹理未填写的面会回退到主纹理见下文。代码对应renderType 10。生成方块预览图标时使用顶/左/前三面纹理合成透视方块图BEBlock.javaif (renderType 10) { return (BufferedImage) MinecraftImageGenerator.Preview.generateBlockIcon( getTextureWithFallback(textureTop), getTextureWithFallback(textureLeft), getTextureWithFallback(textureFront)); }选中 Normal 时GUI 会启用六面独立纹理选择器其它模型则切换为单一纹理选择器见 BEBlockGUI.javaprivate void updateTextureOptions() { if (normal.equals(renderType.getSelectedItem())) { textures.setTextureFormat(BlockTexturesSelector.TextureFormat.ALL); } else { textures.setTextureFormat(BlockTexturesSelector.TextureFormat.SINGLE_TEXTURE); } }生成时六面纹理分别映射到up / down / north / south / east / west六种材质实例纹理图集由 terrain_texture.json.ftl 生成未单独指定顶/左/前面时源码通过textureTop()、textureLeft()、textureFront()等访问器自动回退到主纹理textureBEBlock.java。2.2 Cross —— 十字交叉模型花卉类方块视觉表现纹理以X 形交叉摆放典型如花朵、草丛、作物。适用场景所有非立方体、站立在地面的小型植物类方块。代码对应renderType 11。生成block.json时几何体被指定为内置的minecraft:geometry.cross见 block.json.ftlminecraft:geometry: #if data.hasCustomModel() geometry.${data.getModel().getReadableName()} #elseif data.renderType() 11 minecraft:geometry.cross #else minecraft:geometry.full_block /#if,渲染注意事项原文重点选用 Cross 模型时建议将渲染方法Render Method设为alpha_test_single_sided、blend或opaque以避免纹理闪烁texture flickering。原因在于 Cross 模型由两个交叉平面构成若使用双面渲染或不当的透明混合两个面会在重叠像素处互相穿插、导致 z-fighting 闪烁。另外模板对 Cross 还强制关闭了环境光遮蔽与面变暗见 block.json.ftl*: material_face data.renderType() 11 data.renderType() 11/即ambient_occlusion: false、face_dimming: false宏定义见 block.json.ftl确保交叉面不会因相邻方块遮挡产生明暗差异。2.3 Single texture —— 单纹理普通方块视觉表现外观与 Normal 相同的标准立方体但六面共用同一张纹理。适用场景需要快速建模的简单方块或纹理本身六面一致如单色块、泥土等。代码对应renderType 12。hasOneTexture()返回true见 BEBlock.java因此材质实例退化为单一*项纹理图集也只为该方块注册一条记录terrain_texture.json.ftl。预览图标生成时三面均使用主纹理} else if (renderType 12) { return (BufferedImage) MinecraftImageGenerator.Preview.generateBlockIcon( getMainTexture(), getMainTexture(), getMainTexture()); }与 Normal 相比Single texture 的主要差异就是减少了纹理槽位本质上仍是完整立方体几何minecraft:geometry.full_block碰撞/边框行为与 Normal 一致。2.4 Custom —— 自定义 Bedrock 模型.geo.json视觉表现使用你自行制作的Bedrock 几何模型文件.geo.json几何体完全由模型决定。尺寸硬限制方块模型被限制在30×30×30 像素以内原文档明确说明。代码对应renderType 2。MCreator 将.geo.json识别为Model.Type.BEDROCK见 Model.java} else if (file.getName().endsWith(.geo.json)) { this.file new File[1]; this.file[0] file; this.type Type.BEDROCK; }模型的显示名由文件名去掉.geo.json后缀得到Model.java并最终作为geometry.显示名写入生成的block.json见上文 2.2 的模板分支。加载时MCreator 会在工作区models/目录由 WorkspaceFolderManager.java 的getModelsDir()定义下查找名称.geo.jsonelse if (type Type.BEDROCK) return new Model(new File(workspace.getFolderManager().getModelsDir(), name .geo.json));在 UI 侧模型下拉框在三个内置模型之外还会动态并入工作区中所有 Bedrock 模型BEBlockGUI.javaComboBoxUtil.updateComboBoxContents(renderType, ListUtils.merge(Arrays.asList(normal, cross, singleTexture), Model.getModelsWithTextureMaps(mcreator.getWorkspace()).stream() .filter(el - el.getType() Model.Type.BEDROCK).collect(Collectors.toList())));使用流程把做好的.geo.json及配套纹理放入工作区models/目录 → 重新打开 BE Block 编辑器 → 在「模型」下拉框选择该模型。选中的模型名会被写入数据模型的customModelName字段。3. 渲染方法Render Method与纹理闪烁的配合原文档在 Cross 条目中给出了渲染方法建议因此必须结合同目录帮助文档 beblock/render_method.md 理解其含义。渲染方法决定方块的透明表现、背面剔除与远距离渲染行为相关概念Transparenz透明度完全不可见的像素被裁剪掉alpha test。Durchscheinend半透明像素半透明可透视blend。Rückseiten-Keulung背面剔除从背面看时面不可见。Distanzvernichtung远距离剔除面在渲染距离一半之后消失。MCreator 的BEBlock数据模型提供以下可选渲染方法BEBlock.java渲染方法透明度半透明背面剔除远距离剔除典型示例opaque默认否否是否泥土、石头、混凝土double_sided否否否否粉雪blend是是是否玻璃、灯塔、蜂蜜块alpha_test是否否是漏斗、刷怪笼、藤蔓alpha_test_single_sided是否是是漏斗、刷怪笼、藤蔓alpha_test_to_opaque近处 alpha_test / 远处 opaque———树叶alpha_test_single_sided_to_opaque近处 alpha_test_single_sided / 远处 opaque———海带、甘蔗blend_to_opaque近处 blend / 远处 opaque————为什么 Cross 推荐这三种原文档给出的组合alpha_test_single_sided、blend、opaque的共同点是都启用背面剔除从而避免交叉的两个平面在重叠处相互穿透产生纹理闪烁其中blend适合需要半透明裁切的植物配合 alpha 通道opaque适合完全不透明的纹理。模板在写入render_method时仅在非默认值opaque时才输出该字段block.json.ftl#if data.renderMethod ! opaque,render_method: ${data.renderMethod}/#if4. 从 UI 选项到数据模型与生成的完整链路把「模型下拉框的每一次选择」到「最终 JSON」串起来可以得到完整的调用链UI 选择BEBlockGUI.java 的getElementFromGUI()将选中模型映射为整数renderType与名称customModelNameModel model Objects.requireNonNull(renderType.getSelectedItem()); block.renderType 10; if (model.getType() Model.Type.BEDROCK) block.renderType 2; else if (model.equals(cross)) block.renderType 11; else if (model.equals(singleTexture)) block.renderType 12; block.customModelName model.getReadableName();数据模型BEBlock.java 根据renderType反查模型对象并提供hasCustomModel()renderType 2与hasOneTexture()自定义 / Cross / 单纹理两个供模板调用的判断方法。代码生成beblock.definition.yaml插件定义文件声明block/block.json.ftl输出到SRCROOT/blocks/registryname.json全局模板resourcepack/terrain_texture.json.ftl输出到RESROOT/textures/terrain_texture.jsonblock.json.ftl依据hasCustomModel() / renderType() / hasOneTexture()决定minecraft:geometry与minecraft:material_instances的最终形态。旧版迁移将 Java 版方块转换为基岩版方块的转换器 BlockToBedrockConverter.java 也会完整迁移纹理、硬度、掉落等属性并将摩擦系数上限收敛到 0.9、掉落数量上限收敛到 64 以符合 Bedrock 限制说明模型选择体系是 BE Block 元素配置的一部分与其它属性一体保存。5. 实战操作速查在 MCreator 中配置方块模型的完整步骤新建元素 → 类型选择Bedrock BlockBE Block对应元素类型BEBLOCK由ModElementTypeLoader注册。进入「视觉Visual」页 → 「模型Model」下拉框选择Normal / Cross model / Single texture或从下拉列表中选择已导入的自定义 Bedrock 模型。根据模型类型设置纹理Normal分别指定顶部、底部、前后左右纹理缺省面自动回退主纹理Cross / Single texture / 自定义指定一张主纹理。若选择Cross在「渲染方法Render Method」中从alpha_test_single_sided、blend、opaque中择一避免纹理闪烁。若选择自定义模型先将.geo.json放入工作区models/目录模型尺寸不得超过30×30×30 像素再刷新编辑器并重新选择。在「属性」页单独配置方块的边框/碰撞相关属性——模型选择不会影响边框。6. 常见误区与要点小结模型 ≠ 碰撞箱模型只改外观碰撞箱是独立的需要非标准碰撞体时务必在其它属性中单独配置切勿以为选了自定义模型就会自动拥有匹配的碰撞形状。Cross 闪烁交叉平面模型必须搭配启用背面剔除的渲染方法文档推荐的三种均可否则会出现纹理闪烁。尺寸上限自定义.geo.json模型不得超过 30×30×30 像素超限模型可能无法正确生成或渲染。纹理槽位Normal 模型用满六面纹理槽位其它三种模型统一使用单纹理槽位hasOneTexture()为 true 时材质实例退化为*。默认值新创建的 BE Block 默认renderType 10、customModelName NormalBEBlock.java渲染方法默认opaque。若需进一步阅读可参考英文基准文档 default/beblock/model.md以及配套的 render_method.md 帮助页底层实现可深入 BEBlockGUI.java、BEBlock.java 与 block.json.ftl。赞分享低代码代码生成桌面应用游戏开发【免费下载链接】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 方块模型选择指南从内置模型到自定义 JSON/JAVA/OBJ 模型MCreator 方块模型选择指南从内置模型到自定义 JSON/JAVA/OBJ 模型 本篇技术指南围绕 MCreator 方块编辑器中「模型Model」低代码代码生成桌面应用游戏开发MCreator 方块状态模型Block State Model详解为每个 Block State 选择 Normal 或自定义 JSON/OBJ 模型MCreator 方块状态模型Block State Model详解为每个 Block State 选择 Normal 或自定义 JSON/OBJ 模型低代码代码生成桌面应用游戏开发MCreator 方块发光渲染Emissive Rendering详解让自定义方块如岩浆般自发光MCreator 方块发光渲染Emissive Rendering详解让自定义方块如岩浆般自发光 本篇技术指南围绕 MCreator 的「发光渲染Emi低代码代码生成桌面应用游戏开发上一篇Win11Debloat完整指南免费开源工具让你的Windows 11焕然一新下一篇Infection Monkey WMI Exploiter 参考指南Windows 远程执行与超时配置解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站