1. Wiki
  2. /方块
  3. /你的第一个自定义方块

你的第一个自定义方块

一步步为 Minecraft Bedrock 制作一个会发光的红宝石方块:方块文件、纹理、声音、名称和战利品。

在本指南中,你将制作一个红宝石方块:一个微微发光的闪亮红色方块,需要挖一会儿,破坏后会掉落它自己。这是制作方块的“Hello World”,再复杂的方块也是从这里起步的。

有两种做法。快捷方式在手机上几分钟就能搞定;手动方式则能让你弄懂每个文件的作用。

快捷方式:GodCraft

GodCraft 会帮你生成方块、纹理、名称和战利品。你完全不用碰 JSON 文件。

  1. 打开工坊,在你的附加包中添加一个方块。
  2. 在像素编辑器中绘制各个面,或者从原版纹理开始重新上色。
  3. 设置挖掘所需时间、发光亮度以及掉落物。
  4. 点击导出。GodCraft 会写好清单文件、UUID 和语言文件,并生成一个 .mcaddon。

想知道背后发生了什么?继续往下看。

手动制作

你需要一个已经搭建好的行为包(BP)和资源包(RP)。如果还没有,请先按照项目搭建操作。我们使用命名空间 myname,请在所有地方把它换成你自己的简称。

下面是你会用到的全部文件:

文件包作用
blocks/ruby_block.jsonBP方块是什么、有什么行为
loot_tables/blocks/ruby_block.jsonBP掉落什么
textures/blocks/ruby_block.pngRP图片
textures/terrain_texture.jsonRP给图片起简称
blocks.jsonRP方块发出的声音
texts/en_US.langRP玩家看到的名称

第 1 步:方块文件

在行为包中创建这个文件:

BP/blocks/ruby_block.json
{
  "format_version": "1.26.50",
  "minecraft:block": {
    "description": {
      "identifier": "myname:ruby_block",
      "menu_category": {
        "category": "construction"
      }
    },
    "components": {
      "minecraft:destructible_by_mining": {
        "seconds_to_destroy": 3
      },
      "minecraft:destructible_by_explosion": {
        "explosion_resistance": 6
      },
      "minecraft:friction": 0.4,
      "minecraft:light_emission": 4,
      "minecraft:map_color": "#9b1c2b",
      "minecraft:geometry": "minecraft:geometry.full_block",
      "minecraft:material_instances": {
        "*": {
          "texture": "ruby_block",
          "render_method": "opaque"
        }
      },
      "minecraft:loot": "loot_tables/blocks/ruby_block.json"
    }
  }
}

description 部分说明方块是谁:

  • identifier 是方块的 ID,由你的命名空间和名字组成。你会在 /give @s myname:ruby_block 这样的命令中输入它。
  • menu_category 选择创造模式物品栏的标签页。可选值有 construction、nature、equipment、items 和 none(隐藏)。

components 部分说明它如何表现:

不同的面

想让顶面和侧面不一样,像草方块那样?在 material_instances 中的 * 旁边再加几个键,比如 up、down、north、south、east 和 west。没有列出的面会使用 *。

第 2 步:纹理

画一张 16x16 像素的 PNG,在资源包中保存为 RP/textures/blocks/ruby_block.png。

第一次接触像素画?像素纹理指南讲解了尺寸、透明度和明暗处理。

第 3 步:给纹理起个简称

方块不会直接指向 PNG 文件,而是使用 terrain_texture.json 中的简称。如果你的包里已经有这个文件,就在 texture_data 中添加 ruby_block 条目;如果没有,就创建它:

RP/textures/terrain_texture.json
{
  "resource_pack_name": "myname",
  "texture_name": "atlas.terrain",
  "texture_data": {
    "ruby_block": {
      "textures": "textures/blocks/ruby_block"
    }
  }
}

注意路径末尾没有 .png。游戏会自己找到文件。

第 4 步:声音

资源包的 blocks.json 告诉游戏,在方块上行走、放置或破坏方块时播放哪套声音:

RP/blocks.json
{
  "format_version": "1.21.40",
  "myname:ruby_block": {
    "sound": "stone"
  }
}

原版方块常用的其他声音组还有 wood、glass、metal、grass、sand、cloth、copper 和 deepslate。

第 5 步:名称

没有名称时,游戏会显示类似 tile.myname:ruby_block.name 的文字。在语言文件中加入这一行:

RP/texts/en_US.lang
tile.myname:ruby_block.name=Ruby Block

第 6 步:战利品

战利品表决定掉落什么。这个表会掉落方块本身,一次一个:

BP/loot_tables/blocks/ruby_block.json
{
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "item",
          "name": "myname:ruby_block"
        }
      ]
    }
  ]
}

把 name 改成任意物品 ID,比如 minecraft:diamond,方块就会掉落别的东西。

测试你的方块

  1. 按照导出与安装导出并安装两个包,然后在世界中启用它们。
  2. 打开创造模式物品栏,在建筑标签页中查找,或者运行 /give @s myname:ruby_block。参见 /give。
  3. 在夜里放下它:它应该会发出柔和的光。
  4. 切换到生存模式挖掉它。应该需要几秒钟,并掉落它自己。

常见问题

紫黑格子

游戏找不到纹理。检查 material_instances 中的简称是否和 terrain_texture.json 中的键完全一致,以及 terrain_texture.json 中的路径是否和文件的实际位置一致(不带 .png)。

  • 物品栏里没有这个方块。 检查 menu_category 不是 none,并且行为包已启用。
  • 方块名称很奇怪。 .lang 中的那一行必须使用包含命名空间的完整 ID。
  • 方块什么都不掉。 检查 minecraft:loot 的路径是否以 loot_tables/ 开头,并且和文件名一致。

更多解决方法见故障排查。

下一步

We use cookies to improve your experience and analyse site traffic. Learn more