文档托管解决方案

10.方块(一)

前言

前面 4 期,我们已经学完了有关物品的知识。这次,我们就来学习如何添加一个方块。这是一个很复杂的内容,它的难度比物品要大得多。
然而,如果只需要一个简单的方块,那么方块和物品就大同小异了。接下来,我们将花若干期的时间学习关于方块的所有内容。

准备

学习方块是一个由简到难的过程。
在行为包根目录下打开 blocks 文件夹,新建一个文件。命名就是你的方块的英文名,这样比较好管理。
你也可以新建一个文件夹,把它命名英文名,把所有相关的文件都放进去,方便管理。

方块的文档结构和物品大同小异,具体格式见下。

但方块的命名分化十分严重:

  • 你可能看到 minecraft:aim_collisionminecraft:selection_boxminecraft:pick_collision
  • 其实这三个作用相同,都是指定方块的判定框。
  • 区别是它们出现在不同版本:

    • minecraft:pick_collision → 1.17.0
    • minecraft:aim_collision → 1.18.0
    • minecraft:selection_box → 1.19.40

再如:

  • minecraft:destroy_time 是旧版本写法(1.16.100)
  • minecraft:destructible_by_mining 是新版本写法(1.19.40)

所以命名确实很混乱。
我在这篇文档里一律采用 1.21.0 版本格式。

注意: 格式版本控制着方块能访问哪些特性,建议始终保持最新。

第一个方块

现在就可以开始了。在你新建的文件里写以下代码:


点击展开代码

{
  "format_version": "1.21.0",
  "minecraft:block": {
    "description": {
      "identifier": "namespace:identifier",
      "menu_category": {
        "category": "items",
        "group": "",
        "is_hidden_in_commands": false
      }
    },
    "components": {
      "minecraft:loot": "loot_tables/example_block_loot.json",
      "minecraft:friction": 0.4,
      "minecraft:map_color": "#00ff00"
    }
  }
}

上面是一个基础方块的结构。
如果你想让方块有更丰富功能,就要用更多组件。
如果你想让它在某些情形下响应,就要用“触发器组件”。

渲染

这一期我们还要给方块添加纹理。
最常见的方法是在资源包根目录的 blocks.json 中添加如下内容:

{
  "方块ID": {
    "textures": "起一个短名",
    "sound": "amethyst"
  }
}

然后打开 textures/terrain_texture.json 文件,加入以下内容:


点击展开代码

{
  "texture_data": {
    "这里写之前起的短名": {
      "textures": "textures/blocks/test"
    }
  }
}

接着:

  • textures 文件夹中新建 blocks 文件夹
  • 放入一张正方形图片,命名为你指定的短名(例如 test.png

建议图片为 .png 格式,兼容性最好。
优先级为 .tga > .png > .jpg.

最后,为了让游戏内名字显示正常:

  • 打开资源包的 texts/zh_CN.lang
  • 添加:
tile.命名空间ID.name=方块名字

注意不能换行,也不能使用 \ 进行转义。

打开游戏,你应该可以在物品栏看到你的方块了。
::: info 注意
如果纹理有透明区域,游戏中可能会变黑或失真。这个我们将在下一期学习如何解决

:::

总结

下一期我们将开始讲解方块组件。
与物品组件不同,我会按照类别讲解,比如:

  • 渲染相关组件
  • 碰撞箱组件

如果你有点跟不上,我会提供模板包,照着修改就可以啦!

📎 附件:点击下载模板包

上一篇
下一篇
目录导航

更多文档