mc.js.cooi库支持五类方块:基础材质类(如grass、stone)、扩展结构类(如planks、glass)、自定义模型类(需gltf 2.0)、空气与占位类(如air、dummy)及微缩尺寸类(通过micro_size参数)。

如果您在使用 mc.js.cooi 库进行 3D 方块开发时,发现可选方块类型有限或无法确认支持列表,则可能是由于库内置方块标识符未被完整查阅。以下是 mc.js.cooi 当前版本中明确可用的方块类型及其配置方式:
一、基础材质类方块
该类方块直接通过字符串标识调用 createBlock() 方法生成,无需额外资源加载,渲染依赖库内建纹理映射。
1、调用 createBlock('grass') 创建草方块,其顶部为泥土加草皮纹理,侧面为泥土色,底部不可见。
2、调用 createBlock('stone') 创建原石方块,表面呈现灰白色颗粒状纹理,符合 Java 版原版视觉风格。
3、调用 createBlock('sand') 创建沙子方块,呈浅黄色松散颗粒感,具备轻量物理示意(不模拟重力,仅外观)。
4、调用 createBlock('cobblestone') 创建圆石方块,深灰色带凹凸棱角,常用于地基与粗犷结构。
5、调用 createBlock('obsidian') 创建黑曜石方块,纯黑色高反光表面,渲染时启用镜面反射模拟。
二、扩展结构类方块
该类方块需配合特定参数启用,部分需手动设置材质路径或启用高级渲染模式,否则将回退至默认灰盒模型。
1、调用 createBlock('planks', { type: 'oak' }) 创建橡木木板,type 参数支持 'oak'、'spruce'、'birch'、'jungle'、'acacia'、'dark_oak' 六种。
2、调用 createBlock('glass') 创建透明玻璃方块,自动启用 alpha 混合通道,允许穿透观察后方场景。
3、调用 createBlock('torch') 创建火把方块,内置动态发光效果,光源强度固定为 14 级亮度值。
4、调用 createBlock('water') 创建水方块,启用流体动画纹理循环,帧率锁定为 20fps 模拟波动。
5、调用 createBlock('lava') 创建岩浆方块,使用橙红渐变+脉动辉光,温度视觉反馈明显。
三、自定义模型接入方块
该类方块不预置于库中,但可通过外部 JSON 模型文件注入,要求模型格式兼容 glTF 2.0 基础规范,并绑定至唯一 identifier。
1、准备一个符合 Blockbench 导出标准的 .glb 文件,命名为 block_custom_001.glb。
2、将该文件置于项目 static/models/ 目录下,并确保路径可被 fetch 请求访问。
3、执行 createBlock('custom', { model: '/static/models/block_custom_001.glb' }) 加载模型。
4、加载成功后,该方块将按模型原始尺寸缩放至 1×1×1 米单位空间,UV 与法线自动校正。
5、若模型含多材质,请确保所有纹理文件同目录部署,且路径在 .glb 内部引用有效。
四、空气与占位类方块
该类方块用于逻辑占位或环境补全,无实体碰撞体积,但参与场景图层级管理与光照计算。
1、调用 createBlock('air') 创建空气方块,完全透明且不可交互,Z 缓冲写入被禁用。
2、调用 createBlock('cave_air') 创建洞穴空气,与 air 行为一致,但可在调试模式下以淡蓝色半透明框显示边界。
3、调用 createBlock('void_air') 创建虚空空气,仅在超远距离裁剪区启用,用于防止渲染器空指针异常。
4、调用 createBlock('invisible') 创建不可见占位方块,保留变换矩阵与子对象挂载能力,但不提交任何几何数据至 GPU。
5、调用 createBlock('dummy') 创建哑元方块,无渲染输出,仅用于事件监听锚点或坐标系参考。
五、微缩尺寸方块支持
mc.js.cooi 支持通过 micro_size 参数声明非标准尺寸,最小粒度为 1/4 格(0.25 米),需显式传入三维整数数组。
1、调用 createBlock('grass', { micro_size: [1, 1, 2] }) 创建 1×1×2 尺寸草方块,高度为常规方块两倍。
2、调用 createBlock('stone', { micro_size: [2, 2, 1] }) 创建 2×2×1 尺寸石块,覆盖地面两格区域。
3、调用 createBlock('glass', { micro_size: [1, 2, 1] }) 创建竖直细条玻璃,适用于栅栏式分隔结构。
4、调用 createBlock('torch', { micro_size: [1, 1, 1], scale: 0.5 }) 创建迷你火把,scale 参数优先级高于 micro_size。
5、micro_size 各维度最大值为 4,超出部分将被截断为 4;负值或零将触发控制台警告并回退至 [1,1,1]










