Resource pack

The resource pack system is an API which provides a way for players to further customize their Minecraft experience. Resource packs allow players to customize textures, models, music, sounds, language files, end credits, splashes, and fonts without any code modification.

Behavior


Resource packs can be placed in the folder  within the   folder. Each resource pack is either a sub-folder or a  file within the   folder. After it is in the folder, a resource pack can be added from the options menu, where resource packs can be moved between "Available resource packs" and "Selected resource packs". "Selected resource packs" will also contain the default assets on the bottom, which cannot be removed.

Resource packs will load their assets based on the order of the packs on the list. The bottom most pack (which is always "Default") will load first, then each pack placed above it will replace assets of the same name with its assets.

Default resource packs
A resource pack can be bundled with a map by saving it under the name  and placing it directly in the map's folder. When playing the world, that resource pack will appear as the default right above the default resource pack.

A default resource pack can also be set on a server by changing adding a link to a  file download after the line   in the server properties file. Users can still opt out of using the resource pack or choose not to download it though.

Contents
A resource pack is identified by Minecraft based on the presence of the file  in the root directory, which contains data in JSON format.


 * The root tag
 * Holds the resource pack information
 * Pack version. Should be
 * Text that will be shown below the pack name in the resource pack menu. The text will be shown on two lines, and if too long extra text will be cut off.
 * Contains additional languages to add to the language menu
 * Language code for a language, corresponding to a  file with the same name in the folder
 * The full name of the language
 * The country or region name
 * If true, the language reads right to left.

The root directory also contains an optional image called, which will show as the thumbnail for the pack on the resource pack selection menu.

Language
Resource packs can create language files of the type  in the folder. Each file will either replace information from a file of the same name in the default or a lower pack, or it will create a new language as defined by. Language files only need to set names that are actually changed by the pack, any names that are unset will be loaded from the pack below, or default if no pack changes the names.

Models
Models are files in JSON format with the extension, which determine the shape and textures of blocks and items.

Blocks use a block state file from  to determine which model is loaded for each variant. Meanwhile, each item has an item model to determine its model, which either loads from a block's model, contains data for its own custom model, or uses the default "flat" or "entity" model.

Models and block states used in packs below the top one will still be loaded unless overridden in the top pack, which may cause some textures and models used by the top pack to no longer be loaded.

Sounds
Resource packs load additional sounds with the file type of. Each sound placed in the pack will override the sounds from packs below, and packs also contain a file called  which is placed within. Unlike most other files in resource packs,  will merge sound information from packs below the top pack, rather than each   file overriding the previous completely.

Textures


For block or item textures to function, they must have equal width and height (or height that is a multiple of the width if animated); otherwise it will display as a purple and black checkerboard. For most other textures, the file will simply be stretched to fit the required dimensions.

Most solid blocks will turn any transparent area fully opaque. The rest of the blocks, along with most entity textures will allow clear areas of the texture. All items and any blocks or entities which are semi-transparent by default support semi-transparency.

If a file does not exist in any resource pack, including the default, it will display as a purple and black checkerboard.

Animation
Block and item textures support animation by placing each additional frame below the last. The animation is then controlled using using a  file in JSON format with the same name in the same directory. For example, the  file for   would be.


 * The root tag
 * Contains data for the animation
 * If true, Minecraft will generate additional frames between frames with a frame time greater than 1 between them. Defaults to.
 * Sets the default time for each frame in increments of one game tick. Defaults to.
 * Contains a list of frames. Defaults to displaying all the frames from top to bottom.
 * A number corresponding to position of a frame from the top, with the top frame being 0
 * Specifies a frame with additional data
 * A number corresponding to position of a frame from the top, with the top frame being 0
 * The time in ticks to show this frame, overriding "frametime" above.

If the  file does not exist in the pack and the texture does, the game will assume the texture is not animated, rather than loading a   file from a pack below that pack. If no  file exists for a texture with unequal dimensions, the texture will appear as a purple and black checkerboard.

Fonts
Font files contain a grid of white characters, which are automatically colored by Minecraft as needed in game. The character sizes are automatically determined based on the last line of pixels containing any alpha value. Due to the way fonts are detected, filling the background of a character with a color containing a 1% alpha background will cause the full width to render without having a visible background to the character.

Properties
Textures from  support a  file in JSON format containing additional effects to apply to the texture. The file is contained in the same directory as the texture, and have the same name as the texture, except appended with. For example, the file  can have a properties file call


 * The root tag
 * Contains data for the texture
 * Causes the texture to blur when viewed from close up. Defaults to
 * Causes the texture to stretch instead of tiling in cases where it otherwise would, such as on the shadow. Defaults to

If the  file does not exist in the pack and the texture does, the game will load the default settings, rather than loading a    file from a pack below that pack.

Texts
Three  files in UTF-8 format exist in   which are used by the game to determine the text to display.

The file  contains the text of the end poem, using formatting codes to apply the colors to the two speakers, and with the test   being replaced with the player's name. After that file is shown, the contents of  will be shown.

The file  contains lines of text separated using line breaks to determine the splashes to display in game. Any of the splashes can be replaced with different text, which will then be used in place of that splash in game.

Trivia

 * The animation properties files also contain additional "width:" and "height:" tags used to determine the size of a tile in pixels, but they have no effect in vanilla and are only used by some mod textures.