textures
Textures are an important section in Minecraft and can be both overwritten and new textures can be added from Fonts or Models, the main path is
📦resource_pack.zip
└── 📁assets
└── 📁minecraft
└── 📁textures
├── 📁block
│ └── 🎨amethyst_cluster.png
├── 📁colormap
├── 📁effect
├── 📁entity
├── 📁environment
├── 📁font
├── 📁gui
├── 📁item
│ └── 🎨axolotl_bucket.png
├── 📁map
├── 📁misc
├── 📁mob_effect
├── 📁painting
├── 📁particle
└── 📁trimsTry to use textures in multiples of 16x, otherwise the texture may be distorted.
The best way to obtain Minecraft assets is to go directly to mcasset.cloud
MCMeta & Animated Textures
To make animated textures you need to multiply the size of the texture vertically, for example to add only one frame instead of 16x16 it is now 16x32 and has no limit, and so on with each frame you want to add.
interpolate
The font type, in this case, is bit-map for image-based chars. If true, Minecraft generates additional frames between frames with a frame time greater than 1 between them
height
The height of the sprite, in pixels. This is also unused in vanilla, but can be used by resource packs to have frames that are not perfect squares. Defaults to the image's height if "width" is defined, and the smaller of the image's dimensions if it's not
frametime
Sets the default time for each frame in increments of one game tick. Defaults to
frames
Contains a list of frames. Defaults to displaying all the frames from top to bottom.
Command Block Animated Example
command_block_back.png.mcmeta
{
"animation": {
"interpolate": true,
"frametime": 10
}
}Fire Animated Example
fire_0.png.mcmeta
{
"animation": {
"frames": [
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
]
}
}
An example of a Flash animation
reflection_animated_texture.png.pmcmeta
{
"animation": {
"frametime": 2.5,
"width": 100,
"height": 100,
"interpolate": true,
"frames": [
{
"index": 0,"time": 70
},
0,
{
"index": 1,"time": 1
},
1,
{
"index": 2,"time": 1
},
2,
{
"index": 3,"time": 1
},
3,
{
"index": 4,"time": 1
},
4,
{
"index": 5,"time": 1
},
5,
{
"index": 6,"time": 1
},
6,
{
"index": 7,"time": 1
}
]
}
}Scaling Options in MCMeta & Custom Tooltip Example
Minecraft allows to add new tooltips through the tooltip_style component, for example you need to create two textures with a prefix similar to <name>_background and <name>_frame
📦resource_pack.zip
└── 📁assets
└── 📁minecraft
└── 📁textures
└── 📁gui
└── 📁sprites
└── 📁tooltip
├── 🎨awesome_background.png
├── 📝awesome_background.png.mcmeta
├── 🎨awesome_frame.png
└── 📝awesome_frame.png.mcmeta
Existing types of scaling
stretch
default method
tile
the sprite is repeated across the desired space, starting from the top-left.
nine_slice
the sprite is sliced into 4 corners, 4 edges, and 1 center slice, which is tiled across the desired space.
More scaling options
width
The width of the sprite, in pixels.
height
The height of the sprite, in pixels.
border
An array of chThe size in pixels that the border slices should cover on-screen
stretch_inner
the stretch_inner option means whether the texture will be stretched or not, to avoid mixels or something like that deactivate it
awesome_background.png.mcmeta
{
"gui": {
"scaling": {
"type": "nine_slice",
"width": 100,
"height": 100,
"border": 9
}
}
}awesome_frame.png.mcmeta
{
"gui": {
"scaling": {
"type": "nine_slice",
"width": 100,
"height": 100,
"border": 10,
"stretch_inner": true
}
}
}Give Custom Tooltip Command
/give @p diamond[tooltip_style='minecraft:awesome'] 1
GUI Routes
Examples made in 1.21.4
📦resource_pack.zip
└── 📁assets
└── 📁minecraft
└── 📁textures
└── 📁gui
├── 📁advancements
│ ├── 📁backgrounds
│ │ └── 🎨<textures>
│ └── 🎨<textures>
├── 📁container
│ ├── 📁creative_inventory
│ │ └── 🎨<textures>
│ └── 🎨<textures>
├── 📁hanging_signs
│ └── 🎨<textures>
├── 📁presets
│ └── 🎨<textures>
├── 📁realms
│ └── 🎨<textures>
├── 📁sprites
│ ├── 📁advancements
│ │ └── 🎨<textures>
│ ├── 📁boss_bar
│ │ └── 🎨<textures>
│ ├── 📁container
│ │ ├── 📁anvil
│ │ │ └── 🎨<textures>
│ │ ├── 📁beacon
│ │ │ └── 🎨<textures>
│ │ ├── 📁blast_furnace
│ │ │ └── 🎨<textures>
│ │ ├── 📁brewing_stand
│ │ │ └── 🎨<textures>
│ │ ├── 📁bundle
│ │ │ └── 🎨<textures>
│ │ ├── 📁cartography_table
│ │ │ └── 🎨<textures>
│ │ ├── 📁crafter
│ │ │ └── 🎨<textures>
│ │ ├── 📁creative_inventory
│ │ │ └── 🎨<textures>
│ │ ├── 📁enchanting_table
│ │ │ └── 🎨<textures>
│ │ ├── 📁furnace
│ │ │ └── 🎨<textures>
│ │ ├── 📁grindstone
│ │ │ └── 🎨<textures>
│ │ ├── 📁horse
│ │ │ └── 🎨<textures>
│ │ ├── 📁inventory
│ │ │ └── 🎨<textures>
│ │ ├── 📁loom
│ │ │ └── 🎨<textures>
│ │ ├── 📁slot
│ │ │ └── 🎨<textures>
│ │ ├── 📁smithing
│ │ │ └── 🎨<textures>
│ │ ├── 📁smoker
│ │ │ └── 🎨<textures>
│ │ ├── 📁stonecutter
│ │ │ └── 🎨<textures>
│ │ ├── 📁villager
│ │ │ └── 🎨<textures>
│ │ └── 🎨<textures>
│ ├── 📁gamemode_switcher
│ │ └── 🎨<textures>
│ ├── 📁hud
│ │ ├── 📁heart
│ │ │ └── 🎨<textures>
│ │ └── 🎨<textures>
│ ├── 📁icon
│ │ └── 🎨<textures>
│ ├── 📁notification
│ │ └── 🎨<textures>
│ ├── 📁pending_invite
│ │ └── 🎨<textures>
│ ├── 📁player_list
│ │ └── 🎨<textures>
│ ├── 📁popup
│ │ └── 🎨<textures>
│ ├── 📁realm_status
│ │ └── 🎨<textures>
│ ├── 📁recipe_book
│ │ └── 🎨<textures>
│ ├── 📁server_list
│ │ └── 🎨<textures>
│ ├── 📁social_interactions
│ │ └── 🎨<textures>
│ ├── 📁spectator
│ │ └── 🎨<textures>
│ ├── 📁statistics
│ │ └── 🎨<textures>
│ ├── 📁toast
│ │ └── 🎨<textures>
│ ├── 📁tooltip
│ │ └── 🎨<textures>
│ ├── 📁transferable_list
│ │ └── 🎨<textures>
│ ├── 📁widget
│ │ └── 🎨<textures>
│ └── 📁world_list
│ └── 🎨<textures>
├── 📁title
│ ├── 📁background
│ │ └── 🎨<textures>
│ └── 🎨<textures>
└── 🎨<textures>Last updated