MCreator 方块基础类型(Block Base)完全指南:参数禁用机制与默认值约定
发布时间:2026/10/16 17:25:03 锦皓数字建站
完全指南:参数禁用机制与默认值约定`)
低代码代码生成桌面应用游戏开发【免费下载链接】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 base参数的设计动机与正确用法。该参数决定自定义方块在代码层面继承哪个原版方块类如StairBlock、SlabBlock、DoorBlock并会据此自动禁用一批与之冲突的编辑参数。读完本文你将理解为什么选择基础方块后部分参数变灰、各基础类型的特性差异以及如何遵循默认基础方块约定避免生成无效代码。什么是基础方块参数在 MCreator 的方块Block编辑界面中基础方块是一个可选项位于方块编辑器的基础方块block base panel区块内。它允许创作者从以下 14 种原版基础类型中选择一种作为自定义方块在代码层的继承父类Stairs楼梯、Slab台阶、Fence栅栏、Wall墙、Leaves树叶、TrapDoor活板门、Pane玻璃板、Door门、FenceGate栅栏门、EndRod末地烛、PressurePlate压力板、Button按钮、FlowerPot花盆、Sign告示牌、HangingSign悬挂告示牌这些选项定义在数据模型类 Block.java 的LimitedOptions注解中UI 端通过 BlockGUI.java 读取并在下拉框中合并了第一个特殊选项Default basic block默认基础方块即不继承任何基础类型。对应的帮助文档位于 default/block/base.md简体中文版本见 zh_CN/block/base.md捷克语版本见 cs_CZ/block/base.md它给出了两条核心告诫如果使用了基础方块某些参数可能会被禁用或者因为基础方块要求它们保持基础方块默认值而无法正常工作仅在你完全确定需要的情况下才使用此参数大多数方块应保持默认基础方块即不使用任何基础类型。为什么选择基础方块会禁用一批参数禁用逻辑的源码依据当你切换基础方块时BlockGUI.java 的blockBase下拉框监听器会立即执行一批字段禁用/重置操作。以下参数在选择了非默认基础方块后全部被禁用被禁用的参数原因渲染类型renderType渲染方式由基础方块几何结构决定不再允许自定义禁用偏移disableOffset偏移行为由基础方块自身的模型/状态逻辑接管边界盒boundingBoxList碰撞箱必须与基础方块的形状语义一致旋转模式rotationMode朝向/旋转由基础方块自带的状态属性如facing、half驱动是否可含水isWaterloggable是否含水由基础方块的状态属性waterlogged决定是否受重力hasGravity重力行为与基础方块类冲突选择后被强制设为关闭同时代码会执行一系列强制重置仅在新建非编辑模式下自动执行避免破坏已保存数据旋转模式复位为无、渲染类型复位为单纹理、含水与重力强制关闭、非碰撞方块关闭、推入反应reactionToPushing复位为NORMAL、可燃性关闭等。各基础类型的专属参数面板部分基础方块还带有专属参数卡片通过CardLayout动态切换见 BlockGUI.javaDoor / TrapDoor / PressurePlate / Button需要额外的blockSetType方块组类型可选OAK、STONE、IRON定义于 Block.java并标注了NonNullIf非空校验选中这些基础类型时必须提供FlowerPot花盆需要指定pottedPlant盆栽植物且自动关闭方块物品、把硬度/抗性归零、音效设为石头、推入反应设为DESTROYSign / HangingSign告示牌需要提供告示牌实体纹理signEntityTexture悬挂告示牌还需额外的 GUI 纹理signGUITexture并禁用物品栏hasInventoryLeaves树叶强制透明类型为SOLID、推入反应为DESTROY、可燃、加入装饰品创造模式标签并自动启用透明度Pane / Stairs / Slab强制透明类型分别为CUTOUT_MIPPED/ 相应默认值并设置对应创造模式标签。与非基础方块冲突的参数联动选择基础方块后部分与状态属性相关的参数会被隐藏或由基础方块接管。例如 BlockGUI.java 中的nonUserProvidedProperties()方法会把该基础类型的预置状态属性从用户可编辑列表中剔除——这些属性由基础方块强制提供用户无法修改其默认值。这正好印证了文档中参数被禁用或无法正常工作的说法它们被基础方块的默认状态值锁定。基础方块如何映射为原版方块类在代码生成阶段模板 block/block.java.ftl 中的getBlockClass函数把所选基础类型映射为具体继承类基础方块生成的继承类StairsStairBlockPaneIronBarsBlockSignStandingSignBlockHangingSignCeilingHangingSignBlock其余类型对应原版类名加Block如SlabBlock、DoorBlock、LeavesBlock…构造函数也会按类型分支传入不同的原版构造参数见 block.java.ftlStairssuper(Blocks.AIR.defaultBlockState(), ...)Door/TrapDoor/PressurePlatesuper(BlockSetType.XXX, ...)Buttonsuper(BlockSetType.XXX, 30 或 20, ...)OAK为 30 tick其余为 20 tickFenceGatesuper(WoodType.OAK, ...)FlowerPotsuper(() - (FlowerPotBlock) Blocks.FLOWER_POT, () - 盆栽方块, ...)并注册到原版花盆的addPlantSign/HangingSign传入自定义的WoodType。此外模板还会针对特定基础类型补充行为特性block.java.ftlFenceGate、PressurePlate、Fence、Wall、Sign、HangingSign添加.forceSolidOn()EndRod添加.forceSolidOff()Leaves添加.isSuffocating(→false)和.isViewBlocking(→false)模拟原版树叶的遮挡行为。基础方块与方块状态属性Block States的交互各基础类型的预置状态属性由生成器配置定义。在两个支持 NeoForge 的生成器中可以找到同一份映射表block.definition.yamlgenerator-1.21.1block.definition.yamlgenerator-26.3.x基础方块预置状态属性Stairsfacing, half, shape, waterloggedSlabtype, waterloggedFencenorth, south, west, east, waterloggedWallup, north, south, west, east, waterloggedLeavesdistance, persistent, waterloggedTrapDoorfacing, half, open, powered, waterloggedPanenorth, south, west, east, waterloggedDoorfacing, half, hinge, open, poweredFenceGatefacing, in_wall, open, poweredEndRodfacingPressurePlatepoweredButtonfacing, face, poweredSignfacing, rotation, waterlogged含站立与墙壁告示牌属性HangingSignattached, facing, rotation, waterlogged含天花板与墙壁悬挂告示牌属性这些属性在 UI 端由 BlockStatePropertyUtils.java 的getBlockBaseProperties()方法读取它直接从生成器的block_base_properties配置解析并缓存。选中基础方块后该列表中的属性会被视为非用户提供属性而移出可编辑区域从而保证与基础方块的行为一致。另外要注意选择基础方块会使自定义方块状态block states列表失效。数据模型中 Block.java 的supportsBlockStates()明确返回只有当blockBase为空时方块才支持自定义状态而 BlockGUI.java 也据此禁用状态编辑 UI。因此需要自定义状态属性如自定义facing之外的枚举时请保持默认基础方块。数据模型中的联动约束在 Block.java 中可以看到基础方块与其他字段的强约束关系blockSetType对 Door、TrapDoor、PressurePlate、Button 为必填pottedPlant对 FlowerPot 为必填signEntityTexture对 Sign、HangingSign 为必填signGUITexture对 HangingSign 为必填。这些约束通过NonNullIf注解实现保存时如果缺少必填字段会收到校验错误提示。基础方块还会影响其他行为逻辑renderType()Block.java除FlowerPot外任何基础方块都会把渲染类型强制返回-1即完全由基础方块类决定渲染isFullCube()Block.java所有基础类型都被判定为非完整立方体从而正确参与遮挡剔除与碰撞计算isDoubleBlock()Door被识别为双格方块Block.javagetDefaultDrop()FlowerPot的掉落物强制为盆栽植物Block.javaLeaves的掉落支持精准采集与剪刀Block.java。使用建议与最佳实践结合原文档告诫与源码实现可以总结出以下实践准则默认保持Default basic block绝大多数自定义方块装饰方块、矿石、自定义功能的方块并不需要继承原版基础类留空即可获得最大自由度——所有参数可用、支持自定义方块状态。仅在需要原版方块交互语义时选用例如制作自定义木材需要楼梯/台阶/栅栏配套或需要真正的门、压力板、按钮等红石交互行为时才选择对应基础类型。接受参数被接管的事实选择基础方块后渲染类型、旋转模式、边界盒、含水、重力等参数会被禁用或锁定为默认值——这是为保证基础方块状态属性正确性的必要代价不是软件缺陷。留意必填的附属字段选择 Door/TrapDoor/PressurePlate/Button 时记得配置 blockSetType选择 FlowerPot 时记得配置盆栽选择告示牌时记得准备实体纹理。避免叠加使用基础方块会占用预置状态属性如facing、waterlogged因此不能与自定义状态属性叠加需要自定义状态的方块必须放弃基础方块。小结MCreator 的基础方块参数是一把双刃剑它让你以极低成本复用原版方块类的完整行为红石、含水、碰撞、渲染但代价是让出一批参数的控制权并把状态属性锁定在基础方块的默认约定上。理解 block.definition.yaml 中的属性映射、block.java.ftl 中的类继承逻辑以及 BlockGUI.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点击查看免费下载相关推荐Gel/EdgeDB 数据模型属性Property完全指南类型、基数、约束、默认值与 DDL 操作Gel/EdgeDB 数据模型属性Property完全指南类型、基数、约束、默认值与 DDL 操作 属性property是 GelEdgeDB数据数据库图数据库关系型数据库MCreator 维度主填充方块Main Filler Block选型指南从默认值到世界生成性能优化MCreator 维度主填充方块Main Filler Block选型指南从默认值到世界生成性能优化 导读 本文聚焦 MCreator 维度编辑器中的「主低代码代码生成桌面应用游戏开发TypeScript 泛型Generics完全指南从类型变量到约束与默认值TypeScript 泛型Generics完全指南从类型变量到约束与默认值 导读 本文以 TypeScript 使用手册中文版v2 手册的「类型操纵」文档教程上一篇如何用开源神器一键修复Windows运行库问题下一篇5步快速掌握OpenRocket免费开源火箭仿真软件从安装到实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。