Development resources

Minecraft is written in Java and C++, 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 GZipped 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.
=== Java Edition ===
* Java Edition Classic level format used by Classic.
* Java Edition Indev level format used by Indev.
* Java Edition Alpha level format used by Alpha (previously Infdev).
* Java Edition level format used by 1.0
** Anvil file format used by 1.0 (from 1.2)
*** Region file format used since 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.
** player.dat format used to store the state of players.
** Structure block file format use to store structures saved by the structure block.
** villages.dat format used to store the state of villages in a level.
=== Bedrock Edition ===
* Bedrock Edition level format used by .
== Other formats ==
* Servers.dat format used to store the list of saved multiplayer servers.
* 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.
Name/Link 	Language	Description
MCModify 	Java/C++	Library that allows for loading, manipulating, and saving all Minecraft formats.
nbt 	Java 	Flexible and intuitive library for reading and writing Minecraft's NBT format on the JVM, with emphasis on custom tags.
Example NBT Class 	Java 	Basic brute-force Java class that reads and writes NBT structures.
Example Classic Level Class	Java 	Java class(es) to read and write Classic levels.
Substrate 	C# 	C# classes to load and edit levels.
Craft.Net 	C# 	C# library for writing server software and messing with worlds and such.
c10t 	C++ 	An open source cartography tool.
libnbt++ 	C++ 	C++ library to read and write NBT structures.
CNBT 	C 	C library to read and write NBT structures.
Minecraft-Perl 	Perl 	Perl library to edit Minecraft files.
Python NBT Parser 	Python 	Python library to edit NBT structures.
pymclevel 	Python 	Python library to edit Minecraft levels. MCEdit was built upon this library.
J2Blocks 	Java 	A Java library for easy generation of Minecraft worlds.
nbtlib 	Python 	A modern python library to read and edit nbt data.
== Mod creation tools [Outdated] ==
* Minecraft Coder Pack used to create and edit mods to both the Minecraft client and server
* MCAnimator - a modeler: used to create custom models which can have textures and animations. Has many tools to help you in the creation process. You can export to all the latest Minecraft versions. It has a library that allows perfect animations control.
* 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 current multiplayer protocol, see the MCDevs wiki (wiki.vg).
== Resources ==
URL 	Program 	OS 	Notes
http://www.delorie.com/djgpp/ 	Djgpp, GCC for Windows 	Windows 	
http://www.cygwin.com/ 	Cygwin the Linux-on-Windows (Unix Environment)	Windows 	Good for Windows users.
http://www.microsoft.com/express/ 	Microsoft Visual Studio Express 	Windows 	Free version of Visual Studio, an IDE and compiler for C++, C# and Visual Basic.
http://java.sun.com/javase/downloads/index.jsp	Java Development Kit download 	Cross-platform	Essential if you want to interpret Java code
Category:Development
es:Recursos de desarrollo
fr:Aide au développement
hu:Fejlesztési források
it:Risorse per lo sviluppo
ja:開発技術情報
ko:개발 리소스
nl:Ontwikkelingsbronnen
pt:Recursos de desenvolvimento
ru:Для разработчиков
zh:开发资源