同步官网文档8m_25d
0
mconline/10-addon教程/第09章:自定义方块/README.md
Normal file
BIN
mconline/10-addon教程/第09章:自定义方块/images/1_1.jpg
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/1_2.jpg
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/1_3.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/1_4.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/2_1.jpg
Normal file
|
After Width: | Height: | Size: 251 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/2_2.jpg
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/2_3.jpg
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/4_1.jpg
Normal file
|
After Width: | Height: | Size: 196 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/4_2.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/5_1.jpg
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
mconline/10-addon教程/第09章:自定义方块/images/5_2.jpg
Normal file
|
After Width: | Height: | Size: 246 KiB |
89
mconline/10-addon教程/第09章:自定义方块/课程01.认识自定义方块.md
Normal file
@@ -0,0 +1,89 @@
|
||||
---
|
||||
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/1_1.43173d4d.jpg
|
||||
hard: 进阶
|
||||
time: 15分钟
|
||||
---
|
||||
|
||||
# 认识自定义方块
|
||||
|
||||
|
||||
|
||||
#### 作者:境界
|
||||
|
||||
|
||||
|
||||
方块是我的世界中元素构成的基本单位。大到地表、群系、植被,小到工作台、机器、篝火,全部都是以方块的形式去演绎。自定义方块为开发者提供了一条更方便的途径管道来定制内容玩法。诚然,当前自定义方块内容只提供了部分功能,并不是所有原版方块的细节都可以通过自定义方块来实现的。请期待在接下来的更新,由中国版和基岩版团队提供更加多元的方案吧!本章节将会阐述,自定义方块现在能够做到什么。
|
||||
|
||||
|
||||
|
||||
#### 自定义方块组件
|
||||
|
||||
目前自定义方块支持使用基岩版1.16.10提供的原版方块组件功能和中国版提供的额外方块组件功能。我们可以使用文本编辑器或者MCSTUDIO来进行制作。
|
||||
|
||||
|
||||
|
||||
#### MCSTUDIO
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
1)进入关卡编辑器,右键组件面板,创建方块组件。可以通过右边“+”号增加多个自定义方块。然后再点击右边的解锁按钮,在编辑器页面上左键放置自定义方块,按ESC退出放置模式。注意:每当开发者修改了自定义方块信息,需根据提示弹窗重新加载世界,更改后的信息才会生效。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
2)当前编辑器支持自定义方块的组件内容为:
|
||||
|
||||
#### 游戏内名称:
|
||||
|
||||
修改方块物品显示在物品栏里的名称。
|
||||
|
||||
#### 自定义方块ID:
|
||||
|
||||
是该方块在游戏内的唯一性名称,必须只能带有英文和下划线。为了避免与其他模组、原版方块产生ID冲突,我们应当使用模组名称+下划线+方块名称的方式命名最为保险。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 在创造物品栏显示:
|
||||
|
||||
勾选选项会将方块注册到construction栏,即建筑方块分页下的创造物品栏内。
|
||||
|
||||
#### 方块类型:
|
||||
|
||||
当前可选的有普通、传送门、刷怪箱三种。
|
||||
|
||||
#### 渲染属性:
|
||||
|
||||
渲染属性下的四个组件功能分别是吸光度(可理解为透光度,值越大,则越不透光)、亮度(可理解为发光,值在0.0~1.0之间,值越大,在夜晚发光程度越大)、渲染材质(由方块贴图纹理决定,若贴图内带有透明图层,则选择透明材质,若有半透明图层,则选择半透明材质,否则选择不透明材质)、地图颜色(方块在地图里显示的颜色)。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 模型与贴图:
|
||||
|
||||
模型有两种类型,一种是简单立方体,即占据世界内一格高、一格宽、一格长的方块模型,默认情况下不需要指定方块模型;一种是自定义方块模型,需要开发者提供自定义方块模型文件。选择简单立方体时,若勾选上侧面使用同种贴图的话,开发者只需提供存放在资源管理器内,textures文件夹下的blocks文件夹内的上面、侧面、底面三类贴图纹理文件,若取消勾选,则可以指定方块的上下左右前后面,总共达6面的贴图。贴图随机纹理会帮助方块在游戏内被放置后,随机旋转设定好的那一面的贴图,在原版世界中使用到这个功能的方块有树叶、泥土、草方块等,随机旋转会在合适的条件下给玩家带来更好的视觉效果,而不容易产生审美疲劳。
|
||||
|
||||
#### 声音:
|
||||
|
||||
指方块的音效,包括生物踩在上面和破坏时的音效,方块音效属于硬编码的范畴,当前无法自定义方块音效,所以我们必须使用原版的方块音效。
|
||||
|
||||
#### 挖掘属性:
|
||||
|
||||
硬度决定了方块的破坏时间,硬度越大,方块需要挖掘的时间也越久,而高效挖掘工具可以设置成原版的镐、锄、斧、铲四种类型,同时支持这四种类型的自定义物品工具。限定工具等级掉落会影响方块是否掉落,它会添加一格工具等级的条件,高于工具等级才能挖掘后掉落方块掉落物。掉落可以指向组件面板建立的掉落物表。是否实心则会影响该方块是否会窒息生物,以及使用自定义方块模型时,取消一些难看的阴影。寻路时被当作障碍物选项,勾选时则会被生物当作是障碍物跳到上方走动,不勾选则会当作空气方块无视其存在来移动。
|
||||
|
||||
#### 形状:
|
||||
|
||||
面向决定方块是否是四面向或者六面向方块,设置为四面向方块,根据玩家放置的四个不同角度(东西南北)来改变方块朝向,六面向则多了上和下两个面。
|
||||
|
||||
实体碰撞箱会检测实体的体积是否与方块体积重叠,一般情况下实体会被挡在方块碰撞箱之外,若实体碰撞箱和实体重叠,有可能造成窒息伤害!
|
||||
|
||||
射线碰撞箱会检测玩家的视线是否与方块体积重叠,例如,绝大多数的方块的射线碰撞箱都是一个格子,因此当视线移动到格子之内时,这个方块就能够被挖掉!
|
||||
|
||||
#### 方块实体:
|
||||
|
||||
打开后可以让自定义方块保存复杂数据结构的功能。
|
||||
45
mconline/10-addon教程/第09章:自定义方块/课程02.制作方块的特殊模型.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/2_1.54b5ffe9.jpg
|
||||
hard: 进阶
|
||||
time: 10分钟
|
||||
---
|
||||
|
||||
# 制作方块的特殊模型
|
||||
|
||||
|
||||
|
||||
#### 作者:境界
|
||||
|
||||
|
||||
|
||||
在制作方块模型前,首先要新建工程。但是必须提前告知的是,中国版的方块模型文件与原版的模型文件中的部分键对格式稍有出入,开发者可以在中国版开发者文档中自行比较。为了方便开发者,开花组团队通过Blockbench的自由模型格式开发了转化器,我们可以通过McStudio的特效编辑器下的资源管理面板,直接转化自由模型的工程文件为自定义方块模型文件,十分的方便。
|
||||
|
||||
|
||||
|
||||
#### BlockBench的工程选择
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
1)打开Blockbench,从新建栏目下选择自由模型。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
2)项目中的文件名和模型ID指定好后,不勾选BoxUV,并将贴图宽度改为16x16。
|
||||
|
||||
3)进入项目后可以看到坐标系和网格,N方向即朝北方向。需要注意的是,从示例图可以看到红蓝线,它们的交点是方块的左上角。因此,方块模型需要从这里开始,向右下角伸展,进行素材搭建,而不是在网格范围内搭建。虽然这与正常的建模思维会有一定冲突,但是开发者也可以选择先在网格中央建好方块模型后,再往右下角移动即可。同样的,与建模自定义生物模型一样,网格长宽都有16格,16格在世界中代表一格方块格子。
|
||||
|
||||
4)每个立方体最后都会被骨骼包裹,这是建造我的世界模型的基本概念,与自定义生物模型无差。不过,由于目前自定义方块模型尚未支持动画,因此所有的骨骼锚点都需要设置在坐标0,0,0的位置上,否则对方块骨骼进行旋转时,可能会遇到预览效果与游戏中实际效果有偏差的情况!与此同时,方块模型中的立方体和骨骼都不支持膨胀功能,遇到立方块面重叠的问题时,当前只能通过移动立方体或者挤压/放大立方体大小来解决!
|
||||
|
||||
|
||||
|
||||
#### 方块模型的贴图规范
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
与生物模型的UV展开图方式不同的是,我们建议开发者建模自定义方块时取消生物模型的Box UV,转而使用以设置每一个方块面东、西、南、北、上、下的方式,并且贴图格式大小设置为16x16。如果遇到一张分辨率在16x16的纹理画布上无法满足开发者对模型的细节要求,可以在工程里再次新建一张16x16的贴图,这样的建模限制是为了引导开发者积极优化方块模型的资源消耗,毕竟玩家的硬件资源是有限的。
|
||||
166
mconline/10-addon教程/第09章:自定义方块/课程03.自定义特殊方块.md
Normal file
@@ -0,0 +1,166 @@
|
||||
---
|
||||
front:
|
||||
hard: 进阶
|
||||
time: 15分钟
|
||||
---
|
||||
|
||||
# 自定义特殊方块
|
||||
|
||||
|
||||
|
||||
#### 作者:境界
|
||||
|
||||
|
||||
|
||||
原版的部分方块具有特殊功能,开花组为开发者提供了方块继承的形式来继承这些特殊方块的能力,本章将教给开发者如何自定义红石元件方块和刷怪箱方块。由于McStudio当前尚不支持完整自定义这两种特殊方块的功能,这里会使用JSON语法来演示。
|
||||
|
||||
|
||||
|
||||
#### 自定义红石元件方块
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": "1.16.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "design:redstone_consumer"
|
||||
},
|
||||
"components": {
|
||||
"minecraft:destroy_time": 2.0,
|
||||
"minecraft:map_color": "#ffffff",
|
||||
"netease:tier": {
|
||||
"digger": "pickaxe",
|
||||
"level": 0
|
||||
},
|
||||
"netease:redstone": {
|
||||
"type": "consumer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
1)1.16.0是当前下界更新的自定义方块内容格式,所以我们在format_version里填1.16.0
|
||||
|
||||
2)identifier是自定义方块的名称域,这里可以由开发者自己定义。
|
||||
|
||||
3)components下的参数会储存方块的各项功能。主要来看netease:redstone组件,它可以传入两种类型,这里我们传入consumer,这样该方块即可接收红石信号,成为红石元件方块。
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"design:redstone_producer": {
|
||||
"textures": "gold_block",
|
||||
"sound": "metal"
|
||||
},
|
||||
"design:redstone_consumer": {
|
||||
"textures": "gold_block",
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
4)最后,还应在blocks.json下进行如下配置,示例图中将方块贴图设置为金方块贴图,则6个面都是金方块面,走在该方块上和破坏方块时产生的音效类型是金属音效。
|
||||
|
||||
|
||||
|
||||
#### 自定义红石信号源方块
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": "1.16.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "design:redstone_producer"
|
||||
},
|
||||
"components": {
|
||||
"minecraft:destroy_time": 2.0,
|
||||
"minecraft:map_color": "#ffffff",
|
||||
"netease:tier": {
|
||||
"digger": "pickaxe",
|
||||
"level": 0
|
||||
},
|
||||
"netease:redstone": {
|
||||
"type": "producer",
|
||||
"strength": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
1)1.16.0是当前下界更新的自定义方块内容格式,所以我们在format_version里填1.16.0
|
||||
|
||||
2)identifier是自定义方块的名称域,这里可以由开发者自己定义。
|
||||
|
||||
3)components下的参数会储存方块的各项功能。主要来看netease:redstone组件,它可以传入两种类型,这里我们传入producer,这样该方块即可接发送红石信号,strength掌管红石信号的强度,即信号每传递一格,强度会降低1点。
|
||||
|
||||
4)最后,还应在blocks.json下进行如下配置,示例图中将方块贴图设置为金方块贴图,则6个面都是金方块面,走在该方块上和破坏方块时产生的音效类型是金属音效。
|
||||
|
||||
|
||||
|
||||
#### 自定义刷怪箱方块
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": "1.16.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "design:chicken_mob_spawner",
|
||||
"base_block": "mob_spawner"
|
||||
},
|
||||
"components": {
|
||||
"minecraft:block_light_absorption": 0,
|
||||
"netease:tier": {
|
||||
"digger": "pickaxe",
|
||||
"level": 0
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"netease:mob_spawner": {
|
||||
"type": "minecraft:chicken"
|
||||
},
|
||||
"minecraft:block_light_emission": 1.0,
|
||||
"minecraft:destroy_time": 2.0,
|
||||
"minecraft:map_color": "#ffffff"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
1)1.16.0是当前下界更新的自定义方块内容格式,所以我们在format_version里填1.16.0
|
||||
|
||||
2)identifier是自定义方块的名称域,这里可以由开发者自己定义。在这里还要额外指定base_block键对,将方块继承刷怪箱即"mob_spawner"。
|
||||
|
||||
3)components下的参数会储存方块的各项功能。主要来看netease:mob_spawner组件,它里面的键类型会指向一种生物名称域,该组件功能同时支持自定义生物和MC原版生物。
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"design:chicken_mob_spawner": {
|
||||
"textures": "mob_spawner",
|
||||
"sound": "metal"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
4)最后,还应在blocks.json下进行如下配置,示例图中将方块贴图设置为原版刷怪箱贴图。则6个面都是刷怪箱子贴图,走在该方块上和破坏方块时产生的音效类型是金属音效。
|
||||
100
mconline/10-addon教程/第09章:自定义方块/课程04.简易教学①-制作会发光的地灯.md
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/4_1.fd4b17c4.jpg
|
||||
hard: 进阶
|
||||
time: 15分钟
|
||||
---
|
||||
|
||||
# 简易教学①:制作会发光的地灯
|
||||
|
||||
|
||||
|
||||
#### 作者:境界
|
||||
|
||||
|
||||
|
||||
#### 自定义方块行为包
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": "1.16.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "design:lamp"
|
||||
},
|
||||
"components": {
|
||||
"minecraft:block_light_absorption": 0,
|
||||
"netease:tier": {
|
||||
"digger": "pickaxe",
|
||||
"level": 0
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:block_light_emission": 1.0,
|
||||
"minecraft:destroy_time": 2.0,
|
||||
"minecraft:map_color": "#ffffff"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
1)1.16.0是当前下界更新的自定义方块内容格式,所以我们在format_version里填1.16.0
|
||||
|
||||
2)identifier是自定义方块的名称域,这里可以由开发者自己定义。
|
||||
|
||||
3)components下的参数会储存方块的各项功能。
|
||||
|
||||
-将透光度调为0,减少环境光的影响。
|
||||
|
||||
-将该方块设置为被木镐以上等级的镐子挖掘有速度加成。
|
||||
|
||||
-由于使用了带有透明图层的贴图,将该方块的渲染材质设置为透明。
|
||||
|
||||
-将发光度设置为1.0,即发最强的光。
|
||||
|
||||
-将方块破摔时间设置为2.0
|
||||
|
||||
-自定义方块在地图上显示的颜色,这里可以由开发者自己定义。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 自定义方块资源包
|
||||
|
||||
1)在resourcepack/blocks.json中,添加该方块的名称域与模型资源名称,名称来自resourcepack/models/netease_block/内的模型文件里的名称域。将走在方块上和破坏方块的音效设置为玻璃音效。
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"design:lamp": {
|
||||
"netease_model": "design:lamp",
|
||||
"sound": "glass"
|
||||
}
|
||||
}
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
"netease:block_geometry": {
|
||||
"bones": [
|
||||
…
|
||||
],
|
||||
"description": {
|
||||
"identifier": "design:lamp",
|
||||
"textures": [
|
||||
"design:lamp"
|
||||
],
|
||||
"use_ao": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 实际游戏效果
|
||||
|
||||

|
||||
107
mconline/10-addon教程/第09章:自定义方块/课程05.简易教学②-制作一个百宝箱.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/5_1.ca4249e1.jpg
|
||||
hard: 进阶
|
||||
time: 15分钟
|
||||
---
|
||||
|
||||
# 简易教学②:制作一个百宝箱
|
||||
|
||||
|
||||
|
||||
#### 作者:境界
|
||||
|
||||
|
||||
|
||||
百宝箱示例包下载:下载[示例包](https://g79.gdl.netease.com/guidedemo-case9.zip)。
|
||||
|
||||
#### 自定义方块行为包
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": "1.16.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "design:treasure_chest"
|
||||
},
|
||||
"components": {
|
||||
"minecraft:block_light_absorption": 0,
|
||||
"netease:tier": {
|
||||
"digger": "pickaxe",
|
||||
"level": 0
|
||||
},
|
||||
"netease:face_directional": {
|
||||
"type": "direction"
|
||||
},
|
||||
"minecraft:block_light_emission": 0.0,
|
||||
"minecraft:destroy_time": 2.0,
|
||||
"minecraft:loot": "loot_tables/design_treasure_chest.json",
|
||||
"minecraft:map_color": "#ffffff"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
1)1.16.0是当前下界更新的自定义方块内容格式,所以我们在format_version里填1.16.0
|
||||
|
||||
2)identifier是自定义方块的名称域,这里可以由开发者自己定义。
|
||||
|
||||
3)components下的参数会储存方块的各项功能。
|
||||
|
||||
-将透光度调为0,减少环境光的影响。
|
||||
|
||||
-将该方块设置为被木镐以上等级的镐子挖掘有速度加成。
|
||||
|
||||
-将该方块设置为四面向方块,因为我们希望玩家放置时,正面始终朝向玩家。
|
||||
|
||||
-将发光度设置为0,即不发光,该组件也可以省略。
|
||||
|
||||
-将方块破摔时间设置为2.0
|
||||
|
||||
-自定义一个战利品表,将路径设置到该战利品表上,战利品表内会放置一种组合,破坏宝箱时会掉落一组金锭。
|
||||
|
||||
-自定义方块在地图上显示的颜色,这里可以由开发者自己定义。
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
#### 自定义方块资源包
|
||||
|
||||
1)在resourcepack/blocks.json中,添加该方块的名称域与模型资源名称,名称来自resourcepack/models/netease_block/内的模型文件里的名称域。将走在方块上和破坏方块的音效设置为木头音效。
|
||||
|
||||
```
|
||||
{
|
||||
"format_version": [
|
||||
1,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"design:treasure_chest": {
|
||||
"netease_model": "design:treasure_chest",
|
||||
"sound": "wood"
|
||||
}
|
||||
}
|
||||
{
|
||||
"format_version": "1.13.0",
|
||||
"netease:block_geometry": {
|
||||
"bones": [
|
||||
…
|
||||
],
|
||||
"description": {
|
||||
"identifier": "design:treasure_chest",
|
||||
"textures": [
|
||||
"design:treasure_chest"
|
||||
],
|
||||
"use_ao": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 实际游戏效果
|
||||
|
||||

|
||||