A custom Elytra has three visual parts:
- The normal inventory and hand texture.
- An optional broken inventory and hand texture.
- The wings texture rendered on the player's body.
ItemsAdder automatically creates the required chest equipment, enables the vanilla glider component, and generates the layers.wings equipment model.
You do not need to create equipment JSON or item-model JSON files manually.
Creating the content pack
Create a new content folder:
plugins/ItemsAdder/contents/my_elytras/
├── configs/
│ └── items.yml
└── textures/
├── item/
│ ├── sky_elytra.png
│ └── sky_elytra_broken.png
└── entity/
└── equipment/
└── wings/
└── sky_elytra.png
Creating the textures
Inventory texture
Create the normal item texture:
contents/my_elytras/textures/item/sky_elytra.png
A standard 16x16 item texture is recommended.
Broken inventory texture (optional)
Create the broken texture:
contents/my_elytras/textures/item/sky_elytra_broken.png
When broken_item_texture is not specified, ItemsAdder automatically looks for a texture named:
<normal_item_texture>_broken.png
For example:
item/sky_elytra.png
item/sky_elytra_broken.png
Wings texture
Create the texture used while the Elytra is equipped:
contents/my_elytras/textures/entity/equipment/wings/sky_elytra.png
The recommended vanilla resolution is 64x32. Higher resolutions should preserve the same 2:1 proportions, for example 128x64 or 256x128.
ItemsAdder copies this texture into the correct version-specific resource-pack overlay. It does not modify the image pixels.
Minimal configuration
Create contents/my_elytras/configs/items.yml:
info:
namespace: my_elytras
items:
sky_elytra:
name: Sky Elytra
material: ELYTRA
graphics:
texture: item/sky_elytra
elytra:
wings_texture: entity/equipment/wings/sky_elytra
Configuring the broken texture
Automatic selection
If your files are named:
sky_elytra.png
sky_elytra_broken.png
You can omit broken_item_texture:
graphics:
texture: item/sky_elytra
elytra:
wings_texture: entity/equipment/wings/sky_elytra
Explicit selection
You can also select a different texture explicitly:
elytra:
wings_texture: entity/equipment/wings/sky_elytra
broken_item_texture: item/damaged_sky_elytra
Resource paths can include the namespace:
broken_item_texture: my_elytras:item/damaged_sky_elytra
The .png extension is optional, but omitting it is recommended.
ItemsAdder automatically generates the correct broken item-model state for each supported Minecraft version.
Elytra properties
elytra:
wings_texture: entity/equipment/wings/sky_elytra
broken_item_texture: item/sky_elytra_broken
max_flight_ticks: 0
firework:
enabled: true
consume: true
cooldown_ticks: 0
durability_damage_multiplier: 1.0
collision_damage_multiplier: 1.0
| Property | Default | Description |
|---|---|---|
wings_texture | Required | Texture rendered on the player's body while the Elytra is equipped. |
broken_item_texture | Automatic | Inventory and hand texture used when the item is broken. |
max_flight_ticks | 0 | Maximum continuous gliding time. 0 means unlimited. |
firework.enabled | true | Whether fireworks can boost the player while using this Elytra. |
firework.consume | true | Whether an accepted boost consumes the firework rocket. |
firework.cooldown_ticks | 0 | Required delay between accepted boosts. |
durability_damage_multiplier | 1.0 | Multiplier applied to durability damage. |
collision_damage_multiplier | 1.0 | Multiplier applied to FLY_INTO_WALL damage. |
There are 20 ticks in one second. For example, this limits continuous flight to 30 seconds:
max_flight_ticks: 600
All tick values must be non-negative integers. Damage multipliers must be non-negative finite numbers.
Firework examples
Disable firework boosting
firework:
enabled: false
The restriction applies only while the player is gliding with this exact custom Elytra.
Vanilla Elytras and other custom Elytras are not affected.
Allow boosts without consuming rockets
firework:
enabled: true
consume: false
cooldown_ticks: 0
Add a two-second cooldown
firework:
enabled: true
consume: true
cooldown_ticks: 40
The cooldown is cleared when the tracked glide ends.
Damage multipliers
Half durability damage
durability_damage_multiplier: 0.5
Disable durability damage
durability_damage_multiplier: 0
Double wall collision damage
collision_damage_multiplier: 2.0
Disable wall collision damage
collision_damage_multiplier: 0
These multipliers affect only the exact custom Elytra being worn. Vanilla Elytras and other custom Elytras keep their own behavior.
ItemsAdder does not replace the vanilla enchantment system. Applicable enchantments such as Unbreaking and Mending continue to work normally.
Events and actions
Custom Elytras provide four additional item events:
| Event | Trigger |
|---|---|
glide_start | The player starts gliding with this custom Elytra. |
glide_stop | The tracked glide ends, times out, or the Elytra is unequipped. |
elytra_boost | A permitted firework boost is used. |
elytra_collision | The player receives FLY_INTO_WALL collision damage. |
They use the normal ItemsAdder action system:
events:
glide_start:
play_sound:
name: entity.ender_dragon.flap
volume: 1
pitch: 1.2
glide_stop:
play_sound:
name: block.note_block.bass
volume: 1
pitch: 0.8
elytra_boost:
play_sound:
name: entity.firework_rocket.launch
volume: 1
pitch: 1.3
elytra_collision:
play_sound:
name: entity.player.hurt
volume: 1
pitch: 0.7
Any existing item action can be used inside these events.
Full example
info:
namespace: my_elytras
items:
sky_elytra:
name: Sky Elytra
material: ELYTRA
graphics:
texture: item/sky_elytra
elytra:
wings_texture: entity/equipment/wings/sky_elytra
# Optional. If omitted, item/sky_elytra_broken.png is detected automatically.
broken_item_texture: item/sky_elytra_broken
# 0 means unlimited flight.
max_flight_ticks: 0
firework:
enabled: true
consume: true
cooldown_ticks: 0
durability_damage_multiplier: 1.0
collision_damage_multiplier: 1.0
events:
glide_start:
play_sound:
name: entity.ender_dragon.flap
volume: 1
pitch: 1.2
glide_stop:
play_sound:
name: block.note_block.bass
volume: 1
pitch: 0.8
elytra_boost:
play_sound:
name: entity.firework_rocket.launch
volume: 1
pitch: 1.3
elytra_collision:
play_sound:
name: entity.player.hurt
volume: 1
pitch: 0.7
Using explicit equipment settings
The elytra section automatically creates the required equipment configuration. You can still add compatible equipment properties when needed:
equipment:
sound: item.armor.equip_elytra
dispensable: true
swappable: true
damage_on_hurt: true
If you explicitly configure the following properties, they must remain compatible with the Elytra:
equipment:
id: my_elytras:sky_elytra
slot: CHEST
glider: true
allowed_entities:
- PLAYER
Generating and testing the pack
- Save the configuration and PNG files.
- Run your normal ItemsAdder reload and resource-pack generation workflow, such as
/iazip. - Make sure the updated resource pack is applied to the client.
- Give yourself the item:
/iaget my_elytras:sky_elytra
- Equip it in the chest slot.
- Start gliding and check the wings texture.
- Use a firework to test its boost rules.
- Reduce its durability to verify the broken inventory texture.
Troubleshooting
The wings texture is missing
Check that:
- The client uses Minecraft 1.21.2 or newer.
wings_texturepoints to an existing PNG.- The namespace is correct.
- The updated resource pack was generated and accepted.
- The resource path is relative to the
texturesfolder.
Example:
wings_texture: my_elytras:entity/equipment/wings/sky_elytra
Corresponding file:
contents/my_elytras/textures/entity/equipment/wings/sky_elytra.png
The inventory texture changes, but the worn wings do not
graphics.texture and broken_item_texture control only the item shown in inventories and hands.
The worn model always uses wings_texture.
The broken texture is not shown
If automatic selection is used, verify that the filename ends with _broken.png:
sky_elytra.png
sky_elytra_broken.png
Otherwise, configure it explicitly:
broken_item_texture: item/sky_elytra_broken
Equipment settings are rejected
Remove unnecessary explicit equipment properties first. The elytra section already configures the chest slot, equipment ID, player compatibility, and glider component.
Ready-to-use test examples
The following items can be used to verify the main Elytra properties. Create the referenced textures inside your namespace's textures/item folder.
info:
namespace: my_elytras
items:
baseline_elytra:
name: Baseline Elytra
material: ELYTRA
graphics:
texture: item/baseline_elytra
durability:
max_durability: 12
elytra:
wings_texture: item/baseline_elytra_wings
max_flight_ticks: 0
firework:
enabled: true
consume: true
cooldown_ticks: 0
durability_damage_multiplier: 1.0
collision_damage_multiplier: 1.0
timed_safe_elytra:
name: Timed Safe Elytra
material: ELYTRA
graphics:
texture: item/timed_safe_elytra
durability:
max_durability: 12
elytra:
wings_texture: item/timed_safe_elytra_wings
max_flight_ticks: 100
firework:
enabled: false
consume: true
cooldown_ticks: 0
durability_damage_multiplier: 0.5
collision_damage_multiplier: 0.0
boost_heavy_elytra:
name: Boost Heavy Elytra
material: ELYTRA
graphics:
texture: item/boost_heavy_elytra
durability:
max_durability: 12
elytra:
wings_texture: item/boost_heavy_elytra_wings
broken_item_texture: item/boost_heavy_explicit_broken
max_flight_ticks: 0
firework:
enabled: true
consume: false
cooldown_ticks: 60
durability_damage_multiplier: 2.0
collision_damage_multiplier: 2.0
- Baseline Elytra: preserves normal vanilla-like flight, firework consumption and damage.
- Timed Safe Elytra: stops gliding after 5 seconds, blocks firework boosts, halves durability damage and prevents wall-collision damage.
- Boost Heavy Elytra: provides free firework boosts with a 3-second cooldown and doubles durability and collision damage.
For the first two items, add <normal_texture>_broken.png to test automatic broken-texture detection. The third item demonstrates an explicit broken_item_texture.
