{{about|the system to customize assets|other uses|Texture Pack (disambiguation)}}
{{relevant tutorial|Creating a resource pack|Loading a resource pack}}

[[File:TexturesComparison.png|thumb|right|350px|The default textures on the left side, and a custom resource pack ([https://modrinth.com/resourcepack/rodrigos-pack/ Rodrigo's Pack 8x8]) on the right.]]

The '''resource pack''' system provides a way for players to customize textures, [[model]]s, [[music]], [[sound]]s, [[language]]s, texts such as the [[end poem]], [[splash]]es, [[Credit sequence|credits]], and fonts without any code modification. They are often used together with [[data pack]]s to add new content to the game.

== ''Java Edition'' ==

=== Behavior ===

[[File:Select resource pack.png|thumb|The default resource pack settings.]]
Each resource pack is either a directory or a [[wikipedia:ZIP (file format)|ZIP archive]] (with {{code|.zip}} extension). Resource packs can be added by placing them in the {{file|directory|resourcepacks|inline=1}} directory within {{file|directory|[[.minecraft]]|inline=1}}, or by dragging and dropping onto the "Select Resource Packs" screen, which copies them there automatically. Resource packs present in the directory can then be managed from the [[options]], where they can be moved between "Available" (disabled) and "Selected" (enabled), and reordered.

Resource packs load their assets based on the order they appear in on the "Selected" list. The bottom-most pack loads first, then each pack above it replaces or merges loaded assets with ones it contains.

==== Built-in resource packs ====

There are currently three resource packs that are included as part of the game.

{| class="wikitable"
|-
! Pack name !! Pack description !! Description
|-
| [[File:Default pack.png|32px]] Default || The default look and feel of Minecraft (built-in) || Selected by default, can't be unselected, always at the lowest priority.
|-
| [[File:Programmer Art pack.png|32px]] Programmer Art || The classic look of Minecraft (built-in) || The old (pre-[[Java Edition 1.14|1.14]]) textures. They are not updated when the game receives new textures.
|-
| [[File:HC pack.png|32px]] High Contrast || Enhances the UI contrast of Minecraft (built-in) ||Increases the contrast of menu GUIs.
|}

==== Preloaded resource packs ====

A ZIP archive resource pack can be bundled with a [[world]] by placing it in the world directory under the name {{code|resources.zip}}. When playing the world, that resource pack appears as the default right above the default resource pack.

A resource pack can be set on a server by setting {{code|resource-pack}} to an HTTP(S) URL pointing to a ZIP archive resource pack in [[server.properties]]. Players then can choose if they want to download the resource pack or not when joining. Players can also be forced to accept the resource pack by setting {{code|resource-pack-required{{=}}true}}. Rejecting the resource pack disconnects the player from the server.

There is no way to force the use of a resource pack in a realm.{{needs testing}}

=== Directory structure ===
Resource packs in ''Java Edition'' have the following directory structure:

<div class="treeview">
*{{File|directory|''name''}} or {{File|archive|''name''.zip}}
**{{File|file|[[pack.mcmeta]]}}
**{{File|file|pack.png}}
**{{File|directory|assets}}
***{{File|directory|minecraft}}
****{{File|directory|atlases}}
*****{{File|file|''atlases''.txt}}
****{{File|directory|blockstates}}
*****{{File|file|''blockstate''.json}}
****{{File|directory|equipment}}
*****{{File|file|''equipment''.json}}
****{{File|directory|font}}
*****{{File|directory|include}}
*****{{File|file|''font''.json}}
****{{File|directory|items}}
*****{{File|file|''item''.json}}
****{{File|directory|lang}}
*****{{File|file|''lang''.json}}
****{{File|directory|models}}
*****{{File|directory|block}}
******{{File|file|''texture''.json}}
*****{{File|directory|item}}
******{{File|file|''texture''.json}}
****{{File|directory|particles}}
*****{{File|file|''particle''.json}}
****{{File|directory|post_effect}}
*****{{File|file|''post_effect''.json}}
****{{File|directory|shaders}}
*****{{File|directory|core}}
*****{{File|directory|include}}
*****{{File|directory|post}}
****{{File|directory|texts}}
*****{{File|file|''text''.txt}}
****{{File|directory|textures}}
*****{{File|directory|block}}
******{{File|file|''texture''.png}}
******{{File|file|''texture''.png.mcmeta}}
*****{{File|directory|colormap}}
******{{File|file|foliage.png}}
******{{File|file|grass.png}}
*****{{File|directory|effect}}
******{{File|file|dither.png}}
*****{{File|directory|entity}}
******{{File|file|''texture''.png}}
******{{File|directory|''entity_type''}}
*******{{File|file|''texture''.png}}
*****{{File|directory|environment}}
******{{File|file|''texture''.png}}
*****{{File|directory|font}}
******{{File|file|''texture''.png}}
*****{{File|directory|gui}}
******{{File|file|''texture''.png}}
******{{File|directory|''entity_type''}}
*******{{File|file|''texture''.png}}
*****{{File|directory|item}}
******{{File|file|''texture''.png}}
*****{{File|directory|map}}
******{{File|file|''texture''.png}}
******{{File|directory|decorations}}
*******{{File|file|''texture''.png}}
*****{{File|directory|misc}}
******{{File|file|''texture''.png}}
******{{File|file|''texture''.png.mcmeta}}
*****{{File|directory|mob_effect}}
******{{File|file|''texture''.png}}
*****{{File|directory|painting}}
******{{File|file|''texture''.png}}
*****{{File|directory|particle}}
******{{File|file|''texture''.png}}
******{{File|file|''texture''.png.mcmeta}}
*****{{File|directory|trims}}
******{{File|directory|color_palettes}}
*******{{File|file|''color_palette''.png}}
******{{File|directory|entity}}
*******{{File|directory|humanoid}}
********{{File|file|trims.png}}
*******{{File|directory|humanoid_leggings}}
********{{File|file|trims.png}}
******{{File|directory|items}}
*******{{File|file|trims.png}}
****{{File|file|gpu_warnlist.json}}
****{{File|file|regional_compliancies.json}}
***{{File|file|.mcassetsroot}}
</div>

More than one directory for different namespaces may exist under the {{file|directory|assets|inline=1}} directory.


=== Contents ===
A resource pack is identified by ''Minecraft'' based on the presence of {{file|file|[[pack.mcmeta]]|inline=1}} in the root directory.

The root directory also contains an optional [[wikipedia:PNG|PNG]] image called {{file|file|pack.png|inline=1}}, which appears as the thumbnail for the pack on the resource pack selection menu.

==== Language ====

Language files are [[JSON]] files, which contain text data translated to different [[languages]]. They are located in {{file|directory|assets/''[[namespace]]''/lang|inline=1}} and named {{file|file|''language code''.json|inline=1}}. Languages other than default can be defined in {{file|file|pack.mcmeta|inline=1}}.

<div class="treeview">
* {{Nbt|compound}} The root object.
** {{Nbt|string|''ID''}}: Displayed translation for the text ''ID''.
</div>

A language file consists of an object containing ID and translation pairs. The ID uniquely identifies any translatable text in the game, and the translation is displayed as that text when the language is selected. For example, {{code|block.minecraft.stone}} is the ID of the text used for the name of the [[stone]] block, and it's translation in the {{code|en_us}} language is {{code|Stone}}.

Language files are merged with other selected packs, so any names that are not present are loaded from packs of lesser priority.

==== Models ====
{{main|Model}}

Model files are JSON files with the extension {{code|.json}}, which determine the shape and textures of blocks and items.

Blocks use a block state file from {{file|directory|assets/minecraft/blockstates|inline=1}} to determine which model is loaded for each variant from {{file|directory|assets/minecraft/models/block|inline=1}}. Similarly, item models are determined from a file in {{file|directory|assets/minecraft/items|inline=1}}, and models are stored in {{file|directory|assets/minecraft/models/item|inline=1}}. An item model can load from a block's model, contain data for its own custom model, or use the default "flat" or "entity" model. 

Models and block states used in packs below the top one are still 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 ====

Sound files are [[wikipedia:Vorbis|Ogg Vorbis]] audio files (with the extension {{code|.ogg}}), which provide audio such as music and sound effects for the game.

{{Code|sounds.json}} is a JSON file, which defines how sound files are used in game. This file is merged with other selected resource packs instead of being overriden.

==== Textures ====
[[File:Missing Model.png|thumb|The "missing model" for invalid or missing models, prominently using the black and magenta "missing texture".]]

Textures are image files in PNG format, which provide images to be used as textures for models such as items, blocks and mobs.

For block or item textures to function, they must have equal width and height (or height that is a multiple of the width if [[#Texture animation|animated]]); otherwise it appears as a magenta and black checkerboard. For most other textures, the file is stretched to fit the required dimensions.

Most solid blocks turn any transparent area fully opaque. Some other blocks, which have "cutout" transparency (like glass) turn all pixels that are less than 10% opaque fully transparent and all other pixels completely opaque. Every other block renders textures with semi-transparency as-is. All items and any blocks or entities that are semi-transparent by default support semi-transparency.

If a texture does not exist in any resource pack, including the default, the [[missing texture]] appears in its place. As of 1.19.1, six such cases exist in the vanilla resource pack, all particle-related.

==== Atlases ====
{{Main|Atlas}}

Atlas files are configuration files, located in {{file|directory|atlases|inline=1}}, that control which textures are included in the atlases.

==== Texture animation ====
Block, item, particle, painting, item frame, and status effect icon{{verify|is this all that is possible as of 1.21.3?}} ({{file|directory|assets/minecraft/textures/mob_effect|inline=1}}) textures support animation by placing each additional frame below the last. The properties of the animation are then controlled by placing a file in JSON format named like the texture file, but with {{code|.mcmeta}} suffix. For example, the animation properties file for {{code|stone.png}} would be {{code|stone.png.mcmeta}}.

<div class="treeview">
*{{nbt|compound}} The root tag 
**{{nbt|compound|animation}}: Contains data for the animation
***{{nbt|boolean|interpolate}}: If true, ''Minecraft'' generates additional frames between frames with a frame time greater than 1 between them. Defaults to {{code|false}}.
***{{nbt|int|width}}: The width of the sprite, in pixels.<!--Dinnerbone originally stated it was in pixels, but later corrected himself on IRC--> This is unused in vanilla's files but can be used by resource packs to have frames that are not perfect squares. Defaults to the image's width if "height" is defined, and the smaller of the image's dimensions if it's not.
***{{nbt|int|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.
***{{nbt|int|frametime}}: Sets the default time for each frame in increments of one game tick. Defaults to {{code|1}}.
***{{nbt|list|frames}}: Contains a list of frames. Defaults to displaying all the frames from top to bottom.
****{{nbt|int}} A number corresponding to position of a frame from the top, with the top frame being 0.
****{{nbt|compound}} A frame specifies a frame with additional data.
*****{{nbt|int|index}}: A number corresponding to position of a frame from the top, with the top frame being 0.
*****{{nbt|int|time}}: The time in ticks to show this frame, overriding "frametime" above.
</div>

If the animation properties file does not exist in the pack and the texture does, the game assumes the texture is not animated. If no {{code|.mcmeta}} file exists for a texture with unequal dimensions, the texture appears as a purple and black checkerboard.

By defining "width", the frames can be placed side-by-side, and by defining both "width" and "height", they can be arranged as a table. In this case, they will be ordered row by row, top to bottom, left to right.

==== Villagers ====
Textures from {{code|assets/minecraft/textures/entity/villager}} and {{code|assets/minecraft/textures/entity/zombie_villager}} support a {{code|.mcmeta}} file in JSON format containing additional effects to apply to the hat layer. The file is contained in the same directory as the texture, and has the same name as the texture, except appended with {{code|.mcmeta}}. For example, the file {{code|profession/farmer.png}} can have a properties file called {{code|profession/farmer.png.mcmeta}}

<div class="treeview">
*{{nbt|compound}} The root tag 
**{{nbt|compound|villager}}: Contains data for the texture
***{{nbt|string|hat}}: Can be {{code|full}}, {{code|partial}}, or default (no {{code|.mcmeta}} file). Determines whether the villager's 'profession' hat layer should allow the 'type' hat layer to render or not. {{More info|What does each do exactly?}}
</div>

If the {{code|.mcmeta}} file does not exist in the pack and the texture does, the game loads the default settings, rather than loading a {{code|.mcmeta}} file from a pack below that pack.

==== GUI ==== 
Textures from {{code|assets/minecraft/textures/gui/sprites}} support a {{code|.mcmeta}} file in JSON format containing scaling behavior of the texture. For example, the file {{code|button.png}} can have a properties file called {{code|button.png.mcmeta}}

<div class="treeview">
* {{nbt|compound}} The root tag 
** {{nbt|compound|gui}}: Contains data for the texture
*** {{nbt|compound|scaling}}: Scaling behavior of the texture.
**** {{nbt|string|type}}: Can be {{code|stretch}} (default), {{code|tile}}, or {{code|nine_slice}}. Determines the type of scaling method of the texture. 
***** When {{Code|tile}}, the sprite is repeated across the desired space, starting from the top-left.
***** When {{Code|nine_slice}}, the sprite is sliced into ''4 corners'', ''4 edges'', and ''1 center slice'', which is tiled across the desired space.<ref>snapshot description https://www.minecraft.net/it-it/article/minecraft-snapshot-23w31a</ref>
**** {{nbt|int|width}}: Number of pixels for this sprite to cover on-screen across its width. Required if {{nbt|string|type}} is set to <code>tile</code> or <code>nine_slice</code>.
**** {{nbt|int|height}}: Number of pixels for this sprite to cover on-screen across its height. Required if {{nbt|string|type}} is set to <code>tile</code> or <code>nine_slice</code>.
**** {{nbt|boolean|stretch_inner}}: If true, the inner parts of the texture is stretched instead of tiled. Defaults to {{code|false}}. Required if {{nbt|string|type}} is set to <code>nine_slice</code>.
**** {{nbt|int|border}}: The size in pixels that the border slices should cover on-screen. Required if {{nbt|string|type}} is set to <code>nine_slice</code>.
**** {{nbt|compound|border}}: The size in pixels that the border slices should cover on-screen, respectively. Required if {{nbt|string|type}} is set to <code>nine_slice</code>.
***** {{nbt|int|left}}: Number of pixels of the left border.
***** {{nbt|int|top}}: Number of pixels of the top border.
***** {{nbt|int|right}}: Number of pixels of the right border.
***** {{nbt|int|bottom}}: Number of pixels of the bottom border.
</div>

==== Colormaps ====
Colormaps are 256×256 pixel images that tell the game which color to use in each biome. They are located in {{code|assets/minecraft/textures/colormap}}. The game contains two colormaps: {{code|foliage.png}} colors plants such as [[leaves]] (except birch and spruce) and [[vines]], and {{code|grass.png}} colors [[grass]] and [[grass blocks]]. Colormaps can be disabled on individual blocks by removing the {{code|tintindex}} tag from the block model.

==== Properties ====
Textures from {{code|assets/minecraft/textures/misc}}{{verify|are textures elsewhere supported? I tested this for the pause menu background and it seemed to work}} support a {{code|.mcmeta}} file in JSON format containing additional effects to apply to the texture. The file is contained in the same directory as the texture, and has the same name as the texture, except appended with {{code|.mcmeta}}. For example, the file {{code|pumpkinblur.png}} can have a properties file called {{code|pumpkinblur.png.mcmeta}}

<div class="treeview">
*{{nbt|compound}} The root tag 
**{{nbt|compound|texture}}: Contains data for the texture
***{{nbt|boolean|blur}}: Causes the texture to blur when viewed from close up. Defaults to {{code|false}}
***{{nbt|boolean|clamp}}: Causes the texture to stretch instead of tiling in cases where it otherwise would, such as on the shadow. Defaults to {{code|false}}
***{{nbt|int-array|mipmaps}}: Custom mipmap values for the texture
</div>

If the {{code|.mcmeta}} file does not exist in the pack and the texture does, the game loads the default settings, rather than loading a {{code|.mcmeta}} file from a pack below that pack.

==== Texts ====
Two text files in UTF-8 format and one JSON file exist in {{file|directory|assets/minecraft/texts|inline=1}}. They are used to display specific untranslated text.

The file {{file|file|end.txt|inline=1}} contains the text of the end poem, using [[formatting codes]] to apply the colors to the two speakers, and with the text {{code|PLAYERNAME}} being replaced with the player's name. After that file is shown, credits based on contents of {{file|file|credits.json|inline=1}} are shown.{{info needed|Please add the format description of credits.json}}

The file {{file|file|splashes.txt|inline=1}} contains texts separated by LF line breaks used as [[splash]]es.

==== Fonts ====
{{Main|Font}}

A font file is a JSON file located at {{file|directory|assets/''namespace''/font|inline=1}} within a resource pack and contains a list of providers that each define how different characters appear. The default font is defined by the font {{code|minecraft:default}} while the default font used by enchantment tables is defined by the font {{code|minecraft:alt}}.

The [[resource location]]s referenced in font providers should also include the file extensions, as there is no sole file extension used throughout.

<div class="treeview">
*{{nbt|compound}} The root tag.
**{{nbt|list|providers}}: A list of providers that make up this font.
***{{nbt|compound}} A font provider. The contents depend on the value of that provider's {{code|"type"}} tag.
****{{nbt|string|type}}: The type of the font provider. Can be one of the following:
*****''bitmap'': A bitmap font.
******{{nbt|string|file}}: The resource location of the used file, starting from {{code|assets/minecraft/textures}} by default. Prefacing the location with {{code|<namespace>:}} changes the location to {{code|assets/<namespace>/textures}}.
******{{nbt|int|height}}: Optional. The height of the character, measured in pixels. Can be negative. This tag is separate from the area used in the source texture and just re-scales the displayed result. Default is 8.
******{{nbt|int|ascent}}: The ascent of the character, measured in pixels. This value adds a vertical shift to the displayed result.
******{{nbt|list|chars}}: A list of strings containing the characters replaced by this provider, as well as their order within the texture. All elements must describe the same number of characters. The texture is split into one equally sized row for each element of this list. Each row is split into one equally sized character for each character within one list element.
*****'''legacy_unicode''' (removed): A legacy unicode font. This format is deprecated, prioritized only when the "Force Unicode Font" option is turned on.
******{{nbt|string|sizes}}: The resource location of a binary file describing the horizontal start and end positions for each character from 0 to 15. The file extension of the target file should be {{code|.bin}}. The resource location path is relative to the namespace root.
******{{nbt|string|template}}: The resource location inside {{code|assets/<namespace>/textures}} that leads to the texture files that should be used for this provider. The game replaces {{code|%s}} from the value of this tag with the first two characters of the hex code of the replaced characters, so a single provider of this type can point into multiple texture files.
*****'''ttf''': A [[wikipedia:TrueType|TrueType font]] or [[wikipedia:OpenType|OpenType font]]. Despite its name, it supports both TTF and OTF.
******{{nbt|string|file}}: The resource location of the TrueType/OpenType font file within {{code|assets/<namespace>/font}}.
******{{nbt|list|shift}}: The distance by which the characters of this provider are shifted.
*******{{nbt|float}} Left shift, negative values are allowed.
*******{{nbt|float}} Downward shift, negative values are allowed.
******{{nbt|float|size}}: Font size to render at.
******{{nbt|float|oversample}}: Resolution to render at, increasing anti-aliasing factor.
******{{nbt|string|skip}}: String of characters or array of characters to exclude.
*****'''space''': Show chosen characters as spaces.
******{{nbt|compound|advances}}
*******{{nbt|float|''character''}}: The amount of pixels the character is moved to the right. Can be negative. Decimal numbers can be used for precise movement on higher GUI scales.
*****'''unihex''': Replacement for legacy_unicode. Uses the [[wikipedia:GNU_Unifont#.hex_format|GNU Unifont .hex]] format.
******{{nbt|string|hex_file}}: Path to a ZIP archive containing one or more *.hex files at the root (files in ZIP archive with different extensions are ignored). Does not walk recursively inside archive.
******{{nbt|list|size_overrides}}: List of compounds that contain character ranges that should have widths different than auto-detected.
*******{{nbt|compound}} A size override.
********{{nbt|string|from}}: 1-character wide string of the character to start override range at. Inclusive.
********{{nbt|string|to}}: 1-character wide string of the character to end override range at. Inclusive.
********{{nbt|int|left}}: Position of left-most column of glyphs in override range.
********{{nbt|int|right}}: Position of right-most column of glyphs in override range.
*****'''reference''': Links to another font file to be copied and included in this font. Guarantees the referenced provider is loaded only once. Inclusion is performed after all fonts are loaded.
******{{nbt|string|id}}: [[Resource location]] to another font provider.
</div>

All font providers also have an optional {{nbt|compound|filter}} object.
<div class="treeview">
*{{nbt|compound|filter}}: An object defining when this provider is active. When the button's state and filter's state are equal, that provider is included.
**{{nbt|bool|uniform}}: Linked to "Force Uniform" button.
**{{nbt|bool|jp}}: Linked to "Japanese Glyph Variants" button.
</div>

==== Texture sheets ====
{{main|Texture atlas/Predefined}}
Minecraft generally does not store multiple different textures on sheets and instead stores them on separate files. The only current exceptions are [[experience orb]]s and [[moon]] phases.<ref>https://feedback.minecraft.net/hc/en-us/community/posts/360058097892-Split-up-the-experience-orb-texture-file-into-individual-sprites</ref>

==== Shaders ====
{{main|Shaders}}

Shaders are a way for resource packs to change how the game is rendered. They are written in OpenGL Shading Language (GLSL).

==== Regional compliancies warnings ====
Regional compliancies warnings can be customized in {{file|file|assets/''[[namespace]]''/regional_compliancies.json|inline=1}}.

<div class="treeview"> 
*{{nbt|compound}} The root tag
**{{nbt|list|''Region''}}: Contains a list of warnings. Note that the key itself is an {{wikipedia|ISO 3166-1 alpha-3}} region code determined by the device's locale setting.  
***{{nbt|int|delay}}: Optional. Defines how long should the game wait until showing this message in minutes. This can not be zero.
***{{nbt|int|period}}: The time interval this message should be shown in minutes. This can not be zero.
***{{nbt|string|title}}: The translation identifier of the title of the message. A slot is provided for the translation string, containing how many times this warning has been shown.
***{{nbt|string|message}}: The translation identifier of the message. A slot is provided for the translation string, how many times this warning has been shown.
</div>

== ''Bedrock Edition'' ==
{{stub section}}

=== Behavior ===
Similarly to [[skin]]s, resource packs can be bought or made {{in|be}}. Users can download resource packs on the system itself with the {{cd|.mcpack}} file names, if the game platform allows file importation. When these files are opened, they are automatically imported into the game without any need for file system access. Resource packs can also be put manually in the {{code|resource_packs}} or {{code|development_resource_packs}} folder in the {{code|[[com.mojang]]}} folder. Each resource pack must either be a sub-folder or a {{code|.zip}} file.

Resource packs can be applied on the Global Resources option from the [[settings]] menu from the main menu screen. Resource packs can be moved between "Active" and "My Packs". "Active" also contains the default assets at the bottom, and cannot be removed.

Resource packs load their assets based on the order of the packs on the list. The bottom-most pack loads first, then each pack placed above it replaces assets of the same name with its assets.

Resource packs cannot be edited unless put into the {{code|development_resource_packs}} folder, and will update themselves when joining a world or changing your active resource packs.

==== Default packs ====
One or more resource packs can be bundled with a world in the world settings. When playing the world, that resource pack appears as the default right above the default resource pack. A resource pack can be set on a server by bundling the resource pack in the world, and then re-uploading the world folder to the server. Users then have an option whether to use the resource pack or not if the {{cd|texturepack-required}} option is disabled in the [[server.properties|server settings]] and if the world has the "Require players to accept resource packs to join" option disabled. Resource packs can also be forced on a server by using the {{code|texturepack-required{{=}}true}} property on the [[server.properties|server settings]].

=== Folder Structure ===
Resource packs in ''Bedrock Edition'' use the following folder structure:

<div class="treeview">
*''(resource pack name)''
** biomes_client.json
** blocks.json
** manifest.json
** pack_icon.png
** sounds.json
** animation_controllers
*** <entity>.animation_controllers.json
** [[animations]]
*** <entity>.animation.json
** attachables
*** <attachable>.json
** [[entities]]
*** <entity>.entity.json
** [[Fog|fogs]]
*** <biome>_fog_settings.json
** [[models]]
*** mobs.json
*** <model>.geo.json{{fn|File may be inside a folder.|name=May be inside a folder}}
** [[particles]]
*** <particle>.json
** render_controllers
*** <entity>.render_controllers.json
** [[sounds]]
*** music_definitions.json
*** sound_definitions.json
*** <sound>.fsb{{fn|File may be inside a folder.|name=May be inside a folder}}
*** <sound>.ogg{{fn|File may be inside a folder.|name=May be inside a folder}}
*** <sound>.wav{{fn|File may be inside a folder.|name=May be inside a folder}}
*** <sound>.mp3{{fn|File may be inside a folder.|name=May be inside a folder}}{{fn|.mp3 files aren't fully supported.}}
** texts
*** languages.json
*** language_names.json
*** <languagecode>_<COUNTRYCODE>.lang
*** <languagecode>_<COUNTRYCODE>{{fn|For languages using a different font.}}
**** font{{fn|Folder may be at the root of the resoursepack instead of in the texts folder|.name=May be at root}}
***** ascii_sga.png{{fn|Deprecated?(needs confirmation)|.name=Depricated?}}
***** default8.png{{fn|Deprecated?(needs confirmation)|.name=Depricated?}}
***** font_metadata.json{{fn|Existence confirmed, purpose unknown|.name Usage unknown at this time}}
***** glyph_<<span></span>code>.png
** texture_sets{{fn|Unused.}}
** [[textures]]
*** flipbook_textures.json
*** item_texture.json
*** terrain_texture.json
*** <texture>.png{{fn|File may be inside a folder.|name=May be inside a folder}}
*** <texture>.tga{{fn|File may be inside a folder.|name=May be inside a folder}}
** [[UI|ui]]
*** <ui>.json{{fn|File may be inside a folder.|name=May be inside a folder}}
</div>

{{fnlist}}

== History ==
{{for|the history of resource pack format numbers specifically|Pack format#List of resource pack formats}}
{{HistoryTable
|{{HistoryLine|java}}
|{{HistoryLine||1.6.1|dev=13w24a|Added resource packs, replacing the functionality of [[texture pack]]s.
|[https://web.archive.org/web/20211215093936if_/http://s3.amazonaws.com/Minecraft.Download/utilities/TextureEnder.jar Minecraft Texture Ender] is available from Mojang to automatically convert 1.5 compatible texture packs to resource packs. See [[Java Edition 1.6.1/Resource pack changes]] for the list of file names changed.}}
|{{HistoryLine||1.6.2|dev=reupload|slink=Java Edition 1.6.2#Reuploads|Fixed distorted font when HD font is used.<ref>{{bug|MC-17673||Distorted fonts when using a converted texturepack on startup|Fixed}}</ref>}}
|{{HistoryLine||1.7.2|dev=13w36a|Added the ability to apply multiple resource packs at once.
|Servers can now recommend a default resource pack via the server-side resource packs system.<ref>{{Bug|MC-18569||Server resourcepacks not implemented yet|Fixed}}</ref><ref>https://mcupdate.tumblr.com/post/65040832258/minecraft-172</ref>}}
|{{HistoryLine|||dev=13w42a|Moved files from {{cd|assets/minecraft/music}} to {{cd|assets/minecraft/sounds/music}} and files from {{cd|assets/minecraft/sound}} to {{cd|assets/minecraft/sounds}}.}}
|{{HistoryLine||1.7.4|dev=13w47a|The {{code|description}} value of {{code|pack.mcmeta}} can now be [[raw JSON text format]].}}
|{{HistoryLine|||dev=13w48a|Removed the ability to change the Mojang logo.}}
|{{HistoryLine||1.8|dev=14w06a|Added the ability to change the [[block models]].}}
|{{HistoryLine|||dev=14w07a|Resource packs can now be bundled with a map.}}
|{{HistoryLine|||dev=14w25a|The model format now supports custom item models.
|Textures can now be specified for blocks and items.
|Added the {{cd|interpolate}} tag for animations.}}
|{{HistoryLine||1.8.8|dev=pre|Resource packs now display an error if the format number is wrong. At this time, it requires a format number of {{cd|1}}.}}
|{{HistoryLine||1.9|dev=15w31a|Changed format number to {{cd|2}}, due to changes in the [[model]] system, such as [[Model#Item tags|item tags]], [[Model#Block states|multipart]], and changes to display tags.
|Using resource packs with outdated display tags causes the models to seem abnormally up-scaled and the wielded block cannot be rotated in the hand, along with blocks in the inventory replaced with a 2D texture. This is similar to what happens when a model has no display tags. See [https://web.archive.org/web/20190710004554/http://i.imgur.com/7wilQfO.png here] for an example.}}
|{{HistoryLine||1.11|dev=16w32a|Resource packs version number changed to {{cd|3}}, due to the change that all files should have lowercase letters.}}
|{{HistoryLine||1.13|dev=17w43a|The default resource pack can now be moved up and down, just like other resource packs.}}
|{{HistoryLine|||dev=17w48a|Changed format number to {{cd|4}}, due to ''[[The Flattening]]''. See [[Java Edition 1.13/Resource pack changes]] for the list of file names changed.}}
|{{HistoryLine|||dev=pre7|Several punctuation characters in {{code|ascii.png}} were shortened by one pixel, either vertically or horizontally. A stray pixel on the {{key|Ø}} character was also removed.}}
|{{HistoryLine|||dev=pre8|Several more punctuation characters in {{code|ascii.png}} were shortened and the {{key|@}} was lowered by one pixel.}}
|{{HistoryLine||1.14|dev=18w45a|Added "Programmer Art – The classic look of Minecraft" to the resource pack menu, due to the old textures being replaced by new ones in the ''[[Texture Update]]''.}}
|{{HistoryLine|||dev=19w06a|Significantly improved resource pack loading speed.<ref>{{tweet|Dinnerbone|1093575528794214400|It should have already affected resource pack loading! It's all the same thing internally.|February 7th, 2019}}</ref>
|[[Particles]] textures are now split into individual files.}}
|{{HistoryLine|||dev=19w07a|[[Painting]] textures are now split into individual files.}}
|{{HistoryLine|||dev=19w08a|[[Status effect]] textures are now split into individual files.}}
|{{HistoryLine|||dev=19w09a|Particles are now configurable.}}
|{{HistoryLine||1.15|dev=Pre-release 1|Changed format number to {{cd|5}}, due to texture mechanic changes in earlier snapshots.}}
|{{HistoryLine||1.16.2|dev=Release Candidate 1|Changed format number to {{cd|6}}, due to changes to wall blocks made in 1.16 according to {{bug|MC-197275}}.}}
|{{HistoryLine||1.17|dev=20w45a|Changed format number to {{cd|7}}.}}
|{{HistoryLine|||dev=21w05a|Improved performance when using many overrides on an item model.
|toasts.png GUI texture has a new icon for the bundle tutorial.}}
|{{HistoryLine|||dev=pre1|The file {{code|credits.txt}} in {{code|assets/minecraft/texts}} was changed to {{code|credits.json}}, and the format also changed from plain text to structured JSON format.}}
|{{HistoryLine||1.18|dev=21w37a|Added {{cd|illageralt}}, the rune-like font from ''[[Minecraft Dungeons]]'' (currently usable only via commands).}}
|{{HistoryLine|||dev=21w39a|Changed format number to {{cd|8}}, because [[inventory.png]] now contains an extra sprite for a thin-layout version of the effect list in the inventory.}}
|{{HistoryLine||1.18.2|dev=22w06a|Added {{code|assets/minecraft/regional_compliancies.json}} to control the gameplay timer and in-game notice strings as to respect the compliance requirements in South Korea. For South Korea only by default.}}
|{{HistoryLine||1.19|dev=22w11a|Changed format number to {{cd|9}}, due to new {{cd|filter}} section in pack.mcmeta.}}
|{{HistoryLine||1.19.3|dev=22w42a|Changed format number to {{cd|11}}, due to the removal of "fixers" for resource packs with format numbers {{cd|3}} and {{cd|4}}.}}
|{{HistoryLine|||dev=22w45a|Changed format number to {{cd|12}}.}}
|{{HistoryLine||1.19.4|dev=23w07a|The vanilla resource pack <code>en_us</code> language file is now sorted alphanumerically by key.}}
|{{HistoryLine|||dev=1.19.4-pre1|Added a built-in "High Contrast" resource pack that enhances the contrast of UI elements.|Changed format number to {{cd|13}}, due to the enchantment glint now being separate between entities and items.}}
|{{HistoryLine||1.20|dev=23w14a|Changed format number to {{cd|14}} due to updates to the layout of {{cd|minecraft.png}} and {{cd|invite_icon.png}}.}}
|{{HistoryLine|||dev=23w17a|Changed format number to {{cd|15}} due to updates to the font and the credits.|{{cd|uniform}} font has been updated to use Unifont 15.0.01.}}
|{{HistoryLine|||dev=Pre-release 5|{{cd|uniform}} font has been updated to use Unifont 15.0.03.}}
|{{HistoryLine||1.20.2|dev=23w31a|Changed format number to {{cd|16}}.
|The process of upgrading a pack can now be assisted by using an automated Slicer tool.<ref>https://github.com/Mojang/slicer/releases/tag/v1.1</ref>}}
|{{HistoryLine|||dev=23w32a|Changed format number to {{cd|17}}.|The text field background is now a nine-sliced sprite at <code>widget/text_field</code> and <code>widget/text_field_highlighted</code>.|The scroll bar in lists and text fields is now a nine-sliced sprite at <code>widget/scroller</code>.}}
|{{HistoryLine|||dev=1.20.2 Pre-release 2|Changed format number to {{cd|18}}.}}
|{{HistoryLine||1.20.3|dev=23w42a|Changed format number to {{cd|19}}.|Added block model, item model and block state definitions for <code>crafter</code>.|Added GUI container texture and sprites for <code>crafter</code>.|Added <code>white_smoke</code> particle definition.}}
|{{HistoryLine|||dev=23w43a|Changed format number to {{cd|20}}.|<code>bat.png</code> has been updated for the new bat model.|Added block models, items models, block state definitions  and unique sprites for new blocks.}}
|{{HistoryLine|||dev=23w45a|Changed format number to {{cd|21}}.|<code>uniform</code> font has been updated to use Unifont 15.1.04 (from 15.0.06).|The only supported texture format is now <code>.png</code>.|Added entity models and textures for experimental breeze mob {{cd|d=,|breeze|wind_charge}}.|Added shader <code>breeze_wind</code>.}}
|{{HistoryLine|||dev=Pre-Release 1|Changed format number to {{cd|22}}.|Changes to downloaded/world resource pack handling.|UI Download screen has been replaced with a toast.|World resource pack application starts together with chunk loading.|Downloaded packs are now stored in downloads directory (with different file organization than old server-resource-packs).|Downloaded packs now have unique id (GUID/UUID) that can be used to differentiate them.}}
|{{HistoryLine||1.20.5|dev=24w03a|Changed format number to {{cd|24}}.}}
|{{HistoryLine|||dev=24w05a|Changed format number to {{cd|25}}.}}
|{{HistoryLine|||dev=24w06a|Added font variant filters to font providers.|Changed format number to {{cd|26}}.}}
|{{HistoryLine|||dev=24w09a|Changed format number to {{cd|28}} due to menu GUI changes.}}
|{{HistoryLine|||dev=24w11a|Changed format number to {{cd|29}} due to menu GUI changes.}}
|{{HistoryLine|||dev=24w12a|Changed format number to {{cd|30}} due to changes to <code>map_icons.png</code>.}}
|{{HistoryLine|||dev=24w13a|Changed format number to {{cd|31}}.}}
|{{HistoryLine|||dev=1.20.5-pre4|Changed format number to {{cd|32}}.}}
|{{HistoryLine||1.21|Changed format number to {{cd|34}}.}}
|{{HistoryLine||1.21.2|dev=24w33a|Changed format number to {{cd|35}}.}}
|{{HistoryLine|||dev=24w34a|Changed format number to {{cd|36}}.}}
|{{HistoryLine|||dev=24w36a|Changed format number to {{cd|37}}.}}
|{{HistoryLine|||dev=24w37a|Changed format number to {{cd|38}}.}}
|{{HistoryLine|||dev=24w38a|Changed format number to {{cd|39}}.}}
|{{HistoryLine|||dev=24w40a|Changed format number to {{cd|40}}.}}
|{{HistoryLine|||dev=1.21.2-pre1|Changed format number to {{cd|41}}.}}
|{{HistoryLine|||dev=1.21.2-pre3|Changed format number to {{cd|42}}.}}
|{{HistoryLine||1.21.4|dev=24w44a|Changed format number to {{cd|43}}.}}
|{{HistoryLine|||dev=24w45a|Changed format number to {{cd|44}}.|Added support for [[items model definition]]s in the {{code|assets/minecraft/items}} folder.}}
|{{HistoryLine|||dev=24w46a|Changed format number to {{cd|45}}.|All blocks that previously rendered only block entity will now also render normal block model over it .}}
|{{HistoryLine|||dev=Pre-Release 1|Changed format number to {{cd|46}}.}}

|{{HistoryLine|pocket alpha}}
|{{HistoryLine||v0.15.0|dev=release|Added the first custom in-game resource packs, Plastic and City.}}
|
{{HistoryLine|bedrock}}|{{HistoryLine||1.10.0|dev=beta 1.10.0.3|Resource packs are now separate from world templates and can be updated independently in existing worlds.}}
}}

== Trivia ==
[[File:Alpha v1.2.2 pack.png|thumb|The world that the {{mono|pack.png}} screenshot was taken in, loaded in Alpha v1.2.2.]] 

*The {{file|file|pack.png|inline=1}} file used for the default resource pack before [[Java Edition 1.14|1.14]] is a screenshot taken in [[Java Edition Alpha v1.2.2|Alpha v1.2.2]], in a world generated with the [[Seed (world generation)|seed]] {{cd|3257840388504953787}}.<ref>{{ytl|ea6py9q46QU|Pack.PNG has been FOUND! - Here's how they did it.|SalC1|September 7, 2020}}</ref>
**The screenshot was taken approximately at X=49.16, Z=0.72, facing RX=-119.23, RY=-8.297.
**The seed can be used in versions Alpha 1.2.0 through Beta 1.7.3, with minor population differences between versions.
**It's possible to generate an identical world and take an identical screenshot, a guide on how to do that can be found here: https://pastebin.com/CmsEKDev.<ref>https://www.reddit.com/r/MinecraftAtHome/comments/iocx6f/packpng_seed_was_found_explanation_tutorial_and</ref>
**It's referenced in the video "[https://web.archive.org/web/20211215041724/https://www.youtube.com/watch?v=YXY74kWderc One Trillion Minecraft Views on YouTube and Counting]"
**The image is referenced by the ''Unpacked'' [[painting]].
**The seed is displayed as a placeholder when no seed is entered in the Bedrock "Advanced" world creation screen.

== Gallery ==
<gallery>
Pack.png|The pack.png file used by the default resource pack before 1.14.
Unknown server.png|The grayscale variant still present in the game. Used as a fallback server icon.
Unpacked (texture).png|The ''Unpacked'' [[painting]] referencing pack.png.
NotchTexturePacks.png|The first image released by [[Notch]] of the texture pack selection menu.
Default pack.png|The pack.png file used by the default resource pack.
Programmer Art pack.png|The pack.png file used by the programmer art resource pack.
Unknown pack.png|The fallback resource pack icon.
HC pack.png|The pack.png file used by the high contrast resource pack.
Custom splash.png|A custom splash saying ''Also try Tomodachi Life!''
Custom biome with missing texture blocks.png|Blocks with missing textures seen in a broken custom biome in ''Bedrock Edition''.
Dinnerbone Select Resource Packs.png|The "Select Resource Packs" screen.
Dinnerbone Resource Packs.gif|Resource packs being managed.
Block Alternatives.png|Unimplemented "block alternatives" option for resource packs.
Resource Packs Button.jpg|The resource packs button.
</gallery>

== See also == 
*[[Tutorials/Creating a resource pack]] {{only|java}}
*[https://learn.microsoft.com/en-us/minecraft/creator/documents/resourcepack Introduction to Resource Packs] {{only|bedrock}}
*[[Programs and editors/Resource pack creators]]

== External links ==
* [https://misode.github.io/pack-mcmeta/ Pack.mcmeta Generator on misode.github.io]

== References ==
{{reflist}}

== Navigation ==
{{Navbox resource packs}}
{{Navbox Java Edition technical|resourcepack}}

[[cs:Balíček modifikací]]
[[de:Ressourcenpaket]]
[[es:Paquete de recursos]]
[[fr:Pack de ressources]]
[[it:Pacchetto di risorse]]
[[ja:リソースパック (Java Edition)]]
[[ko:리소스 팩]]
[[nl:Bronpakket]]
[[pl:Paczki zasobów]]
[[pt:Pacote de recursos]]
[[ru:Пакет ресурсов]]
[[th:รีซอร์ซแพ็ก]]
[[uk:Пакет ресурсів]]
[[zh:资源包]]
