How to make a Minecraft resource pack
- with block variants and custom modelsThis guide is for total beginners, like I was! It may over explain things, like where certain files are located and how to find them, but thats so beginners don't feel lost.
If you're here, you may also find Minecraft Wiki's resource pack tutorial helpful too.
Where to put resource packs
First you will want to figure out where to put your texture pack in order to test it as you work on it.
You can launch Minecraft itself and click Options > Resource Packs > Open resource pack folder, and it will open the actual folder that the resource packs will go in. You can see what folder that is in and so forth in the file path bar. This is the best option if you are using a different Minecraft launcher than the default microsoft one, as the path to the resource pack folder goes through the launcher folder, making a much more complicated path. Your launcher may also have an option to open the minecraft folder for each instance, each of which will have a resourcepack folder. If you are using a third party launcher, resource packs may not show up with the below method.
If you don't want to launch Minecraft, you can go to the .minecraft folder directly! For Windows you can search %appdata% in the start menu search bar. In Linux you can go to your base home folder, in the tool bar up top select View > Show Hidden Files, and .minecraft will be right there along with the downloads, documents, music, etc folders. I'm not familiar with Mac, but it looks like it will be in Library > Application Support > minecraft.
Right inside the .minecraft folder will be the resourcepacks folder, where you can copy paste your texture pack folder/zip file (either one will work). If you don't have one yet, you can make a new folder here and name it something (it doesn't have to be your pack's final name), that way you can easily edit and test your files without moving things.
Where to find vanilla Minecraft textures
You will want a reference of Minecraft's default texture and model files so that you can see what folders they are located in and what exactly their file names are (in order to override them). Accessing these files is slightly more tricky. For this, go to the main .minecraft folder through the last method, or from the default microsoft launcher (you can't access these from a third party launcher).
Go to .minecraft > versions. There will be folders for each instance of Minecraft you have made, usually one for each update or modded version of Minecraft you have played. (If you haven't launched Minecraft from the built in launcher, do so with your desired update so that it can make a version folder for it). Open the version of Minecraft you want to test your texture pack in. Inside will be a .json file and a .jar file with the version name. Right click the .jar file and select Extract Here. This will make a folder you can explore. You may want to move this folder to an easier to access spot, like your desktop or documents.
Inside of that folder you just extracted, go into the assets folder and then the minecraft folder. This is it! Here you will find the textures and models folders! Your own texture pack will mimic this pattern of folder nesting and naming. Like the version folder, your pack will have a minecraft folder in an assets folder. And in your minecraft folder, you will have at least a textures folder, where block textures will go in the block subfolder, and item textures will go in the item subfolder. There is also a painting subfolder in the texture folder, and a lot of other folders for things you might want to retexture, but blocks and items will likely be the main categories.
If you can't find the texture for a block in the vanilla minecraft block folder, it may be in one of those other folders. Try the entity folder next. While in a folder like the block folder, you can search words to narrow down the files, by holding the Ctrl and F keys at the same time. This will bring up a little search bar that you can type a word into, like "planks" or "sign". Finding where a file is actually located is important so that you can put it in the same series of folders in your pack. Your chest textures won't override vanilla Minecraft chest textures if you put them in your pack's block folder (put them in the entity folder in your pack).
If you want to test your texture pack for an older version of Minecraft, first make a new instance with that specific update (via the default Minecraft launcher). Make a new world and you can enable your texturepack in the menu. If certain textures you made are missing or have errors (and they were fine in the version you made it for), you will want to copy Minecraft's vanilla resources again, but for this version (.minecraft > versions > [version you want to test] > extract .jar file > open new folder). This is because sometimes file names have changed, or what folder some textures go in have changed. iron_chain.png used to be just chain.png. Sign textures used to have a sign folder in the entity folder, but now they are in the block folder without a subfolder; their texture pngs are also laid out differently.
For your pack to be compatible when you find differences between the current update and an older one, you may need redundant files. In the block textures folder I have both iron_chain.png and chain.png, which are the exact same texture. This is so players can see my retextured iron chain in versions before and after copper chains were added.
Resource pack file structure
Now that you can access the vanilla Minecraft assets folder, your texture pack will need to be organized the same way. Now if you don't have anything in a given folder you don't need to include it. You may not change anything in the font folder. Minecraft will use its vanilla files where there are none in the resource pack. Since you don't need to copy everything in the vanilla Minecraft assets folder, its best you don't in order to keep your pack efficient and lightweight. Only copy what you plan to change. Delete it if you aren't going to edit it.
Your pack will also include a few files along side the assets folder. Below you can explore the resource pack folder structure by opening "folders" and descriptions for other files. If this part is confusing, thats okay! I will explain more after it, and in the order of what is easiest to do first.
Texture Pack Name
assets
minecraft will be the only folder here unless you are also retexturing blocks/items for mods. Each mod will have its own folder. Note that the "minecraft" folder is not capitalized!
minecraft
These are the main folders you will be in, you are unlikely to need to add any others found in vanilla Minecraft's corresponding folder.
For each block there is a .json file, which links the model file(s) to said block (most blocks only have one model file, but a few have more). The .json files go directly in here, no sub folders. You will likely only need put files here if you want to assign variants to a block. Most of your models will be here if you chose to remodel anything. The 3D model for each block goes here. Make a .json file with the same name as the original in order for your remodel to apply. Each model has its corresponding texture(s) linked to it in this file. If you make variants, each variant will need its own model file. Some blocks are already made up of multiple 3D parts, like fences and bars (their posts and connected sides are different files). Since these also have wood and metal versions, these parts have templates. A spruce fence post .json model file will link to the fence post template as its parent, and then just define its texture as spruce wood planks. That way the same shaped model does not need copy pasted for every fence color. You may not need this folder, unless your changed models messed with the corresponding item model (rails and ladder in my case). This is the classic texture pack part of resource packs! Here live the png files! Easy to edit in your favorite pixel art drawing program. Use the same file name as the vanilla texture to override it. They will have to be in the following folders though. Most of your pngs will be in here. Some blocks may not support transparency if their orginal textures are solid. Keep in mind that some blocks have different top/bottom and side textures, like logs. Texture files for mobs, minecarts, chests, boats, banners and other weird blocks. If you can't find it in the block folder it might be here. Moon pngs for each moon phase go here, keep their filenames the same. The sun png goes directly in the celestial folder. The rain texture goes directly in the environment folder. The snow texture also goes here. Graphical User Interface, aka the menus. I have not edited the GUI, so I won't go futher into this folder. Item pngs go directly in here! No subfolders. Campfire smoke, rain splashes, bubbles, explosions, falling leaves/petals, etc go here. Most of your textures will be in block and item. There are more folders I did not include since I haven't gotten into them myself (colormap, effect, map, misc, mob_effect, painting, and trims). Note that most of these folders are singular, not plural! Your textures won't override vanilla Minecraft if they are in a folder named "blocks" or "items".blockstates
models
block
item
textures
block
entity
environment
celestial
moon
sun.png
rain.png
snow.png
gui
item
particle
credits.txt
Just a plain text file where you can credit your inspirations, sources for images, sources for code, etc. Not necessary for texture pack function, but nice to do. Edit this in a plain text editor like notepad. You can also make another text file called README.txt or info.txt for any information you'd like users to know, such as versions your pack works for, links to your modrinth/cursforge/planet minecraft accounts, permissions for other people, etc.
pack.mcmeta
This text file is actually necessary and has to be formatted a specific way. You'll edit it the same way as a regular text file. Must be named pack.mcmeta.
{
"pack": {
"description": "Adds a little ~spice~ to enhance vanilla Minecraft",
"pack_format": 15,
"supported_formats": {"min_inclusive": 15, "max_inclusive": 100 },
"min_format": 15,
"max_format": 100
}
}
The brackets, quotes, colons, and commas are all very important. Like the json files, this will not work if even one is missing. The description is what shows up when a player is selecting which resource packs to use in game.
pack_format is which version your resource pack is for. Minecraft Wiki has a table showing the pack formats for minecraft versions. This value is required, and only one can be chosen, even if your pack works for a range of updates.
supported_formats allows you to define a range of values, though you can't go any lower than 15. You can however, go above the most recent update. You can choose to do this if you believe your pack will still work for future updates.
min_format and max_format do the same thing ^^
Note how the last item in a {} bracket set does not have a comma after it, this is how this file and all .json files must be formatted.
pack.png
This is just a 128px by 128px png used as your packs icon in the player's resource pack selection screen. It is shown with your pack's description. Make it whatever you want ^^
Heres an overall illustration:
- pack.mcmeta
- pack.png
- assets
- minecraft
- blockstates
- .json files
- models
- block
- .json files
- item
- .json files
- block
- textures
- block
- image files
- item
- image files
- other texture folders
- block
- blockstates
- minecraft
Starting your resource pack
Okay, now you know where your pack goes, and have vanilla Minecraft assets on hand to reference file names and locations. Now to actually work on it!
First in your texture pack folder you will want:
- a folder called assets, leave this empty for now
- an image named pack.png, this is the icon for you pack, ideally a 128px wide/tall square, can be a placeholder or missing for now (Minecraft will give your pack a cobblestone icon)
- a text file called pack.mcmeta, right click inside your pack folder, select Create Document > Empty File, we will edit this next
Your pack folder should look like this:
- assets
- pack.mcmeta
- pack.png
Setting up pack.mcmeta
Now right click pack.mcmeta > Open With and select your favorite text editor. Something basic like Notepad will be fine.
{
"pack": {
"description": "Adds a little ~spice~ to enhance vanilla Minecraft",
"pack_format": 15,
"supported_formats": {"min_inclusive": 15, "max_inclusive": 100 },
"min_format": 15,
"max_format": 100
}
}
description- text next to your pack's icon in the player's resource pack selection menu, brief descriptionpack_format- which version your resource pack is for, required value, only one can be chosen (even if your pack works for a range of updates), Minecraft Wiki has a table showing the pack formats for minecraft versionssupported_formats- allows you to define a range of values, but you can't go any lower than 15, however, you can go above the most recent update (if you believe your pack will still work for future updates)min_formatandmax_formatdo the same thing
The brackets, commas, colons, and quotes are all very important, your pack may give an error if its just one of these missing. Note how every item in a {} bracket set has a comma at the end, except the last item in the set; this is how this file and all .json files must be formatted.
If this giving you trouble, you can ditch everything except the description and pack format, and just go with the current version's format number.
{
"pack": {
"description": "my cool texture pack",
"pack_format": 88
}
}
The nice thing is, even if the format number you chose is for a version of Minecraft that is older or newer than the player's version, they can still apply it. Minecraft will give a warning that the pack is outdated or for a future version, but the player can use it anyways. This is true even if the warning says the pack is incompatible (this means that pack.mcmeta was likely formatted wrong or with invalid values).
The next few folders
Now that you have your pack.mcmeta file working, we want to go into the assets folder. Add a new folder called minecraft inside this. If you are retexturing blocks/items/mobs from a mod, then the mod folder will go here too. We are just going to focus on Minecraft, however. Inside the minecraft folder, add three new folders and name them blockstates, models, and textures. Your assets folder should look like this:
- minecraft
- blockstates
- models
- textures
If you don't plan on editing 3D models, or making variants for blocks, you can get rid of the models and blockstates folders (blockstates are what we use to add variants).
Basic textures
WIP Theres going to be more here! simple block textures, more complex block structures, variants via block states, simple 3D model changes, complex 3D model stuff, converting to a bedrock texture pack