Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
Information icon
此特性为基岩版独有。
Dark Oak Sapling
此条目仍需完善。

你可以帮助我们扩充关于该主题的更多信息。
原因:这是一篇中文原创教程,与英文页面有较大差异

本教程适用于基岩版1.14.0及以上版本。

在阅读本教程前,请先确保自身已有一定的附加包基础。如果还未掌握,请先浏览教程/制作行为包教程/制作资源附加包页面后再来学习本教程。

在浏览完本教程之后,你将学会如何创建一个全新的自定义实体。

行为包[]

创建实体[]

在与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"]
			},
			"minecraft:health": {
			//生命值
			"value": 10,
			//初始值
			"max": 10
			//最大值
		},
		"minecraft:movement": {
		//移动速度
		"value": 0.25
		//值
		}
		}
	}
}

自定义的实体json与其他实体json的写法相同,具体可参照教程/制作行为包

添加战利品表[]

这是一个可选参数。

如需要,则在components中,添加minecraft:loot设置物品掉落;添加minecraft:equipment设置自然装备掉落,示例如下:

...
 "components": {
  "minecraft:type_family": {
   "family": [
    "test",
    "npc"
   ]
  },
  "minecraft:loot": {
   "table": "loot_tables/entities/npc.json"
  },
  "minecraft:equipment": {
   "table": "loot_tables/entities/npc_equipment.json"
  }
 }
...

这里将掉落物表设置为[行为包]/loot_tables/entities/目录下的npc.json文件,将装备掉落设置为[行为包]/loot_tables/entities/目录下的npc_equipment.json文件。

下面是两文件的简单示例:

npc.json:

{
 "pools": [
  {
   "rolls": 1,
   "entries": [
    {
     "type": "item",
     "name": "minecraft:grass",
     "weight": 1,
     "functions": [
      {
       "function": "set_count",
       "count": {
        "min": 0,
        "max": 15
       }
      }
     ]
    }
   ]
  }
 ]
}

npc_equipment.json:

{
 "pools": [
  {
   "rolls": 1,
   "entries": [
    {
     "type": "item",
     "name": "minecraft:stone_sword",
     "weight": 1
    }
   ]
  }
 ]
}

设置生成规则[]

这是一个可选参数。 生成规则用于使你的自定义实体在特定生物群系中的自然生成。 如果你的实体仅需使用命令生成,或仅从其他实体生成,则不需要此设置。

在行为包根目录下创建一个名为spawn_rules的文件夹。 新建一个以自定义生物命名的JSON文件。下面是一个简单的示例:

{
  "format_version": "1.8.0",
  "minecraft:spawn_rules": {
    "description": {
      "identifier": "test:npc",
      //实体识别符
      "population_control": "animal"
      //实体数量控制标签
    },
    "conditions": [
    //组件
      {
        "minecraft:spawns_on_surface": {},
        //添加此组件即允许该实体在地面上生成,若删除则不允许
        "minecraft:brightness_filter": {
        //设置实体生成的光照等级范围
          "min": 7,
          "max": 15,
          "adjust_for_weather": false
          //设置是否允许在天气影响后的光照等级下生成(如:设置为true,则敌对生物在下雨天会生成)
        },
        "minecraft:weight": {
        //优先生成权重值
          "default": 10
        },
        "minecraft:herd": {
        //设置一次生成实体群的大小(如:绵羊一次生成2到3只)
          "min_size":1,
          "max_size":3
        },
    
        "minecraft:biome_filter": {
          "test": "has_biome_tag", "operator":"==", "value": "animal"
        }
      }
    ]
  }
}

这只是一个简单的示例,具体见基岩版实体文档#Spawn_Rules

资源包[]

下列同样是一个可用的示例

在与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=生物蛋名

(注:在语言文件中的定义不影响自定义实体的任何功能。)

完成以上步骤,你将会得到一个完整的自定义实体。若想为该实体添加其他模块,请参考教程/制作行为包。 以上即为自定义实体的基础内容。若有任何问题或不足,欢迎各位进行补充。

参见[]

外部链接[]

语言

Advertisement