How Bedrock Handles Spawn Egg Visuals
Unlike regular items that require their own files in the items folder, spawn eggs are tied directly to the entity they summon. As long as your behavior pack entity has is_spawnable set to true inside its description, the game creates the item automatically. All visual customization happens in the resource pack inside the client_entity file.
You have two mutually exclusive options inside the spawn_egg object: tinting the vanilla egg template using base_color and overlay_color, or overriding the template entirely with a custom image using the texture and texture_index properties. Tinting is fast and matches the vanilla aesthetic, while custom textures are better when your add-on introduces dozens of mobs that need to be recognizable at a glance in the inventory.
| Field | What it does | Notes |
|---|---|---|
| base_color | Sets the background shell color of the egg. | Uses a 6-character hex string, such as #FF0000. |
| overlay_color | Sets the color of the spots on the egg. | Uses a 6-character hex string. Cannot be combined with a custom texture. |
| texture | Points to a shortname defined in item_texture.json. | Replaces the two-tone vanilla template completely. |
| texture_index | Selects a specific frame from a texture array. | Optional integer. Defaults to 0 if omitted. |
Method 1: Tinting the Vanilla Egg
The fastest way to style a spawn egg is to supply two hexadecimal color codes. The game takes its built-in grayscale base and spot masks and multiplies them by your colors. This requires no image files or texture registration.
Open your entity's resource pack definition file and add the spawn_egg object inside the description block. Both base_color and overlay_color must be strings starting with a hash symbol followed by six hexadecimal digits. Standard 8-digit hex codes with alpha values are not supported here; the egg is always fully opaque.
{
"format_version": "1.10.0",
"minecraft:client_entity": {
"description": {
"identifier": "my_pack:goblin",
"materials": {
"default": "entity_alphatest"
},
"textures": {
"default": "textures/entity/goblin"
},
"geometry": {
"default": "geometry.goblin"
},
"spawn_egg": {
"base_color": "#3B6E22",
"overlay_color": "#8F563B"
}
}
}
}Method 2: Assigning a Custom Texture
When two flat colors are not enough, you can replace the egg graphic with your own pixel art, such as a miniature icon of the mob's face or a custom-shaded egg. Place your PNG file inside the resource pack's textures/items directory. Standard resolution is 16x16 pixels, though higher resolutions work the same as any other item sprite.
Instead of referencing the file path directly inside the client entity file, spawn eggs use the item texture atlas. You must first assign a shortname to your image inside RP/textures/item_texture.json, and then reference that shortname in the entity's spawn_egg block. If you provide the texture key, the game ignores base_color and overlay_color.
{
"format_version": "1.10.0",
"minecraft:client_entity": {
"description": {
"identifier": "my_pack:goblin",
"materials": {
"default": "entity_alphatest"
},
"textures": {
"default": "textures/entity/goblin"
},
"geometry": {
"default": "geometry.goblin"
},
"spawn_egg": {
"texture": "goblin_egg"
}
}
}
}Registering the Shortname in item_texture.json
The texture string you wrote in the client entity file is looked up in RP/textures/item_texture.json. If this file does not exist in your resource pack yet, create it. The texture_data object maps your chosen shortname to the actual file path inside the pack, omitting the .png extension.
If you are creating many entities, you can group all of your spawn egg paths into a single array under one shortname, and then select which image each entity uses by adding texture_index to the entity's spawn_egg block. Index 0 is the first path in the list, index 1 is the second, and so on. This keeps item_texture.json clean in large packs.
{
"resource_pack_name": "my_pack",
"texture_name": "atlas.items",
"texture_data": {
"goblin_egg": {
"textures": "textures/items/egg_goblin"
},
"boss_eggs": {
"textures": [
"textures/items/egg_troll",
"textures/items/egg_dragon"
]
}
}
}Overriding Vanilla Spawn Eggs
You can apply these exact same rules to vanilla mobs if you are making a pure resource pack. Copy the vanilla entity's client declaration into your RP/entity folder, keep its original minecraft: identifier, and replace its spawn_egg block.
Note that several older vanilla mobs have hardcoded spawn egg names in the vanilla item atlas (for example, spawn_egg_creeper), while newer mobs tend to use base_color and overlay_color in their client entity files. Regardless of how the vanilla mob sets its egg originally, writing a new spawn_egg block in an overriding client_entity file with format_version 1.10.0 will cleanly replace the visual.
Setting the Spawn Egg Display Name
A retextured egg still shows a raw identifier like item.spawn_egg.entity.my_pack:goblin.name until you localize it. Spawn egg translation keys follow a strict format based on the entity's identifier.
Open your resource pack's language file (such as RP/texts/en_US.lang) and add both the entity name and the spawn egg item name. There is no JSON component for a spawn egg's display name because it is not a standalone custom item.
entity.my_pack:goblin.name=Goblin
item.spawn_egg.entity.my_pack:goblin.name=Spawn GoblinWhich versions this applies to
Applies to format_version 1.10.0 and all modern Bedrock versions (1.16.0 through 1.21+). Stable feature; no experimental toggles are required.
When it does not work
| What you see | Why | The fix |
|---|---|---|
| The spawn egg appears as a blank white and gray checkerboard or purple-and-black missing texture icon in the inventory. | The string inside spawn_egg.texture was set to a file path like "textures/items/egg_goblin" instead of a shortname, or the shortname is misspelled in RP/textures/item_texture.json. | Ensure spawn_egg.texture matches a key inside texture_data in item_texture.json, and verify the PNG file exists at the path specified in item_texture.json. |
| The spawn egg shows up completely black or uses default magenta/black colors despite base_color and overlay_color being set. | The hex color string is missing the leading # character, contains an alpha channel (8 digits instead of 6), or uses invalid hexadecimal characters. | Format both color strings strictly as 6-digit hex codes with a hash prefix, such as "#4A90E2". |
| The spawn egg does not appear in the Creative inventory at all, nor can it be given with /give. | The behavior pack entity description has "is_spawnable": false, or the property was omitted entirely. | Open the corresponding BP/entities/ file and add "is_spawnable": true inside the minecraft:entity description block. |
Reference, straight from the game files
Read out of the game itself, so the ids match the version you are building for.
