Minecraft Wiki

The Minecraft Wiki is no longer considered as official by Microsoft and therefore several changes are required to be made, including to the wiki's logo. Please read this announcement for more information.


Minecraft Wiki
Minecraft Wiki
This article is about the current system to customize assets. For other uses, see Texture Pack (disambiguation).

The default textures at the left side with a custom resource pack (Rodrigo's Pack 8x8) in the right side.

The resource pack system provides a way for players to customize textures, models, music, sounds, languages, texts such as the end poem, splashes, credits, and fonts without any code modification.

Java Edition[]


The default resource pack settings.

Resource packs can be placed in the folder resourcepacks within the .minecraft folder. Each resource pack is either a sub-folder or a .zip file within the resourcepacks folder. Once in the folder, a resource pack can be added from the options, where resource packs can be moved between "Available resource packs" and "Selected resource packs". "Selected resource packs" also contain the default assets on the bottom, which 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.

Default resource packs[]

A resource pack can be bundled with a world by saving it under the name resources and placing it directly in the world's folder. When playing the world, that resource pack appears as the default right above the default resource pack. A default resource pack can also be set on a server by adding a link to a .zip file download after the line resource-pack= in the server properties file. Users can still opt out of using the resource pack or choose not to download it, however.

The old (pre-1.14) textures are available in a resource pack titled "Programmer Art". These textures are not updated when the game receives new textures.

Folder structure[]

  • (resource pack name)
    • pack.mcmeta
    • pack.png
    • assets
      • icons
        • icon_16x16.png
        • icon_32x32.png
        • minecraft.icns
      • (namespace)
        • sounds.json
        • blockstates
          • (blockstate).json
        • gpu_warnlist.json
        • font
          • (font)
        • icons
          • icon_16x16.png
          • icon_32x32.png
          • minecraft.icns
        • lang
          • (lang).json
        • models
          • block
            • (model).json
          • item
            • (model).json
        • particles
          • (particle).json
        • sounds
          • (sound).ogg
        • shaders
          • post
            • (post).json
          • program
            • (fragment shader).fsh
            • (program).json
            • (vertex shader).vsh
        • texts
          • (text).txt
        • textures
          • block (1.15+) or blocks (1.14.4-)
            • (texture).png
          • colormap
            • (texture).png
          • effect
            • (texture).png
          • entity
            • (texture).png
            • (entity type)
              • (texture).png
          • environment
            • (texture).png
          • font
            • (texture).png
          • gui
            • (texture).png
            • advancements
              • (texture).png
              • backgrounds
                • (texture).png
            • container
              • (texture).png
              • creative_inventory
                • (texture).png
            • presets
              • (texture).png
            • title
              • (texture).png
              • background
                • (texture).png
          • item
            • (texture).png
          • map
            • (texture).png
          • misc
            • (texture).png
          • mob_effect
            • (texture).png
          • models
            • armor
              • (texture).png
          • painting
            • (texture).png
          • particle
            • (texture).png

More than one directory for different namespaces may exist under the assets directory.


A resource pack is identified by Minecraft based on the presence of the file pack.mcmeta in the root directory, which contains a JSON file with the following information:

  • The root tag
    •  pack: Holds the resource pack information
      •  pack_format: Pack version. If this number does not match the current required number, the resource pack displays an error and requires additional confirmation to load the pack. See #Pack format for a full list of pack format numbers.
      •  description: Text shown below the pack name in the resource pack menu. The text is shown on two lines. If the text is too long it is truncated.
      •  description: Contains a raw JSON text object that is shown instead as the pack description in the resource pack menu. Same behavior as the string version of the description tag, but they cannot exist together.
    •  language: Contains additional languages to add to the language menu
      • Language code for a language, corresponding to a .json file with the same name in the folder assets/<namespace>/lang.
        •  name: The full name of the language
        •  region: The country or region name
        •  bidirectional: If true, the language reads right to left.

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

Pack format[]

The table below describes the version range using each pack format number:

Format Versions
8 1.18


Resource packs can create language files of the type .json in the folder assets/<namespace>/lang. Each file either replaces information from a file of the same name in the default or a lower pack, or it creates a new language as defined by pack.mcmeta.

Each line in the .json file is in the standard json format of "identifier":"name" followed by a comma in case it is followed by another value in the next line. identifier is the name that the game looks for to determine the name for something, and as such it should not be changed. name is the name that is displayed. For example, stone in the default language file is "block.minecraft.stone":"Stone", with block.minecraft.stone being the identifier, and Stone being the displayed name. Blank lines are ignored. The file needs to be valid JSON syntax, meaning it starts with a {, has a comma after every key value pair except the last one, and ends with a }.

Language files need to add only those lines that are changed by the pack. Any names that are not in the pack are loaded from the pack below, or default if no pack changes the names.


Main article: Model

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

Blocks use a block state file from assets/minecraft/blockstates to determine which model is loaded for each variant from the folder assets/minecraft/models/block. Meanwhile, each item has an item model in assets/minecraft/models/item 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 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.


Resource packs load additional sounds with the file type of .ogg. Each sound placed in the pack overrides the sounds from packs below, and packs also contain a file called sounds.json which is placed within assets/minecraft. Unlike most other files in resource packs, sounds.json merges sound information from packs below the top pack, rather than each sounds.json file overriding the previous completely.


The "missing model" for invalid or missing models, prominently using the black and magenta "missing texture".

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 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 which are semi-transparent by default support semi-transparency.

If a file does not exist in any resource pack, including the default, it appears as a magenta and black checkerboard texture using the colors (


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

  • The root tag
    •  animation: Contains data for the animation
      •  interpolate: If true, Minecraft generates additional frames between frames with a frame time greater than 1 between them. Defaults to false.
      •  width: The width of the tile, as a direct ratio rather than in pixels. This is unused in vanilla's files but can be used by resource packs to have frames that are not perfect squares.
      •  height: The height of the tile as a ratio rather than in pixels. This is unused in vanilla's files but can be used by resource packs to have frames that are not perfect squares.
      •  frametime: Sets the default time for each frame in increments of one game tick. Defaults to 1.
      •  frames: 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.
        • A frame specifies a frame with additional data.
          •  index: A number corresponding to position of a frame from the top, with the top frame being 0.
          •  time: The time in ticks to show this frame, overriding "frametime" above.

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


Textures from assets/minecraft/textures/entity/villager and assets/minecraft/textures/entity/zombie_villager support a .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 .mcmeta. For example, the file profession/farmer.png can have a properties file called profession/farmer.png.mcmeta

  • The root tag
    •  villager: Contains data for the texture

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


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

Textures from assets/minecraft/textures/misc support a .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 .mcmeta. For example, the file pumpkinblur.png can have a properties file called pumpkinblur.png.mcmeta
  • The root tag
    •  texture: Contains data for the texture
      •  blur: Causes the texture to blur when viewed from close up. Defaults to false
      •  clamp: Causes the texture to stretch instead of tiling in cases where it otherwise would, such as on the shadow. Defaults to false
      •  mipmaps: Custom mipmap values for the texture

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


Two .txt files in UTF-8 format and one .json file exist in assets/minecraft/texts which are used by the game to determine the text to display.

The file end.txt contains the text of the end poem, using formatting codes to apply the colors to the two speakers, and with the text PLAYERNAME being replaced with the player's name. After that file is shown, the contents of credits.json are shown.[more information needed]

The file splashes.txt contains lines of text separated using line breaks to determine the splashes to display in-game. Any splash can be replaced with different text.


A font file is a JSON file located at assets/<namespace>/font within a resource pack and contains a list of providers that each tie a character set to a resource location along with some extra information. The default font is defined by the font minecraft:default while the default font used by enchantment tables is defined by the font minecraft:alt. The resource locations given in font providers should also include the file extensions.

  • The root tag
    •  providers: A list of providers that are merged onto this font.
      • A font provider. The contents depend on the value of the "type" tag.
        •  type: The type of the font provider. Can be one of the following:
          • bitmap: A bitmap font.
            •  file: The resource location of the used file, starting from assets/<namespace>/textures.
            •  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 rescales the displayed result. Default is 8.
            •  ascent: The ascent of the character, measured in pixels. This value adds a vertical shift to the displayed result.
            •  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: A legacy unicode font. This format is deprecated and only prioritized when the "Force Unicode Font" option is turned on.
            •  sizes: The resource location inside assets/<namespace>/font describing 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 .bin.
            •  template: The resource location inside assets/<namespace>/textures that leads to the texture files that should be used for this provider. The game replaces %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 TrueType font.[more information needed]
            •  file: The resource location of the TrueType font file within assets/<namespace>/font.
            •  shift: The distance by which the characters of this provider are shifted.
              • Left shift
              • Downwards shift
            •  size: Font size to render at.
            •  oversample: Resolution to render at.
            •  skip: String or array of strings to exclude.

Font texture sheets will automatically be resized based on the amount of characters in each array line, and some sheets may use a 16-character wide sheet, in order to conform with a Unicode block.

Default textures[]

The texture files of the default fonts 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 5% alpha background causes the full width to render without generally having a visible background to the character. The default font character is 8×8 pixels, while accented.png is 9×12 pixels.

  • Glyphs 0x20 (space) through 0x7E (tilde) display the standard ASCII characters
  • Glyphs 0x7F (<control>) through 0xFF (y with diaeresis) display the Code page 437 characters

The default texture is located in assets/minecraft/textures/font/ascii.png. It contains these non-script characters:

░ ▒ ▓ │ ┤  ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞ ╟  ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄  ▌▐▀ ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■

A texture sheet in assets/minecraft/textures/font/nonlatin_european.png contains many accented characters and most of the symbols Minecraft supports. It contains these non-script symbols:

⧈ ⚔ ☠ ¢ ¤ ¥ © ® µ ¶ ¼ ½ ¾ · ‐ ‚ †  ‡ • ‱ ′ ″ ‴ ‵ ‶ ‷ ‹ › ※ ‼ ‽ ⁂ ⁈ ⁉  ⁋ ⁎ ⁏ ⁑ ⁒ ⁗ ℗ − ∓ ∞ ☀ ☁ ☈ Є ☲ ☵ ☽ ♀ ♂ ⚥ ♠ ♣ ♥ ♦ ♩ ♪ ♫ ♬ ♭ ♮ ♯ ⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ʬ ⚡ ⛏ ✔ ❄ ❌ ❤ ⭐ ⸘ ⸮ ⸵ ⸸ ⹁ ⹋ ⥝ ᘔ Ɛ ⅋ ⏏ ⏩ ⏪ ⏭ ⏮ ⏯ ⏴ ⏵ ⏶ ⏷ ⏸ ⏹ ⏺ ⏻ ⏼ ⏽ ⭘ ▲ ▶ ▼ ◀ ● ◦ ◘  ⚓ ⛨ � ☺ ☻ ¦ ☹ ⅔ ✉ ☂ ☔ ☄ ⛄ ☃ ⌛ ⌚ ⚐ ✎ ❣ ♤ ♧ ♡ ♢ ⛈ ☰ ☱ ☳ ☴ ☶ ☷ ↔ ⇒ ⇏ ⇔ ⇵ ∀ ∃ ∄ ∉ ∋ ∌ ⊂ ⊃ ⊄ ⊅ ∧ ∨ ⊻ ⊼ ⊽ ∥ ≢ ⋆ ∑ ⊤ ⊥ ⊢ ⊨ ≔ ∁ ∴ ∵ ∛ ∜ ∂ ⋃ ⊆ ⊇ □ △ ▷ ▽ ◁ ◆ ◇ ○ ◎ ☆ ★ ✘ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ ∫ ∮ ∝ ⌀ ⌂ ⌘ 〒 ɼ

A secondary texture is located in assets/minecraft/textures/font/accented.png. It supports most basic accented characters, Greek letters, Cyrillic characters, as well as some enclosed alphanumerics and other symbols. Aside from non-symbols, it contains these characters:

⚠ ⓪ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ☯ ☐ ☑ ☒ ⅒ ⅘

The default texture used when displaying the Standard Galactic Alphabet (a.k.a. the enchanting text or "alien font") is assets/minecraft/textures/font/ascii_sga.png.

Legacy Unicode[]

As a fallback for untextured characters, Minecraft uses GNU Unifont. Each sheet of characters is stored following the format of unicode_page_##, where ## are the hexadecimal numbers 00 through FF. These pages are 16x16 pixels, and appear small and rough in-game. They are not aligned left-most correctly, and the version of Unifont used is v9.0.04[1], and is outdated as of 1.16.5. It provides the support for the CJK characters as well as other scripts.

The Unifont entries use a glyph_sizes.bin for recording glyph widths. Each entry is one byte large; the higher nibble records the starting position while the lower records the ending position in the 16x16 glyph grid. For example, a square character occupying the entire grid (pixel #0 through #15) would have a byte of 0x0f.

The "template" and .bin systems theoretically works for any Unicode font, but it is unclear how SMP points are handled if at all.


Since 1.15, Minecraft can support UTF-16 sequences for emojis, or any character in the Unicode SMP plane.

For the emoji to be read properly in the  char array of the font file, the character can either:

  • be split from its' UTF-16 codepoint into two UTF-8 codepoints (surrogates); for example, 1F603 -> D83D DE03
  • be input directly

The first method is used in the standard font file, but either works equally well. To convert a character into a surrogate pair, one can use the following equations, where C is the codepoint in decimal:

  • High Surrogate (first): (C − 65536) ÷ (1024 + 55296)
  • Low Surrogate (second): C − 65536

As of 1.17, Minecraft has default support for the following emojis:

🔥 🌊 🗡 🏹 🪓 🔱 🎣 🧪 ✂ 🍖 🪣 🔔 ⏳

If the Chat Shadows option is enabled in Options, a shadow appears beneath every character. This shadow is a copy of the character's bitmap, with the brightness subtracted by 90%, and positioned 12.5% south-west of the character, relative to its spacing. Regardless of the resolution of the character's texture, the shadow is always moved by 12.5%. In the default font (assets/minecraft/textures/font/ascii.png), the shadow is equivalent to being moved 1 pixel down and right.

Glowing text[]

Glow ink on a sign will cause a character to create eight copies of itself, similarly to the shadows, but in all eight directions. This results in the default font appearing to have a thick outline.

Texture sheets[]

Minecraft generally does not store multiple different textures on sheets and instead stores them on separate files. Two current exceptions are map icons[2] and experience orbs as well as minecarts.[3]


Main article: Shaders

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


The folder structure of Vanilla Resource Pack:

Bedrock Edition[]

Jigsaw Block (top texture) JE2 BE2.png
This section needs expansion. 
You can help by expanding it.


Similarly to skins, resource packs can be bought or made in Bedrock Edition. All users can download resource packs on the system itself with the .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.

Default packs[]

One or more resource packs can be bundled with a world in the world settings or files[more information needed]. When playing the world, that resource pack appears as the default right above the default resource pack. A default resource pack can also be set on a server by adding a putting the .mcpack in the resource_packs folder and bundling it with the world. Users can opt out of using the resource pack or choose not to download it if the texturepack-required option is disabled in the server settings.

Folder Structure[]

  • (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
    • fogs
      • <biome>_fog_settings.json
    • models
      • mobs.json
      • <model>.geo.json[a]
    • particles
      • <particle>.json
    • render_controllers
      • <entity>.render_controllers.json
    • sounds
      • music_definitions.json
      • sound_definitions.json
      • <sound>.fsb[a]
      • <sound>.ogg[a]
      • <sound>.wav[a]
      • <sound>.mp3[a][b]
    • texts
      • <languagecode>_<COUNTRYCODE>.lang
      • <languagecode>_<COUNTRYCODE>[c]
        • font
          • glyph_<code>.png
    • texture_sets[d]
    • textures
      • flipbook_textures.json
      • item_texture.json
      • terrain_texture.json
      • <texture>.png[a]
      • <texture>.tga[a]
    • ui
  1. a b c d e f g h File may be inside a folder.
  2. .mp3 files arren't fully supported.
  3. For languages using a different font.
  4. Unused.


Java Edition
1.6.113w24aAdded resource packs, replacing the functionality of texture packs.
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.
1.6.2reuploadFixed distorted font when HD font is used.[4]
1.7.213w36aAdded the ability to apply multiple resource packs at once.
13w42aMoved files from assets/minecraft/music to assets/minecraft/sounds/music and files from assets/minecraft/sound to assets/minecraft/sounds.
1.7.313w47aThe description value of pack.mcmeta can now be raw JSON text format.
1.7.413w48aRemoved the ability to change the Mojang logo.
1.814w06aAdded the ability to change the block models.
14w07aResource packs can now be bundled with a map.
14w25aThe model format now supports custom item models.
Textures can now be specified for blocks and items.
Added the interpolate tag for animations.
1.8.8preResource packs now display an error if the format number is wrong. At this time, it requires a format number of 1.
1.915w31aChanged format number to 2, due to changes in the model system, such as item tags, 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 here for an example.
1.1116w32aResource packs version number changed to 3, due to the change that all files should have lowercase letters.
1.1317w43aThe default resource pack can now be moved up and down, just like other resource packs.
17w48aChanged format number to 4, due to The Flattening.
1.1418w45aAdded "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.
19w06aSignificantly improved resource pack loading speed.[5]
Particles textures are now split into individual files.
19w07aPainting textures are now split into individual files.
19w08aStatus effect textures are now split into individual files.
1.15Pre-release 1Changed format number to 5, due to texture mechanic changes in earlier snapshots.
1.16.2Release Candidate 1Changed format number to 6, due to changes to wall blocks made in 1.16 according to MC-197275.
1.1720w45aChanged format number to 7.
21w05aImproved performance when using many overrides on an item model.
toasts.png GUI texture has a new icon for the bundle tutorial.
pre1The file credits.txt in assets/minecraft/texts was changed to credits.json, and the format also changed from plain text to structured JSON format.
Upcoming Java Edition
1.1821w39aChanged format number to 8, because inventory.png now contains an extra sprite for a thin-layout version of the effect list in the inventory.
Pocket Edition Alpha
v0.15.0releaseAdded the first custom in-game resource packs, Plastic and City.
Bedrock Edition
1.10.0beta packs are now separate from world templates and can be updated independently in existing worlds.


The world that the pack.png screenshot was taken in, loaded in Alpha v1.2.2.

  • The old pack.png file was screenshotted from Alpha v1.2.2, the seed being 3257840388504953787.[6]
    • The screenshot was taken approximately at X=49.16, Z=0.72, facing RX=-119.23, RY=-8.297.
    • How to generate the exact same world and make the exact same screenshot: https://pastebin.com/CmsEKDev.[7]


Ambox banner content.svg
This page would benefit from the addition of more images. 
Please remove this notice once you've added suitable images to the article.
The specific instructions are: The programmer art resource pack icon

See also[]