The documentation is for developing plugins and is split into the
respective packages for each subject matter. This documentation does not
cover running a server, contributing code back to the project, or setting
up a workspace. Working knowledge of the Java language is a prerequisite
for developing plugins.
For basic plugin development, see the plugin
package. It covers the basic requirements of a plugin jar.
Note: While the Bukkit API makes every effort to ensure stability, this is
not guaranteed, especially across major versions. In particular the
following is a (incomplete) list of things that are not API.
Implementing interfaces. The Bukkit API is designed to only be
implemented by server software. Unless a class/interface is obviously
designed for extension (eg BukkitRunnable), or
explicitly marked as such, it should not be implemented by plugins. Although
this can sometimes work, it is not guaranteed to do so and resulting bugs
will be disregarded.
Constructing inbuilt events. Although backwards compatibility is
attempted where possible, it is sometimes not possible to add new fields to
events without breaking existing constructors. To ensure that the API
continues to evolve, event constructors are therefore not plugin API.
Implementation classes. Concrete implementation classes packaged with
Bukkit (eg those beginning with Simple) are not API. You should access them
via their interfaces instead.