2.6
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# 基本属性
|
||||
|
||||
在接下来的章节中,我们以先在《我的世界》开发工作台编辑器中添加属性,然后打开具体路径来观察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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
行为包中的服务端文件,查看如下:
|
||||
|
||||
```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)。
|
||||
@@ -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`组件相配合。你依旧可以在上面提及的自定义武器及工具页面找到它的相关信息。
|
||||
@@ -0,0 +1,53 @@
|
||||
# 食物
|
||||
|
||||
在本节中,我们学习食物的自定义物品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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`minecraft:foil`用于物品是否开启铂晕效果,即类似附魔效果的光效。
|
||||
|
||||
`minecraft:food`用于自定义食用效果。`can_always_eat`对应是否可以在满饥饿值状态下食用,类似于金苹果、附魔金苹果。`effects`是食用后出发的状态效果。`nutrition`是食用后恢复的饥饿值。更多的属性可以在基岩版开发维基的[`minecraft:food`](https://wiki.mcbe-dev.net/p/Manual:Minecraft:food#tabber-1.12.0)页面找到名称及其用法。
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
# 盔甲
|
||||
|
||||
在本节中,我们学习盔甲的自定义物品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"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
可以看到,`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` | 是否显示玩家皮肤的靴子层 |
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user