# 挑战:制作一个发光地灯

在本节中,我们完成一个挑战,制作一个发光地灯。可点击方块模型资源 (opens new window)链接将模型资源下载到本地,地灯方块模型在压缩包内的bbmodel文件夹里。

# 准备模型

我们在Blockbench中绘制一个发光地灯模型。

我们使用编辑器中的导入方块模型的功能导入该模型。

# 创建并修改配置

我们创建一个方块配置,然后通过在“基础属性”中添加modelsound的方式加入其地灯的模型和玻璃的声音。在“行为包组件”中重点设置“亮度”为大于0的值,“吸光度”为0,“渲染材质”为“全透明”。如果设置了非零吸光度,则地灯将不能完全发出亮度等价的光,而渲染材质如果没有设置为透明,将出现黑色的阴影。

我们同时展示对应的JSON文件。行为包定义文件:

{
  "format_version": "1.10.0",
  "minecraft:block": {
    "description": {
      "identifier": "design:lamp",
      "register_to_creative_menu": true
    },
    "components": {
      "minecraft:block_light_absorption": {
        "value": 0
      },
      "minecraft:block_light_emission": {
        "emission": 1.0
      },
      "minecraft:destroy_time": {
        "value": 0.0
      },
      "minecraft:map_color": {
        "color": "#ffffff"
      },
      "netease:render_layer": {
        "value": "alpha"
      },
      "netease:tier": {
        "destroy_special": false,
        "digger": "pickaxe",
        "level": 0
      }
    }
  }
}

资源包定义文件:

{
  "format_version": [1, 1, 0],
  "design:lamp": {
    "netease_model": "design:lamp",
    "sound": "glass"
  }
}

纹理图集文件:

{
  "resource_pack_name": "vanilla",
  "texture_name": "atlas.terrain",
  "texture_data": {
    "design:lamp": {
      "textures": "textures/blocks/design/lamp"
    }
  }
}

方块模型几何:

{
  "format_version": "1.13.0",
  "netease:block_geometry": {
    "description": {
      "identifier": "design:lamp",
      "textures": ["design:lamp"],
      "use_ao": false
    },
    "bones": [{
      "name": "bone",
      "pivot": [0, 0, 0],
      "rotation": [0, 0, 0],
      "cubes": [{
        "origin": [-12.5, 1.5, 3.5],
        "pivot": [0, 0, 0],
        "rotation": [0, 0, 0],
        "size": [9, 11, 9],
        "uv": {
          "down": {
            "texture": 0,
            "uv": [5.75, 6.25],
            "uv_size": [-2.25, 2.25]
          },
          "east": {
            "texture": 0,
            "uv": [3.5, 0],
            "uv_size": [2.25, 2.75]
          },
          "north": {
            "texture": 0,
            "uv": [3.5, 3.5],
            "uv_size": [2.25, 2.75]
          },
          "south": {
            "texture": 0,
            "uv": [5.75, 5.75],
            "uv_size": [2.25, 2.75]
          },
          "up": {
            "texture": 0,
            "uv": [5.75, 2.75],
            "uv_size": [2.25, 2.25]
          },
          "west": {
            "texture": 0,
            "uv": [5.75, 0],
            "uv_size": [2.25, 2.75]
          }
        }
      }, {
        "origin": [-12, 2, 4],
        "pivot": [0, 0, 0],
        "rotation": [0, 0, 0],
        "size": [8, 10, 8],
        "uv": {
          "down": {
            "texture": 0,
            "uv": [4, 8.5],
            "uv_size": [-2, 2]
          },
          "east": {
            "texture": 0,
            "uv": [8, 8],
            "uv_size": [2, 2.5]
          },
          "north": {
            "texture": 0,
            "uv": [0, 7],
            "uv_size": [2, 2.5]
          },
          "south": {
            "texture": 0,
            "uv": [8, 0],
            "uv_size": [2, 2.5]
          },
          "up": {
            "texture": 0,
            "uv": [8, 5],
            "uv_size": [2, 2]
          },
          "west": {
            "texture": 0,
            "uv": [8, 2.5],
            "uv_size": [2, 2.5]
          }
        }
      }, {
        "origin": [-15, 0, 1],
        "pivot": [0, 0, 0],
        "rotation": [0, 0, 0],
        "size": [14, 2, 14],
        "uv": {
          "down": {
            "texture": 0,
            "uv": [3.5, 3.5],
            "uv_size": [-3.5, 3.5]
          },
          "east": {
            "texture": 0,
            "uv": [8, 7.5],
            "uv_size": [3.5, 0.5]
          },
          "north": {
            "texture": 0,
            "uv": [8, 7],
            "uv_size": [3.5, 0.5]
          },
          "south": {
            "texture": 0,
            "uv": [4, 8.5],
            "uv_size": [3.5, 0.5]
          },
          "up": {
            "texture": 0,
            "uv": [0, 0],
            "uv_size": [3.5, 3.5]
          },
          "west": {
            "texture": 0,
            "uv": [4, 9],
            "uv_size": [3.5, 0.5]
          }
        }
      }]
    }]
  }
}

语言本地化文件zh_CN.lang

tile.design:lamp.name=地灯

我们进入游戏查看效果。

可以看到,地灯的模型与预期一致,而且如期发出了最高亮度的光。