Features:
Notes and Recent Changes:
Downloads:
adf.ly links are available for those who wish to support this project. Or you may donate via paypal:

MCPatcher for Minecraft 1.5 and newer:
Windows only:
- Download via adf.ly
- Direct download
- md5sum: 9f52fb4a145629d3bef7ff3eaa27e96d
- Download via adf.ly
- Direct download
- md5sum: b0577dde93579ad6bb1e77ce01361645
MCPatcher for Minecraft 1.4.7 and earlier:
Spoiler:
Windows only:
Windows only:
- Download via adf.ly
- Direct download
- md5sum: d8f9150551d460f8d8bcc45ff2be416d
- Download via adf.ly
- Direct download
- md5sum: c2c4e0327a6074209371953385108615
Basic Instructions:
- Download the correct version of the patcher for your OS.
- Double-click the patcher. You should see this:

- If you would like Better Grass (full grass texture on the sides of grass blocks next to other grass blocks), select the Options tab, scroll down to Connected Textures, and check the box next to Better Grass.
- Click Patch.
- Close MCPatcher and start the game normally. Or click Test Minecraft to run Minecraft without logging in (single-player only).
Video Tutorial:
Credit goes to JKurtz87 for making this video.
Installing other Mods:
Spoiler:
Use MCPatcher to manage other mods as well. This is not only more convenient, it ensures maximum compatibility between MCPatcher's features and other mods. Note that mods must still be compatible with the version of Minecraft you are running. MCPatcher does not and cannot do anything to make mods work with any version of the game other than the one they were written for.
Use MCPatcher to manage other mods as well. This is not only more convenient, it ensures maximum compatibility between MCPatcher's features and other mods. Note that mods must still be compatible with the version of Minecraft you are running. MCPatcher does not and cannot do anything to make mods work with any version of the game other than the one they were written for.
- In the main patcher window, click the Add (+) button.
- Select the zip file containing the mod you wish to apply. In this example, we'll use ModLoader.

- Click Ok.
- Next a window showing the list of files that will be added will appear. This is mainly informational. Confirm that the right files are listed and click Ok.

- The main patcher window should look like this now:

- Now we're going to add a second mod, Better Than Wolves. This will illustrate two important things: How to add just a subfolder from a mod and how to resolve mod conflicts.
- Click the Add (+) button again.
- Choose the BTW zip.

- Since there are multiple subfolders to choose from, the subfolder window appears. If you blindly add everything from the zip, it will not work. Instead, select the MINECRAFT-JAR folder and click Ok.

- Next the list of files to be added is shown. Notice this time how files are being copied from the MINECRAFT-JAR folder into the root of minecraft.jar.

- Now we have a slight problem. Both ModLoader and BTW contain vl.class. If you try to patch at this point, you will get a warning about the conflict.

- You can ignore this warning and patch anyway. Or you can fix it by removing vl.class from ModLoader. Double-click ModLoader and the list of files will appear again. Select vl.class and click the Remove (-) button. Note: Doing this does not change the original ModLoader.zip file, only the list of files that will be copied from it.
- The file list should now look like this. Click Ok.

- The main patcher window should look like this:

- Click Patch and run the game!
FAQ / Troubleshooting
Spoiler:
My virus scanner says the patcher has a virus!
Some scanners detect WS.Reputation.1. It is a false positive that can be ignored. WS.Reputation.1 isn't so much a virus as it is the scanner saying "This file is new, so I don't trust it." See this post by shinji257 for more information.
Extended HD or one of the other mods is greyed out.
If you install mods by hand before running the patcher, you may run into this problem. Start from a clean minecraft.jar instead and this shouldn't happen. Delete the bin folder in .minecraft and redownload it. Try patching again first without any mods. If that works, then add mods one at a time using the patcher as described above.
I want to use a texture pack created for Minecraft 1.4.7 with Minecraft 1.5.
Use the Convert Texture Pack option in the main menu to convert a texture pack to the new format. This replaces Mojang's unstitcher.jar and converts MCPatcher-specific features like CTM to the new format. The converted texture pack will be called mcpatcher-converted-<old name>.zip.
The grass blocks are grey when I enable Better Grass.
This happens when you install ModLoader after patching. Use the patcher instead, and it will install ModLoader properly. See above section "Installing other Mods" for details.
I installed XXX Mod using the patcher and now the game crashes.
Try using the Up/Down arrows in the patcher to apply mods in a different order. In my experience, putting other mods before Extended HD, etc., (which is the default behavior) works better, but you can also try moving them after.
I tried installing XXX Mod both above and below the built-in mods, and it didn't work.
If you tried installing both ways and it didn't work, then you're out of luck. You'll have to choose between MCPatcher and the other mod. Unless the source code for the mod is available, I probably won't be able to fix the incompatibility.
All this patching, repatching, installing, and uninstalling mods has made a mess of things. Now I just want to start fresh.
Delete the bin folder in your .minecraft directory and run the game's launcher again to redownload everything. If the game still crashes, delete options.txt as well to force the game to use the default textures again. You will have to redo your settings and key mappings if you do this.
The "Open Texture Packs Folder" button in the game doesn't work. / Where do I put my texture packs?
Navigate to the appropriate folder for your OS. The texturepacks folder will be in there.
When I select a particular texture pack, nothing changes.
Open the texture pack's .zip file and check that the files are in the right place. The textures/, environment/, font/, etc., folders should be in the root of the zip. If the zip contains a single folder with everything under it, it will not work. Take everything out of the folder and zip it back up. Other than that, do not unzip texture packs. Simply download them and place the .zip file as-is into the texturepacks folder.
Correctly zipped pack:

Incorrectly zipped pack:

(thanks to Gestankfaust for the screenshots)
The game crashes with an out of memory error or I get white boxes in place of some of the textures.
This mainly happens with 32-bit OSes and 256x texture packs, but there are things you can try:
That's because the Test Minecraft button does not log in. It is useful for testing that the patcher worked, but if you want multiplayer or achievements, use the normal game launcher.
Does this work with version x.y.z of Minecraft?
Unlike most mods, MCPatcher is designed to be version-independent. It should work across multiple versions of the game. MCPatcher 3.x should work with any 1.5-or-newer release. Use MCPatcher 2.x for earlier versions. When a new version of the game comes out, before breathlessly posting to ask when MCPatcher will be updated, just try running the version you have. Most of the time it will work as-is and you'll save yourself some unnecessary waiting.
I have a different problem not mentioned here.
Before posting, please Google for "mcpatcher other keywords site:minecraftforum.net" to see if your question has already been answered. If you do post, please include the log in your post as well. The Copy To Clipboard button puts code tags around it so all you have to do is paste it into your post.
My virus scanner says the patcher has a virus!
Some scanners detect WS.Reputation.1. It is a false positive that can be ignored. WS.Reputation.1 isn't so much a virus as it is the scanner saying "This file is new, so I don't trust it." See this post by shinji257 for more information.
Extended HD or one of the other mods is greyed out.
If you install mods by hand before running the patcher, you may run into this problem. Start from a clean minecraft.jar instead and this shouldn't happen. Delete the bin folder in .minecraft and redownload it. Try patching again first without any mods. If that works, then add mods one at a time using the patcher as described above.
I want to use a texture pack created for Minecraft 1.4.7 with Minecraft 1.5.
Use the Convert Texture Pack option in the main menu to convert a texture pack to the new format. This replaces Mojang's unstitcher.jar and converts MCPatcher-specific features like CTM to the new format. The converted texture pack will be called mcpatcher-converted-<old name>.zip.
The grass blocks are grey when I enable Better Grass.
This happens when you install ModLoader after patching. Use the patcher instead, and it will install ModLoader properly. See above section "Installing other Mods" for details.
I installed XXX Mod using the patcher and now the game crashes.
Try using the Up/Down arrows in the patcher to apply mods in a different order. In my experience, putting other mods before Extended HD, etc., (which is the default behavior) works better, but you can also try moving them after.
I tried installing XXX Mod both above and below the built-in mods, and it didn't work.
If you tried installing both ways and it didn't work, then you're out of luck. You'll have to choose between MCPatcher and the other mod. Unless the source code for the mod is available, I probably won't be able to fix the incompatibility.
All this patching, repatching, installing, and uninstalling mods has made a mess of things. Now I just want to start fresh.
Delete the bin folder in your .minecraft directory and run the game's launcher again to redownload everything. If the game still crashes, delete options.txt as well to force the game to use the default textures again. You will have to redo your settings and key mappings if you do this.
The "Open Texture Packs Folder" button in the game doesn't work. / Where do I put my texture packs?
Navigate to the appropriate folder for your OS. The texturepacks folder will be in there.
- Windows XP - C:\Documents and Settings\<username>\Application Data\.minecraft
- Windows Vista/7 - C:\Users\<username>\AppData\Roaming\.minecraft
- MacOS - From your home directory, go to Library -> Application Support -> minecraft
- Linux - ~/.minecraft
When I select a particular texture pack, nothing changes.
Open the texture pack's .zip file and check that the files are in the right place. The textures/, environment/, font/, etc., folders should be in the root of the zip. If the zip contains a single folder with everything under it, it will not work. Take everything out of the folder and zip it back up. Other than that, do not unzip texture packs. Simply download them and place the .zip file as-is into the texturepacks folder.
Correctly zipped pack:

Incorrectly zipped pack:

(thanks to Gestankfaust for the screenshots)
The game crashes with an out of memory error or I get white boxes in place of some of the textures.
This mainly happens with 32-bit OSes and 256x texture packs, but there are things you can try:
- If you are running a 64-bit OS, download the 64-bit version of Java. Select the version for your OS here.. The first few lines of the patcher log tell you what version of Java you are running.
- In the patcher options panel, there are options to set the Java heap and direct memory sizes. If you are running 32-bit, decrease the value to 512. If you are running 64-bit, try increasing it to 2048 or 3072. Note: This setting only affects the Test Minecraft button.
That's because the Test Minecraft button does not log in. It is useful for testing that the patcher worked, but if you want multiplayer or achievements, use the normal game launcher.
Does this work with version x.y.z of Minecraft?
Unlike most mods, MCPatcher is designed to be version-independent. It should work across multiple versions of the game. MCPatcher 3.x should work with any 1.5-or-newer release. Use MCPatcher 2.x for earlier versions. When a new version of the game comes out, before breathlessly posting to ask when MCPatcher will be updated, just try running the version you have. Most of the time it will work as-is and you'll save yourself some unnecessary waiting.
I have a different problem not mentioned here.
Before posting, please Google for "mcpatcher other keywords site:minecraftforum.net" to see if your question has already been answered. If you do post, please include the log in your post as well. The Copy To Clipboard button puts code tags around it so all you have to do is paste it into your post.
Information for Texture Pack Authors
Spoiler:
It is highly recommended to use the built-in Convert Texture Pack option to convert your texture pack from 1.4.7 to 1.5. It does everything Mojang's unstitcher.jar does while converting MCPatcher-specific features like CTM to the new format as well.
Custom Animations
MCPatcher is not required to animate item or block textures. See the wiki for that. The vanilla method also works for CTM animations. Just create a .txt file with the same name as the CTM texture and use the same format as you would for blocks or terrain.
MCPatcher adds the ability to animate other textures that are not part of a tilesheet, such as mob skins. Create a .properties file in the anim/ folder of your texture pack. In it, supply the source and destination texture, along with coordinates of the area you wish to animate. The following example animates the first painting in kz.png.
The compass and clock animations may be customized by providing the file /misc/{compass,clock}.properties. In the properties file, you specify a series of texture layers, each of which can be fixed or rotate independently. You could have a clock with three layers, a base, an hour hand, and a minute hand, for example. Alpha transparency and several blending methods are supported. See compass.properties for more details. Also see this sample texture pack.
HD Font
To allow for more control over the widths of individual characters, MCPatcher offers a way to specify them manually. Create a text file called /font/default.properties or /font/alternate.properties. Each line in this file specifies the width of a character:
The space character is special. Its default width is 1/2 of the average of the widths of A-Z, a-z, and 0-9. This makes the spacing between words match the overall width of the font. However you can override this the same way, by setting width.32 to a custom value.
Nuin has created an Excel spreadsheet to make the font calculations easier. Also see his Berylium font.
Random Mobs (sample mob.properties redcow_overlay.png, snowman_overlay.png)
Based on Balthichou's RandomMobs. You may include multiple skins for the same mob and the game will automatically pick one at random. Add a number to the end of the filename before the .png, e.g., /mob/creeper2.png. Start at number 2 and do not skip any numbers. For the wolf textures, make sure you include the same number of wolf, wolf_tame, and wolf_angry textures or it will look strange when a wolf changes moods. The same goes for the overlay textures spider_eyes.png and enderman_eyes.png.
Mob skins can be restricted to certain areas of the world by biome or height. You can have snow-themed skins for snowy biomes and cave-themed skins for mobs that spawn underground. To do this, create a .properties file with the same name as the base mob texture (e.g., /mob/creeper.properties). Inside, specify the list of skins to use for various biomes and height ranges. See the sample mob.properties file for details.
You can also customize the overlays on mooshrooms and snowmen:
Custom Colors (sample color.properties)
The Custom Colors mod to allows texture pack authors to customize, not just swamps, but many of the game's hardcoded colors. Here are the files you will need to include in the texture pack:
/color.properties:
This text file allows you to specify colors for potions, spawner eggs, lilypads, and a base color for water particle effects (drops, splashes, and bubbles). A template file with the game's default values is available here. See the # comments above each value for a description of how it is used in game.
/misc/redstonecolor.png:
This is a 16x1 bitmap used for redstone wiring and particle effects only. Other redstone colors (torches, repeaters, etc.) are pulled from the block textures as normal. The x-axis of the redstonecolor.png bitmap represents the current strength. 0 is fully off, 15 is fully on.
/misc/stemcolor.png:
This is an 8x1 bitmap used for pumpkin and melon stems at each growth stage. 0 is a sprout, 7 is fully grown.
/misc/lavadropcolor.png:
This is a bitmap used for the lava drop particle effect as it cools during its fall. The height should be 1 pixel but the width can be anything. The x-axis represents the particle's age in game ticks. Lava drop particles are generally not visible for the first 40 ticks or so because they start out embedded in the block above, so 90 pixels is a good width. If the particle lives longer than the width of the image, the last pixel is used for the remaining time.
/misc/myceliumparticlecolor.png:
Used for the particle effect created by mycelium blocks. This image can be any size. A random color is chosen from this bitmap for each new particle.
/misc/xporbcolor.png:
Used for the experience orbs. This image can be any size. The color chosen will move in a sinusoidal pattern from (0,0) to the end of the image. The speed of the sine wave is slowed down by a factor of 4 to allow texture packs to have slower pulsing xp orbs than the default. If you want to keep the default speed, simply tile your image 4 times vertically.
/misc/swampgrasscolor and /misc/swampfoliagecolor:
256x256 biome palettes used in swampy areas. They work just like their non-swamp counterparts.
/misc/pinecolor and /misc/birchcolor:
Biome color palettes for pine and birch leaves. The pixel at (127, 127) is used when the block is held or in inventory.
/misc/watercolorX.png:
Biome color palette for water. Note the capital X in the filename to prevent the default watercolor.png from being used accidentally.
Other biome palettes:
You can also assign a custom biome palette to any standard block. Here "standard" means any block that does not already have its own special coloring. In MCP terms, this is any Block subclass that does not override the colorMultiplier method. Create a 256x256 bitmap, then in color.properties add a line
/environment/lightmap-1.png: (Nether)
/environment/lightmap0.png: (Overworld)
/environment/lightmap1.png: (The End)
These are custom lighting palettes for each world. The height must be exactly 32 (or 64, see note about nightvision below) pixels but they can be any width. Each bitmap actually consists of two palettes, but we'll get into that later.
First an explanation of how lighting normally works in Minecraft. Every block has two light values from 0 to 15 assigned to it, one for sky brightness and one for torch brightness. A block in direct sunlight has a sky value of 15. A block in the shade directly adjacent to it has a value of 14 and so on. Blocks deep underground far from any block that can see the sky have sky brightness 0. Similarly for torches. A torch block has light value 14 and the light value drops by 1 each block away from it.
To generate the lighting you actually see in game, Minecraft uses a 16x16 lightmap. Its axes correspond to the 16 light levels of each type. If a block has torch brightness x and sky brightness y, it uses (x,y) for its lightmap coordinates. The lightmap is not in any of the game's files but is generated each frame. You may have found that light_normal.png file in minecraft.jar, but it is not used at all. Two variables affect the lightmap, the time of day and the torch flicker. Minecraft implements night and day and torch flicker by making the entire lightmap darker or lighter rather than by adjusting the sky/torch brightness values.
So how does MCPatcher convert lightmap0.png into a 16x16 lightmap? The palette must be exactly 32 pixels high. The top 16 rows represent sunlight and the bottom 16 represent torchlight. Two columns, 16 pixels from the top half and 16 pixels from the bottom half, are chosen to form the axes of the final 16x16 lightmap used for rendering.
In the top half, the left-hand side represents night and the right-hand side represents day, with the dusk/dawn transitions in between. The very far right of the palette represents lightning flashes. Again, there is no specified width for the palette, but more width means more room for detail in the dusk/dawn transitions.

Blue=night, orange=dusk/dawn, cyan=day, yellow=lightning. (Template by Misa.)
Torches work similarly, but in this case x is simply a random value based simulating torch flicker. The variation along the x dimension will determine how noticable torch flicker is. To have completely steady torchlight with no flicker, make all pixels along each row the same color.
The method described above is used for all three worlds (Overworld, Nether, The End), but since there is no night or day in Nether and The End, the "time of day" value is constant. For these worlds you can simply give each row 0-15 the same color all the way across.
Note about nightvision potions: In the vanilla game, the nightvision effect is computed by scaling the RGB values by 1.0 / max(R,G,
. For example, (0.2, 0.3, 0.6) would brighten to (0.333, 0.5, 1.0) after dividing by 0.6. You can override this behavior with a custom lightmap by making the height 64 pixels instead of 32. Provide four palettes instead of two: normal sun, normal torch, nightvision sun, nightvision torch.
Connected Textures (sample ctm .properties)
MCPatcher offers a greatly enhanced version of the Connected Textures Mod. In addition to connecting blocks to their neighbors in various ways, MCPatcher supports random, repeat, and fixed methods. Any of these methods can be applied conditionally by block ID, tile name, metadata, face, biome, or height.
Important! As of 1.5, CTM uses separate pngs for each tile rather than tilesheets. This is consistent with the new format for terrain and items in vanilla. The Convert Texture Pack option will automatically split old CTM tilesheets into separate tiles.
Create a ctm/ folder in your texture pack, and create one or more subfolders within that. The subfolders are simply to make organization easier, MCPatcher doesn't care about their names. Each subfolder should contain one or more properties files and a set of png images that will be used as replacement textures. Each properties file represents one block or tile override and contains a method, some supporting textures, and optional conditions like metadata or face. Multiple properties files can affect the same block or tile, but only the first matching one (in alphabetical order by filename) will be used.
A simple connected glass block requires a properties file and 47 separate textures:
The tiles must be separate png files in the /ctm/myglass directory following this pattern:

The image above shows the pattern of the 47 tiles. In your texture pack you must provide 47 separate image files, not just a single tilesheet.
Horizontally-connected CTM follows this pattern. Again, use 4 separate images, not a tilesheet.

Vertically-connected CTM follows this pattern:
See the sample ctm.properties file for more information.
A CTM rule can act on the output of another CTM rule. Just use the full path of the first CTM tile in the second's matchTiles property. Here's how to create randomized horizontally-connected bookshelves:
Better Glass (sample renderpass.properties, sample texture pack)
The Better Glass mod extends Connected Textures to add full alpha channel support to glass blocks and panes.
Colored glass is made with two textures, one for the frame and another for the glass part. Due to a limitation of the game's renderer, the glass part will disappear when it is behind another translucent texture like water or ice. However the frame will remain visible, which is a decent compromise.
The renderPass property specifies when the block should be rendered. Each render pass has different properties:
As you may have guessed, Better Glass can be used with any block that supports CTM by adding the appropriate entries to their properties files. One limitation is that the properties must be based on block ID rather than tile name. Also keep in mind that the render pass is applied to all blocks with the same block ID. Render pass 2 replaces render pass 0, so if you assign, for example, stone slabs to render pass 2, then you must have CTM rules covering all slabs (block ID 44) for render pass 2. Otherwise the other slabs will be invisible.
Better Skies (sample sky.properties, skybox template)
Tired of the default starfield? MCPatcher supports fully customizable skyboxes! Multiple skyboxes can be layered together using several blending methods and set to fade in and out at certain times of the day.
Each "layer" of custom sky must have a .properties file located at /environment/sky0/sky<n>.properties. In it you specify a texture (default: /environment/sky0/sky<n>.png), the time of day the texture should fade in and out, and a blending method (default: add). Various blending methods are available: add, subtract, multiply, dodge, burn, screen, and replace. See the sample sky.properties file for more options.
The skybox texture is mapped onto a rotating cube around the game world. The texture can be any size but must have 2 rows of 3 tiles. The template shows how the six tiles on the texture map to faces of the skybox. This orientation is taken at noon in game time, so the sun is drawn in the center of the top face and the moon in the center of the bottom face. This means that a custom starfield should have whatever you want to be directly overhead on the bottom face.
Better Skies works only in the overworld. The Nether and The End are not supported.
It is highly recommended to use the built-in Convert Texture Pack option to convert your texture pack from 1.4.7 to 1.5. It does everything Mojang's unstitcher.jar does while converting MCPatcher-specific features like CTM to the new format as well.
Custom Animations
MCPatcher is not required to animate item or block textures. See the wiki for that. The vanilla method also works for CTM animations. Just create a .txt file with the same name as the CTM texture and use the same format as you would for blocks or terrain.
MCPatcher adds the ability to animate other textures that are not part of a tilesheet, such as mob skins. Create a .properties file in the anim/ folder of your texture pack. In it, supply the source and destination texture, along with coordinates of the area you wish to animate. The following example animates the first painting in kz.png.
from=/anim/mypainting.png to=/art/kz.png x=0 y=0 w=16 h=16from is the location of your custom animation. to is the texture you wish to animate. x, y, w, h are the coordinates of the rectangular area of that texture. The width of the from texture should be equal to the value of w; if not, it will be scaled automatically. You can have many different animations applied to the same texture by creating separate properties files for each. The properties file can also contain tile order and speed information. To do this, add a series of entries of entries
tile.X=Y duration.X=ZX starts at 0 and represents the order you want frames to display in. Y in the tile number in the animation .png file. The first tile is 0, the second is 1, etc. Z is the duration you want that frame displayed, in game ticks (if omitted, duration is assumed to be 1 for that frame). For example, to make an animation with 3 tiles, run on a 5-frame animation with a pause in the middle, the .properties file might look like this:
tile.0=0 tile.1=1 tile.2=2 duration.2=5 tile.3=1 tile.4=0The property "duration" without a suffix specifies a default duration that applies to all frames that do not have a duration.X property. Adding duration=2 to the above example would slow down frames 0, 1, 3, and 4 to 2 ticks but leave frame 2 alone since it has its own duration set.
The compass and clock animations may be customized by providing the file /misc/{compass,clock}.properties. In the properties file, you specify a series of texture layers, each of which can be fixed or rotate independently. You could have a clock with three layers, a base, an hour hand, and a minute hand, for example. Alpha transparency and several blending methods are supported. See compass.properties for more details. Also see this sample texture pack.
HD Font
To allow for more control over the widths of individual characters, MCPatcher offers a way to specify them manually. Create a text file called /font/default.properties or /font/alternate.properties. Each line in this file specifies the width of a character:
width.<ascii value="" 0-255="">=<width 0-8="">For example, to specify the widths of capital A, B, and C, you might use
width.65=5.9 width.66=5 width.67=5.25Values can be floating point numbers (Vanilla MC only supports integer widths) and range from 0-8 regardless of the resolution of the font. You do not need to specify widths for all characters, only ones where you want to override the default width.
The space character is special. Its default width is 1/2 of the average of the widths of A-Z, a-z, and 0-9. This makes the spacing between words match the overall width of the font. However you can override this the same way, by setting width.32 to a custom value.
Nuin has created an Excel spreadsheet to make the font calculations easier. Also see his Berylium font.
Random Mobs (sample mob.properties redcow_overlay.png, snowman_overlay.png)
Based on Balthichou's RandomMobs. You may include multiple skins for the same mob and the game will automatically pick one at random. Add a number to the end of the filename before the .png, e.g., /mob/creeper2.png. Start at number 2 and do not skip any numbers. For the wolf textures, make sure you include the same number of wolf, wolf_tame, and wolf_angry textures or it will look strange when a wolf changes moods. The same goes for the overlay textures spider_eyes.png and enderman_eyes.png.
Mob skins can be restricted to certain areas of the world by biome or height. You can have snow-themed skins for snowy biomes and cave-themed skins for mobs that spawn underground. To do this, create a .properties file with the same name as the base mob texture (e.g., /mob/creeper.properties). Inside, specify the list of skins to use for various biomes and height ranges. See the sample mob.properties file for details.
You can also customize the overlays on mooshrooms and snowmen:
- /mob/redcow_overlay.png (template here) - Used in place of the mushroom texture for the mooshroom overlay. The three tiles are the three different mushrooms on the cow's back and head.
- /mob/snowman_overlay.png (template here) - Used instead of the pumpkin texture for the snowman's helmet. Arrange the faces of the helmet as shown in the template. Another option is to make a fully transparent overlay and customize the base snowman skin instead. Or do a mixture of both, it's up to you.
Custom Colors (sample color.properties)
The Custom Colors mod to allows texture pack authors to customize, not just swamps, but many of the game's hardcoded colors. Here are the files you will need to include in the texture pack:
/color.properties:
This text file allows you to specify colors for potions, spawner eggs, lilypads, and a base color for water particle effects (drops, splashes, and bubbles). A template file with the game's default values is available here. See the # comments above each value for a description of how it is used in game.
/misc/redstonecolor.png:
This is a 16x1 bitmap used for redstone wiring and particle effects only. Other redstone colors (torches, repeaters, etc.) are pulled from the block textures as normal. The x-axis of the redstonecolor.png bitmap represents the current strength. 0 is fully off, 15 is fully on.
/misc/stemcolor.png:
This is an 8x1 bitmap used for pumpkin and melon stems at each growth stage. 0 is a sprout, 7 is fully grown.
/misc/lavadropcolor.png:
This is a bitmap used for the lava drop particle effect as it cools during its fall. The height should be 1 pixel but the width can be anything. The x-axis represents the particle's age in game ticks. Lava drop particles are generally not visible for the first 40 ticks or so because they start out embedded in the block above, so 90 pixels is a good width. If the particle lives longer than the width of the image, the last pixel is used for the remaining time.
/misc/myceliumparticlecolor.png:
Used for the particle effect created by mycelium blocks. This image can be any size. A random color is chosen from this bitmap for each new particle.
/misc/xporbcolor.png:
Used for the experience orbs. This image can be any size. The color chosen will move in a sinusoidal pattern from (0,0) to the end of the image. The speed of the sine wave is slowed down by a factor of 4 to allow texture packs to have slower pulsing xp orbs than the default. If you want to keep the default speed, simply tile your image 4 times vertically.
/misc/swampgrasscolor and /misc/swampfoliagecolor:
256x256 biome palettes used in swampy areas. They work just like their non-swamp counterparts.
/misc/pinecolor and /misc/birchcolor:
Biome color palettes for pine and birch leaves. The pixel at (127, 127) is used when the block is held or in inventory.
/misc/watercolorX.png:
Biome color palette for water. Note the capital X in the filename to prevent the default watercolor.png from being used accidentally.
Other biome palettes:
You can also assign a custom biome palette to any standard block. Here "standard" means any block that does not already have its own special coloring. In MCP terms, this is any Block subclass that does not override the colorMultiplier method. Create a 256x256 bitmap, then in color.properties add a line
palette.block.<path>=<list of="" block="" ids="">For example, to use /misc/stonecolor.png with all stone and ore blocks, use
palette.block./misc/stonecolor.png=1 14 15 16 21 56 73 74To further restrict the palette by block metadata, use the syntax <id>:<metadata>, e.g., 43 would affect all double slabs, 43:1 would apply to only sandstone double slabs.
/environment/lightmap-1.png: (Nether)
/environment/lightmap0.png: (Overworld)
/environment/lightmap1.png: (The End)
These are custom lighting palettes for each world. The height must be exactly 32 (or 64, see note about nightvision below) pixels but they can be any width. Each bitmap actually consists of two palettes, but we'll get into that later.
First an explanation of how lighting normally works in Minecraft. Every block has two light values from 0 to 15 assigned to it, one for sky brightness and one for torch brightness. A block in direct sunlight has a sky value of 15. A block in the shade directly adjacent to it has a value of 14 and so on. Blocks deep underground far from any block that can see the sky have sky brightness 0. Similarly for torches. A torch block has light value 14 and the light value drops by 1 each block away from it.
To generate the lighting you actually see in game, Minecraft uses a 16x16 lightmap. Its axes correspond to the 16 light levels of each type. If a block has torch brightness x and sky brightness y, it uses (x,y) for its lightmap coordinates. The lightmap is not in any of the game's files but is generated each frame. You may have found that light_normal.png file in minecraft.jar, but it is not used at all. Two variables affect the lightmap, the time of day and the torch flicker. Minecraft implements night and day and torch flicker by making the entire lightmap darker or lighter rather than by adjusting the sky/torch brightness values.
So how does MCPatcher convert lightmap0.png into a 16x16 lightmap? The palette must be exactly 32 pixels high. The top 16 rows represent sunlight and the bottom 16 represent torchlight. Two columns, 16 pixels from the top half and 16 pixels from the bottom half, are chosen to form the axes of the final 16x16 lightmap used for rendering.
In the top half, the left-hand side represents night and the right-hand side represents day, with the dusk/dawn transitions in between. The very far right of the palette represents lightning flashes. Again, there is no specified width for the palette, but more width means more room for detail in the dusk/dawn transitions.

Blue=night, orange=dusk/dawn, cyan=day, yellow=lightning. (Template by Misa.)
Torches work similarly, but in this case x is simply a random value based simulating torch flicker. The variation along the x dimension will determine how noticable torch flicker is. To have completely steady torchlight with no flicker, make all pixels along each row the same color.
The method described above is used for all three worlds (Overworld, Nether, The End), but since there is no night or day in Nether and The End, the "time of day" value is constant. For these worlds you can simply give each row 0-15 the same color all the way across.
Note about nightvision potions: In the vanilla game, the nightvision effect is computed by scaling the RGB values by 1.0 / max(R,G,
Connected Textures (sample ctm .properties)
MCPatcher offers a greatly enhanced version of the Connected Textures Mod. In addition to connecting blocks to their neighbors in various ways, MCPatcher supports random, repeat, and fixed methods. Any of these methods can be applied conditionally by block ID, tile name, metadata, face, biome, or height.
Important! As of 1.5, CTM uses separate pngs for each tile rather than tilesheets. This is consistent with the new format for terrain and items in vanilla. The Convert Texture Pack option will automatically split old CTM tilesheets into separate tiles.
Create a ctm/ folder in your texture pack, and create one or more subfolders within that. The subfolders are simply to make organization easier, MCPatcher doesn't care about their names. Each subfolder should contain one or more properties files and a set of png images that will be used as replacement textures. Each properties file represents one block or tile override and contains a method, some supporting textures, and optional conditions like metadata or face. Multiple properties files can affect the same block or tile, but only the first matching one (in alphabetical order by filename) will be used.
A simple connected glass block requires a properties file and 47 separate textures:
/ctm/myglass/block20.properties: method=ctm tiles=0-46
The tiles must be separate png files in the /ctm/myglass directory following this pattern:

The image above shows the pattern of the 47 tiles. In your texture pack you must provide 47 separate image files, not just a single tilesheet.
Horizontally-connected CTM follows this pattern. Again, use 4 separate images, not a tilesheet.

Vertically-connected CTM follows this pattern:

See the sample ctm.properties file for more information.
A CTM rule can act on the output of another CTM rule. Just use the full path of the first CTM tile in the second's matchTiles property. Here's how to create randomized horizontally-connected bookshelves:
# Main top-level bookshelf CTM /ctm/bookshelf/block47.properties: method=horizontal tiles=0-3 # One additional CTM matching each output tile of the previous CTM # Tiles 4.png and 5.png will be used in place of 0.png, etc. /ctm/bookshelf/book0.properties: matchTiles=/ctm/bookshelf/0.png method=random tiles=4 5 /ctm/bookshelf/book1.properties: matchTiles=/ctm/bookshelf/1.png method=random tiles=6 7 /ctm/bookshelf/book2.properties: matchTiles=/ctm/bookshelf/2.png method=random tiles=8 9 /ctm/bookshelf/book3.properties: matchTiles=/ctm/bookshelf/3.png method=random tiles=10 11
Better Glass (sample renderpass.properties, sample texture pack)
The Better Glass mod extends Connected Textures to add full alpha channel support to glass blocks and panes.
Colored glass is made with two textures, one for the frame and another for the glass part. Due to a limitation of the game's renderer, the glass part will disappear when it is behind another translucent texture like water or ice. However the frame will remain visible, which is a decent compromise.
/ctm/myglass/block20.properties: method=ctm tiles=0-46 renderPass=2 /ctm/myglass/block20a.properties: method=ctm tiles=47-93 renderPass=3 /ctm/myglass/block102.properties: method=ctm tiles=0-46 /ctm/myglass/block102a.properties: method=ctm tiles=47-93 renderPass=3
The renderPass property specifies when the block should be rendered. Each render pass has different properties:
- 0: Normal, solid blocks. Virtually all blocks use this rendering pass. Only on/off transparency is supported.
- 1: Existing translucent blocks (water, ice, etc.).
- 2: Same as pass #0 but with backface culling disabled. Again, only on/off transparency is supported. If you find it unsettling to see only the front faces of a supposedly transparent glass block, use this render pass to make all six visible.
- 3: Extra pass with full alpha support. Will be hidden when rendered behind water, etc., from pass #1. The blending method can be changed in renderpass.properties.
As you may have guessed, Better Glass can be used with any block that supports CTM by adding the appropriate entries to their properties files. One limitation is that the properties must be based on block ID rather than tile name. Also keep in mind that the render pass is applied to all blocks with the same block ID. Render pass 2 replaces render pass 0, so if you assign, for example, stone slabs to render pass 2, then you must have CTM rules covering all slabs (block ID 44) for render pass 2. Otherwise the other slabs will be invisible.
Better Skies (sample sky.properties, skybox template)
Tired of the default starfield? MCPatcher supports fully customizable skyboxes! Multiple skyboxes can be layered together using several blending methods and set to fade in and out at certain times of the day.
Each "layer" of custom sky must have a .properties file located at /environment/sky0/sky<n>.properties. In it you specify a texture (default: /environment/sky0/sky<n>.png), the time of day the texture should fade in and out, and a blending method (default: add). Various blending methods are available: add, subtract, multiply, dodge, burn, screen, and replace. See the sample sky.properties file for more options.
The skybox texture is mapped onto a rotating cube around the game world. The texture can be any size but must have 2 rows of 3 tiles. The template shows how the six tiles on the texture map to faces of the skybox. This orientation is taken at noon in game time, so the sun is drawn in the center of the top face and the moon in the center of the bottom face. This means that a custom starfield should have whatever you want to be directly overhead on the bottom face.
Better Skies works only in the overworld. The Nether and The End are not supported.
Other Information
Spoiler:
Other links:
Settings, including the list of enabled mods and files to include, are saved to mcpatcher3.xml in the .minecraft folder. The format should be self-explanatory for those familiar with XML.
From the main patcher window, you can also
If you are curious about the actual changes MCPatcher makes to minecraft.jar, use MCP to decompile a patched minecraft.jar.
Other links:
- Java source code - includes a project for the IntelliJ IDEA IDE.
- Older versions: Bitbucket github
- xau's original MCPatcher thread is available here. The old patcher (1.1.12_02) no longer works as of Beta 1.5_01.
Settings, including the list of enabled mods and files to include, are saved to mcpatcher3.xml in the .minecraft folder. The format should be self-explanatory for those familiar with XML.
From the main patcher window, you can also
- enable or disable individual mods by checking/unchecking them,
- edit a mod by double-clicking it,
- remove altogether a mod you previously added by selecting it and clicking the Remove (-) button, and
- change the order in which mods will be applied using the up and down arrows.
If you are curious about the actual changes MCPatcher makes to minecraft.jar, use MCP to decompile a patched minecraft.jar.
Version History
Spoiler:
5/4 3.0.4 release
5/4 3.0.4 release
- Updated for 1.5.2.
- Fixed potential crash with Better Grass.
- Report conflicts when mod order would cause MCPatcher's changes to be overwritten.
- Fixed compatibility with recent BTW versions.
- Fixed width calculation of colored text.
- Fixed crash when /misc/*color.png has wrong dimensions.
- Fixed conversion of default /ctm.png.
- Fixed white lines between textures.
- Fixed CTM for brewing stand.
- Further optimization of mipmapping/AA.
- Fixed Better Grass with fast graphics.
- Duplicate carrots_0-2.png to potatoes_0-2.png if the latter is not already present when converting 1.4 texture pack.
- Improved custom compass/clock performance.





