首次上传
84
docs/netease-tutorial-103.4-main/5-重温:自定义奖励物品/1-基本属性.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 基本属性
|
||||
|
||||
在接下来的章节中,我们以先在《我的世界》开发工作台编辑器中添加属性,然后打开具体路径来观察JSON文件的方式回顾学习各种自定义对象的JSON文件写法。接下来,我们先回顾之前的自定义奖励物品。我们首先学习各类常见的基本属性。
|
||||
|
||||
## 在编辑器中添加
|
||||
|
||||

|
||||
|
||||
我们在编辑器中添加一个标识符为`test:test_item`的物品。
|
||||
|
||||

|
||||
|
||||
我们在“行为包属性”中添加如上图所示属性。
|
||||
|
||||

|
||||
|
||||
我们在“资源包”属性中添加如上图所示属性。这样,我们便通过编辑器添加了一些常用的基本属性。
|
||||
|
||||
## 实际文件
|
||||
|
||||
然后我们一起来查看自定义物品的实际文件。物品分为客户端和服务端两个文件,客户端文件在资源包的`netease_items_res`文件夹中,服务端文件在行为包的`netease_items_beh`文件夹中。
|
||||
|
||||
我们打开资源包中的客户端文件,查看如下:
|
||||
|
||||
```json
|
||||
{
|
||||
"format_version": "1.10",
|
||||
"minecraft:item": {
|
||||
"components": {
|
||||
"minecraft:icon": "test:test_item",
|
||||
"minecraft:use_animation": "eat"
|
||||
},
|
||||
"description": {
|
||||
"category": "Construction",
|
||||
"identifier": "test:test_item",
|
||||
"register_to_create_menu": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
行为包中的服务端文件,查看如下:
|
||||
|
||||
```json
|
||||
{
|
||||
"format_version": "1.10",
|
||||
"minecraft:item": {
|
||||
"components": {
|
||||
"minecraft:max_damage": 0,
|
||||
"minecraft:max_stack_size": 64,
|
||||
"minecraft:use_duration": 0.0,
|
||||
"netease:allow_offhand": {
|
||||
"value": true
|
||||
},
|
||||
"netease:cooldown": {
|
||||
"category": "",
|
||||
"duration": 0
|
||||
},
|
||||
"netease:enchant_material": {
|
||||
"value": true
|
||||
},
|
||||
"netease:fire_resistant": {
|
||||
"value": true
|
||||
},
|
||||
"netease:fuel": {
|
||||
"duration": 0
|
||||
},
|
||||
"netease:show_in_hand": {
|
||||
"value": true
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"category": "Construction",
|
||||
"identifier": "test:test_item"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`format_version`代表该文件的格式版本,控制接口字段的结构。在`minecraft:item`对象下,有两个对象,`description`对象定义了物品的标识符和分类,`components`对象定义了物品的组件,对应编辑器中的“属性”。
|
||||
|
||||
有些组件本身直接就是一个值,例如上面行为包中的`minecraft:max_damage`等。有些组件本身是一个对象,对象中定义了该属性的各个子属性,例如`netease:cooldown`等。
|
||||
|
||||
关于基本属性中各个组件的含义和用法,可以参见官方文档[自定义基础物品](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/20-%E7%8E%A9%E6%B3%95%E5%BC%80%E5%8F%91/15-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B8%B8%E6%88%8F%E5%86%85%E5%AE%B9/1-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%89%A9%E5%93%81/1-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9F%BA%E7%A1%80%E7%89%A9%E5%93%81.html?catalog=1)。
|
||||
61
docs/netease-tutorial-103.4-main/5-重温:自定义奖励物品/2-工具.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# 工具
|
||||
|
||||
在本节中,我们学习工具的自定义物品JSON文件。
|
||||
|
||||
## 在编辑器中添加
|
||||
|
||||

|
||||
|
||||
我们创建一个标识符为`test:test_tool`的物品。
|
||||
|
||||

|
||||
|
||||
我们为其添加`minecraft:max_stack_size`、`minecraft:max_damage`和`netease:weapon`属性。在后面我们可以看到,这三个属性本质上是三种组件。
|
||||
|
||||

|
||||
|
||||
然后在武器属性这里我们把所有的子属性都添加上。
|
||||
|
||||

|
||||
|
||||
接着,我们在基础属性中添加`custom_item_type`。
|
||||
|
||||

|
||||
|
||||
并确认值为`weapon`。这样,我们便添加了一个自定义工具的基本配置。你可以先在编辑器中进行一些修改,也可以直接打开JSON修改。
|
||||
|
||||
## 实际文件
|
||||
|
||||
由于以上自定义的属性都位于行为包,这里我们只展示行为包文件的内容:
|
||||
|
||||
```json
|
||||
{
|
||||
"format_version": "1.10",
|
||||
"minecraft:item": {
|
||||
"components": {
|
||||
"minecraft:max_damage": 0,
|
||||
"minecraft:max_stack_size": 64,
|
||||
"netease:weapon": {
|
||||
"attack_damage": 0,
|
||||
"enchantment": 0,
|
||||
"level": 0,
|
||||
"speed": 0,
|
||||
"type": "hoe"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"category": "Construction",
|
||||
"custom_item_type": "weapon",
|
||||
"identifier": "test:test_tool"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`minecraft:max_damage`组件是一个整数,代表该工具的最大耐久值。我们可以在JSON中手动将其更改到更高的值。
|
||||
|
||||
`minecraft:max_stack_size`是该工具的最大堆叠数,这里的默认值64是有问题的,我们必须将其更改到1,因为工具应默认不可堆叠。
|
||||
|
||||
`netease:weapon`是网易自己添加的组件,可以用于定义原版的五种工具:剑、镐、斧、锹、锄。具体属性可以至官方文档[自定义武器及工具](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/20-%E7%8E%A9%E6%B3%95%E5%BC%80%E5%8F%91/15-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B8%B8%E6%88%8F%E5%86%85%E5%AE%B9/1-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%89%A9%E5%93%81/2-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%AD%A6%E5%99%A8%E5%8F%8A%E5%B7%A5%E5%85%B7.html?catalog=1)处查看。
|
||||
|
||||
`description`中的`custom_item_type`是用于自定义特殊物品用的,这里值为`weapon`,用于和`netease:weapon`组件相配合。你依旧可以在上面提及的自定义武器及工具页面找到它的相关信息。
|
||||
54
docs/netease-tutorial-103.4-main/5-重温:自定义奖励物品/3-食物.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 食物
|
||||
|
||||
在本节中,我们学习食物的自定义物品JSON文件。
|
||||
|
||||
## 在编辑器中添加
|
||||
|
||||

|
||||
|
||||
在前面的系列教程中,我们添加过钻石苹果自定义物品。它的属性如上述所示。
|
||||
|
||||
## 实际文件
|
||||
|
||||
在我们的例子中,我们依旧只需要展示行为包文件:
|
||||
|
||||
```json
|
||||
{
|
||||
"format_version": "1.10",
|
||||
"minecraft:item": {
|
||||
"components": {
|
||||
"minecraft:foil": true,
|
||||
"minecraft:food": {
|
||||
"can_always_eat": true,
|
||||
"effects": [
|
||||
{
|
||||
"amplifier": 3,
|
||||
"chance": 1.0,
|
||||
"duration": 20,
|
||||
"name": "health_boost"
|
||||
},
|
||||
{
|
||||
"amplifier": 4,
|
||||
"chance": 1.0,
|
||||
"duration": 600,
|
||||
"name": "absorption"
|
||||
}
|
||||
],
|
||||
"nutrition": 16
|
||||
},
|
||||
"minecraft:max_stack_size": 64,
|
||||
"minecraft:use_duration": 20.0
|
||||
},
|
||||
"description": {
|
||||
"category": "Nature",
|
||||
"identifier": "test:custom_food",
|
||||
"register_to_create_menu": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`minecraft:foil`用于物品是否开启铂晕效果,即类似附魔效果的光效。
|
||||
|
||||
`minecraft:food`用于自定义食用效果。`can_always_eat`对应是否可以在满饥饿值状态下食用,类似于金苹果、附魔金苹果。`effects`是食用后出发的状态效果。`nutrition`是食用后恢复的饥饿值。更多的属性可以在基岩版开发维基的[`minecraft:food`](https://wiki.mcbe-dev.net/p/Manual:Minecraft:food#tabber-1.12.0)页面找到名称及其用法。
|
||||
|
||||
100
docs/netease-tutorial-103.4-main/5-重温:自定义奖励物品/4-盔甲.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 盔甲
|
||||
|
||||
在本节中,我们学习盔甲的自定义物品JSON文件。
|
||||
|
||||
## 在编辑器中添加
|
||||
|
||||

|
||||
|
||||
我们创建一个标识符为`test:test_armor`的自定义物品,注意,为了快速创建一个盔甲,我们可以选择“自定义盔甲”数据模板。
|
||||
|
||||

|
||||
|
||||
此时,我们会额外的看到“盔甲穿戴属性”一栏被填充了内容,这也是自定义盔甲时与众不同的一处。我们会在下面的JSON文件讲解中实际看到这一点。
|
||||
|
||||
## 实际文件
|
||||
|
||||
首先我们查看盔甲物品的行为包文件:
|
||||
|
||||
```json
|
||||
{
|
||||
"format_version": "1.10",
|
||||
"minecraft:item": {
|
||||
"components": {
|
||||
"minecraft:max_damage": 10,
|
||||
"netease:armor": {
|
||||
"armor_slot": 1,
|
||||
"defense": 20,
|
||||
"enchantment": 10
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"category": "Equipment",
|
||||
"identifier": "test:test_armor",
|
||||
"register_to_create_menu": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
可以看到,`netease:armor`组件定义了盔甲相关参数,`armor_slot`为1代表着定义的是胸甲,`defense`是提供的护甲值的量,`enchantment`是附魔能力。此外,还有一些其它参数,可以参考官方文档[自定义盔甲](https://mc.163.com/dev/mcmanual/mc-dev/mcguide/20-%E7%8E%A9%E6%B3%95%E5%BC%80%E5%8F%91/15-%E8%87%AA%E5%AE%9A%E4%B9%89%E6%B8%B8%E6%88%8F%E5%86%85%E5%AE%B9/1-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%89%A9%E5%93%81/3-%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9B%94%E7%94%B2.html?catalog=1)的解释。
|
||||
|
||||
盔甲和其他物品有一点不同之处在于,他需要使用附着物(Attachable)来盔甲穿戴在玩家身上的效果。附着物是一种类似于客户端实体的对象,这一点在我们之后章节回顾学习了实体JSON写法之后你可以清晰地看到。你可以理解为,附着物是一种挂接在玩家身上的额外部件,而盔甲便是使用这一种对象来渲染穿戴效果。
|
||||
|
||||

|
||||
|
||||
我们打开资源包的`attachables`文件夹,便可以看到对应的附着物JSON文件,我们观察此文件:
|
||||
|
||||
```json
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:attachable": {
|
||||
"description": {
|
||||
"geometry": {
|
||||
"default": "geometry.humanoid.armor.chestplate"
|
||||
},
|
||||
"identifier": "test:test_armor",
|
||||
"materials": {
|
||||
"default": "armor",
|
||||
"enchanted": "armor_enchanted"
|
||||
},
|
||||
"render_controllers": [
|
||||
"controller.render.armor"
|
||||
],
|
||||
"scripts": {
|
||||
"parent_setup": "variable.chest_layer_visible = 0.0;"
|
||||
},
|
||||
"textures": {
|
||||
"default": "textures/models/armor/diamond_1",
|
||||
"enchanted": "textures/misc/enchanted_item_glint"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
首先,在`identifier`字段处我们可以看到该附着物的标识符,这里需要与物品的标识符保持一致,为`test:test_armor`。
|
||||
|
||||
`textures`是该附着物对应的纹理,这里就是盔甲穿戴的纹理。
|
||||
|
||||
`materials`是该附着物渲染用的材质,一般无需更改。
|
||||
|
||||
`geometry`是该附着物使用的模型,这里需要注意,应该与盔甲对应部位模型一致。对于原版而言,有以下四种模型:
|
||||
|
||||
| 模型标识符 | 说明 |
|
||||
| ------------------------------------ | ---- |
|
||||
| `geometry.humanoid.armor.helmet` | 头盔 |
|
||||
| `geometry.humanoid.armor.chestplate` | 胸甲 |
|
||||
| `geometry.humanoid.armor.leggings` | 护腿 |
|
||||
| `geometry.humanoid.armor.boots` | 靴子 |
|
||||
|
||||
你也可以自定义一些你自己的与原版盔甲不同的模型,相关内容都在上面提供过的自定义盔甲官方文档里有详细说明。
|
||||
|
||||
`scripts/parent_setup`是会在父对象(即玩家)初始化时执行的脚本,这里可以使用四种变量来调控玩家渲染效果,更具体的内容,请查看上面提供的自定义盔甲官方文档:
|
||||
|
||||
| 变量标识符 | 说明 |
|
||||
| ------------------------------------ | ---- |
|
||||
| `variable.helmet_layer_visible` | 是否显示玩家皮肤的头盔层 |
|
||||
| `variable.chest_layer_visible` | 是否显示玩家皮肤的胸甲层 |
|
||||
| `variable.leg_layer_visible` | 是否显示玩家皮肤的护腿层 |
|
||||
| `variable.boot_layer_visible` | 是否显示玩家皮肤的靴子层 |
|
||||
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 370 KiB |
|
After Width: | Height: | Size: 860 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 68 KiB |