Development resources

Minecraft is written in Java, and although the class files are obfuscated, the community has figured out most of the inner workings of Minecraft. Notch himself gave notes on a common format used by Minecraft, the NBT format. From this, the community has derived information for the files that use the NBT format.

NBT Format
The NBT Format is used by almost every file in Minecraft. It is a GZip'd tree structure of tags, where each tag has a type, name, and payload based on the type. In 1.2 snapshot 12w07a and above, an additional tag type was added to the original tag types that existed since Indev.

Level Formats
Each edition of Minecraft uses its own file format to store levels. The following information about the different level file formats can be used by software developers to create map editors, servers, level generators, and other programs. Blocks, Items, Data Values, and Entities are common to all map types.
 * Classic Level Format used by Minecraft Classic: Survival, Creative, and Multiplayer.
 * Indev Level Format used by Minecraft Indev.
 * Alpha Level Format used by Minecraft Alpha (previously Minecraft Infdev).
 * Level Format used by Minecraft 1.0
 * Player.dat Format used to store the state of players.
 * Anvil file format used by Minecraft 1.0 (from 1.2)
 * Region file format used by Minecraft Beta (from Beta 1.3).
 * Chunk format for the individual 16x256x16 chunks contained in regions.
 * Map Item Format used to store the colors on the craftable Map items.
 * Pocket Edition Level Format used by Minecraft Pocket Edition.

Schematic files are NBT files used by a few 3rd party utilities to store sections of a map for later use.

Libraries
These are community-created libraries to interact with the various files used by Minecraft.
 * OpenCraft IO, JNBT, and Model libraries to handle everything.
 * Java Class to read and write NBT structures.
 * Java Classes to read and write Classic Maps.
 * C# library to load and edit levels.
 * C# library for writing server software.
 * C++ code for reading Minecraft files, part of c10t, a cartography tool.
 * C library to read and write NBT structures.
 * Perl library to read, write, and manipulate Minecraft files.
 * Python library to read and write NBT structures
 * Python library to load and edit Alpha worlds

Mod Creation Tools

 * Minecraft Coder Pack used to create and edit mods to both the Minecraft client and server
 * Techne - the modeler: used to create custom models for in game use, comes with library of standard models.
 * FMCModeler can be used to create custom models for in game use, can also create models from Java code (with some restrictions). Written in Flash. It appears to be abandoned, but it's still working when used with CustomRenderer.

Server Protocol
Classic Server Protocol used by the Minecraft Classic Creative Multiplayer server.

For info on the Minecraft Beta server protocol, see the Minecraft Coalition Wiki.

Resources
Development Resources Recursos de desarrollo Aide au développement Fejlesztési források Development Resources Для разработчиков 开发资源