Skip to content

自定义生物蛋 ​

生物蛋(Spawn Egg)用于生成自定义生物实体。玩家右键使用时会在目标位置生成指定的实体,也可以放入刷怪笼或发射器中使用。

前置条件

请先阅读 自定义基础物品 了解通用注册流程(步骤 1-6)。format_version 使用 1.10。

概述 ​

生物蛋是最简单的特殊物品类型之一。只需将 custom_item_type 设为 egg,并通过 netease:egg 组件指定要生成的实体,即可创建一个功能完整的自定义生物蛋。

核心特性:

  • 右键方块表面生成实体
  • 可放入刷怪笼持续生成实体
  • 可放入发射器激活时生成实体
  • 支持所有自定义物品通用组件

netease:egg 组件 ​

字段类型说明
custom_item_typestring设为 "egg"
netease:egg.entitystring要生成的实体 identifier,需在行为包 entities/ 目录下已定义

使用方式 ​

操作效果
右键方块表面在点击位置的上方生成实体
放入刷怪笼刷怪笼按规则持续生成该实体
放入发射器发射器激活时在前方生成实体

注意

netease:egg 中 entity 字段指定的实体 identifier 必须是一个已注册的自定义生物(在行为包 entities/ 目录下有对应定义,且 is_spawnable 设为 true),否则右键使用时不会生成任何实体。

完整案例:松鼠生物蛋 ​

行为包 ​

behavior_pack/netease_items_beh/squirrel_egg.json:

json
{
  "format_version": "1.10",
  "minecraft:item": {
    "description": {
      "identifier": "mymod:squirrel_egg",
      "custom_item_type": "egg",
      "category": "nature"
    },
    "components": {
      "minecraft:max_stack_size": 64,
      "netease:egg": {
        "entity": "mymod:squirrel"
      }
    }
  }
}

资源包 ​

resource_pack/netease_items_res/squirrel_egg.json:

json
{
  "format_version": "1.10",
  "minecraft:item": {
    "description": {
      "identifier": "mymod:squirrel_egg",
      "texture": "squirrel_egg"
    }
  }
}

item_texture.json ​

json
{
  "resource_pack_name": "mymod",
  "texture_data": {
    "squirrel_egg": {
      "textures": "textures/items/squirrel_egg"
    }
  }
}

本地化 ​

item.mymod:squirrel_egg.name=松鼠生物蛋

脚本扩展:生成时添加属性 ​

python
import server.extraServerApi as serverApi
ServerSystem = serverApi.GetServerSystemCls()

class EggMod(ServerSystem):
    def __init__(self, namespace, systemName):
        super(EggMod, self).__init__(namespace, systemName)
        self.ListenForEvent(
            serverApi.GetEngineNamespace(),
            serverApi.GetEngineSystemName(),
            'AddEntityServerEvent',
            self, self.OnEntityAdded
        )

    def OnEntityAdded(self, args):
        entityId = args.get('id')
        engineType = args.get('engineTypeStr', '')
        if engineType == 'mymod:squirrel':
            # 为生物蛋生成的松鼠设置自定义名称
            comp = serverApi.GetEngineCompFactory().CreateName(entityId)
            comp.SetName("小松鼠")

常见问题 ​

生物蛋无法生成实体 ​

确认 netease:egg 中 entity 字段指向的实体已经在行为包 entities/ 目录下正确定义,且 is_spawnable 设为 true。

放入刷怪笼不生效 ​

确认方块类型为刷怪箱(原版 mob_spawner 或自定义刷怪箱)。自定义生物蛋需要放入刷怪箱方块的 GUI 界面中。

下一步 ​