Resource pack

The resource pack system is an API replacement for texture packs and a way for players to further customize their Minecraft experience.

Resource packs eventually allow players to customize music, sounds, language files, end credits, and fonts without any code modification. Ultimately, every mod/plugin will be its own resource pack, with vanilla incorporated as a resource pack by itself; users will be able to apply multiple resource packs at once. Old Texture Packs won't work with the new updated version of Resource Packs.

Texture Packs
All texture pack functionality has been incorporated into resource packs as of 1.6. All prior texture packs must first be converted to be usable by the game. A tool called Minecraft Texture Ender is available from Mojang to manually convert "unstitched" (1.5 compatible) texture packs to resource packs. "Stitched" packs, which are texture packs meant for versions prior to 1.5, must first be unstitched with Unstitcher. Converted packs function as texture packs when loaded in the game.

Additional functionality
Resource packs include a new metadata format that allows plugin developers in addition to Mojang themselves to easily include whole new types of resources such as sounds, language files, music, etc. with minimal difficulty. The new format will also allow Minecraft to more easily detect out of date packs, while still being able to load them. Resource packs use the entire assets folder in the minecraft directory and "1.6.jar" (a new version format in the new launcher) for usage of additional resources, and include pack.mcmeta (used to describe the resource pack like pack.txt before 1.6.1), and pack.png (a picture for the resource pack, same as texture packs).

Designing a Resource Pack
Resource Packs are much simpler to make than Texture Packs were. To make a Resource pack, copy everything from another Resource Pack, and delete all of the textures in the folder. Deleting the textures folder itself will ruin everything. To change the texture of items, rename the PNG file of what you want it to become (let's say a Raw Porkchop for example) to, for example porkchop_raw.

To rename items themselves, just go into the .lang files and edit the language you want to edit. For instance, if you wanted to rename Raw Porkchop to Bacon, just locate where it says "Raw Porkchop" and change it to "Raw Bacon."

Usage
This function would be great for adventure maps where you'd want to change the music of a certain disc, or if you'd want to change the end credits to something more user-friendly. You could even change the name of the item itself in Survival maps, so changing Birch Wood to Zebra Wood so you could have a unique back-story. And of course, changing the textures of things like texture packs have done. Keep in mind that you can also change the words of the Death Messages, Title-Screen options and more.

It seems as if the possibilities are, in fact ... endless.