你可以帮助我们扩充关于该主题的更多信息。
原因:这是一篇中文原创教程,与英文内容有较大差异,可能不能直接同步。
在浏览本教程前,请确保你已经可以独立制作行为包及材质包。如果还未掌握,请先浏览教程/制作行为包以及教程/制作材质包这两个教程后再来学习本教程。在浏览完本教程之后,你将学会如何创建一个完整的自定义实体,并学会如何更改该自定义实体的部分属性。
行为包
创建实体
在与manifest.json同层的地方,新建一个名为entities的文件夹,在文件夹中放入你新增的实体的json。
这个json的名字为[实体子名].json
在文件中填入以下示例。
这里的示例中:命名空间为test,新建实体名为npc。
{
"format_version": "1.8.0",
"minecraft:entity": {
"description": {
"identifier": "test:npc",
//实体识别符
"runtime_identifier": "test:npc",
"is_spawnable": true,
//是否自然生成
"is_summonable": true,
//是否可用/summon生成
"is_experimental": false
//是否为实验性生物,如开启,则需开启实验性玩法才可生成
},
"components": {
//组件
"minecraft:type_family": {
"family": [ "test", "npc"]
}
}
}
}
自定义的实体json与其他实体json的写法相同,具体可参照教程/制作行为包。
添加战利品表
在"components"中,添加minecraft:loot设置战利品表,示例如下:
...
"components": {
"minecraft:type_family": {
"family": [ "test", "npc"]
},
"minecraft:loot": {
"table": "loot_tables/entities/npc.json"
},
}
...
这里将战利品表设置为[行为包]/loot_tables/entities/目录下的npc.json文件。
下面是npc.json文件的简单示例实例:
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:grass",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 0,
"max": 15
}
}
]
}
]
}
]
}
材质包
下列同样是一个可用的示例
在与manifest.json同层的地方,创建一个名为entity的文件夹,并将实体的属性json写进去,名字同样为[实体子名].json。如:
{
"format_version": "1.8.0",
"minecraft:client_entity": {
"description": {
"identifier": "test:npc",
"materials": { "default": "npc" },
"textures": {
"default": "textures/entity/npc"
},
"geometry": {
"default":"geometry.npc"
},
"render_controllers": [
"controller.render.npc"
],
"spawn_egg": {
"base_color": "#99e550",
"overlay_color": "#99e550"
}
}
}
}
identifier与之前行为包中所写ID需统一,materials决定了将被这个实体所调用的材料。textures后面为实体贴图材质路径,geometry则确定实体所调用的的建模的文件路径,render_controllers决定了这个实体所拥有的动作。两个color分别确定了生成这个实体的刷怪蛋的斑点的颜色与蛋的底色,格式为十六进制。
materials
接着你需要在与manifest.json同层的地方,再创建一个名为materials的文件夹,在里面放置实体的材料,名为entity.material。例:
{
"materials": {
"version": "1.0.0", "npc:entity_alphatest": {}
}
}
不同的materials材料将会让实体调用不同的渲染效果,具体可参照原版材质包中的materials/entity.material。 注:在materials中,"npc"需要与之前的identifier中的子名相统一。
render_controllers
依然是在与manifest.json同层的地方创建一个名为render_controllers的文件夹,在里面放入这个实体的动画文件,名字为[实体子名].json。
{
"format_version": "1.8.0",
"render_controllers": {
"controller.render.npc": {
"geometry": "Geometry.default",
"materials": [
{ "*": "Material.default" }
],
"textures": [ "Texture.default" ]
}
}
}
其中"controller.render.npc",npc为实体子名,其他部分为基础内容。
最后就是材质,建模,与语言文件的部分。你可以选择直接调用原版的材质内容,也可调用自己所新增的材质内容。
新增材质需要根据在之前entity中所写的路径对应,在对应的路径放入名字为实体子名的贴图即可。建模也是同样的,在指定的路径中放入名字为实体子名的json建模文件,建模的实体名为"geometry.[实体子名]"。具体可参照教程/修改实体模型。语言文件需要在与manifest同层的地方,新建一个texts的文件夹,在里面放入名为zh_CN.lang的文件。其他语言则将文件名改成对应的语言代码即可。在里面写上以下内容:
entity.npc.name=npc
item.spawn_egg.entity.npc.name=npc
每有一个自定义实体都要在需要语言文件中加上以下内容:
entity.[实体子名].name=实体名
item.spawn_egg.entity.[实体子名].name=生物蛋名
(注:在语言文件中的定义不影响自定义实体的任何功能。)
完成以上步骤,你将会得到一个完整的自定义实体。若想为该实体添加其他模块,请参考教程/制作行为包。
参见
以上即为全部的基础自定义实体内容。若有任何问题或不足,欢迎各位进行补充。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||