Bundles can use different textures or models depending on their current state.
A custom bundle can have four graphical states:
normal- Empty bundle.filled- Bundle containing at least one item.open_back- Rear layer rendered when an item inside the bundle is selected.open_front- Front layer rendered over the selected item.
Creating the textures
Create four transparent PNG textures:
contents/my_bundle_tutorial/textures/item/bundles/ruby_bundle.png
contents/my_bundle_tutorial/textures/item/bundles/ruby_bundle_filled.png
contents/my_bundle_tutorial/textures/item/bundles/ruby_bundle_open_back.png
contents/my_bundle_tutorial/textures/item/bundles/ruby_bundle_open_front.png
The resulting folder structure should look like this:
contents/
âââ my_bundle_tutorial/
âââ bundles.yml
âââ textures/
âââ item/
âââ bundles/
âââ ruby_bundle.png
âââ ruby_bundle_filled.png
âââ ruby_bundle_open_back.png
âââ ruby_bundle_open_front.png
Empty bundle texture
ruby_bundle.png is the texture shown when the bundle does not contain any items.
Filled bundle texture
ruby_bundle_filled.png is shown when the bundle contains at least one item.
Open back texture
ruby_bundle_open_back.png contains the rear part of the open bundle.
This layer is rendered behind the selected item.
Open front texture
ruby_bundle_open_front.png contains the front part of the open bundle.
This layer is rendered over the selected item.
Item configuration
Create the following configuration inside bundles.yml:
info:
namespace: my_bundle_tutorial
items:
ruby_bundle:
name: Ruby Bundle
material: BUNDLE
graphics:
textures:
normal: item/bundles/ruby_bundle
filled: item/bundles/ruby_bundle_filled
open_back: item/bundles/ruby_bundle_open_back
open_front: item/bundles/ruby_bundle_open_front
The .png extension must not be included in the configuration.
Texture properties
normal
normal: item/bundles/ruby_bundle
This property is required and defines the empty bundle texture.
filled
filled: item/bundles/ruby_bundle_filled
This property is optional.
When it is omitted, ItemsAdder uses the normal model for both empty and filled bundles.
open_back
open_back: item/bundles/ruby_bundle_open_back
This property defines the layer rendered behind the selected item.
For texture-based bundles, ItemsAdder automatically generates a model using:
minecraft:item/template_bundle_open_back
open_front
open_front: item/bundles/ruby_bundle_open_front
This property defines the layer rendered in front of the selected item.
For texture-based bundles, ItemsAdder automatically generates a model using:
minecraft:item/template_bundle_open_front
Testing the bundle
Regenerate the resource pack:
/iazip
Get the custom bundle:
/iaget my_bundle_tutorial:ruby_bundle
Put one or more items inside it.
To see the open textures:
- Open your inventory.
- Move the cursor over the filled bundle.
- Use the mouse wheel to select an item inside the bundle.
- Minecraft will render the selected item between
open_backandopen_front.
Using custom models
You can provide JSON models instead of letting ItemsAdder generate them from textures.
info:
namespace: my_bundle_tutorial
items:
ruby_bundle:
name: Ruby Bundle
material: BUNDLE
graphics:
models:
normal: item/bundles/ruby_bundle
filled: item/bundles/ruby_bundle_filled
open_back: item/bundles/ruby_bundle_open_back
open_front: item/bundles/ruby_bundle_open_front
Place the model files inside:
contents/my_bundle_tutorial/models/item/bundles/
The resulting structure should look like this:
contents/
âââ my_bundle_tutorial/
âââ bundles.yml
âââ models/
â âââ item/
â âââ bundles/
â âââ ruby_bundle.json
â âââ ruby_bundle_filled.json
â âââ ruby_bundle_open_back.json
â âââ ruby_bundle_open_front.json
âââ textures/
âââ item/
âââ bundles/
âââ ruby_bundle.png
âââ ruby_bundle_filled.png
âââ ruby_bundle_open_back.png
âââ ruby_bundle_open_front.png
Open back model
{
"parent": "minecraft:item/template_bundle_open_back",
"textures": {
"layer0": "my_bundle_tutorial:item/bundles/ruby_bundle_open_back"
}
}
Open front model
{
"parent": "minecraft:item/template_bundle_open_front",
"textures": {
"layer0": "my_bundle_tutorial:item/bundles/ruby_bundle_open_front"
}
}
Troubleshooting
I can only see the normal and filled states
The bundle does not become visually open simply because it contains items.
Open the inventory, hover over the bundle and use the mouse wheel to select one of its contents.
The open bundle uses vanilla textures
Make sure both properties are configured:
open_back: item/bundles/ruby_bundle_open_back
open_front: item/bundles/ruby_bundle_open_front
Then run /iazip again and accept the updated resource pack.
The selected item is not positioned correctly
Make sure the open models use these exact parents:
minecraft:item/template_bundle_open_back
minecraft:item/template_bundle_open_front
Also ensure that the front and back textures use the same canvas size and alignment.
I see a missing texture
Check that:
- The texture paths match the actual files.
- The
.pngextension is not present in the YAML configuration. - The namespace is correct.
- All filenames use lowercase characters.
- The resource pack was regenerated after adding the files.
Done
You now have a custom bundle supporting empty, filled and open states while preserving the vanilla selected-item rendering behavior
