Bukkit is a simple API that allows for modifying the normal Minecraft multiplayer experience using plugins.
Bukkit is now discontinued, and is no longer available for newer versions of Minecraft. Spigot, a version of Bukkit that boasts improving server performance is available. The API for Spigot is essentially the same as Bukkit.
Minecraft Version | Spigot Download Link | Release Date |
---|---|---|
1.10.2 | Link | 2016-11-03 |
1.10 | Link | 2016-06-26 |
1.9.4 | Link | 2016-06-09 |
1.9.2 | Link | 2016-03-30 |
1.9 | Link | 2016-02-29 |
1.8.8 | Link | 2015-07-28 |
1.8.7 | Link | 2015-06-05 |
1.8.6 | Link | 2015-05-25 |
1.8.5 | Link | 2015-05-22 |
1.8.4 | Link | 2015-04-17 |
1.8.3 | Link | 2015-02-20 |
1.8 | Link | 2014-09-02 |
1.7.10 | Link | 2014-06-26 |
1.7.9 | Link | 2014-04-14 |
1.7.8 | -- | 2014-04-11 |
1.7.5 | Link | 2014-02-26 |
1.7.2 | Link | 2013-10-25 |
1.6.4 | Link | 2013-09-19 |
1.6.2 | Link | 2013-07-08 |
1.5.2 | Link | 2013-05-02 |
1.5.1 | Link | 2013-03-21 |
1.4.7 | Link | 2013-01-09 |
1.4.6 | -- | 2012-12-20 |
The simplest method to add the Bukkit API to your project is to download the Bukkit.jar directly from the Spigot Repository and add it to your project's classpath. Legacy versions of Bukkit can be found at the Bukkit Repository.
The other is to add it as a Maven dependency, by adding the following lines to your pom.xml
:
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<!--Bukkit API-->
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>{VERSION}</version>
<scope>provided</scope>
</dependency>
</dependencies>
The plugin's main class is the entry point for Bukkit to load an interact with your plugin. It is a class that extends JavaPlugin
and only one instance of it should be created by your plugin. By convention it is good to give this class the same name as your plugin.
Here is an example of a main plugin class for the plugin "MyPlugin":
package com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName};
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
//Called when the plugin is enabled
getLogger().info("onEnable has been invoked!");
}
@Override
public void onDisable() {
//Called when the plugin is disabled
getLogger().info("onDisable has been invoked!");
}
}
To access your plugin instance from another class, you'll need to store the instance of your MyPlugin class created by Bukkit so that is accessible from outside of the class.
public class MyPlugin extends JavaPlugin {
private static MyPlugin instance; //Effectively final variable containing your plugin's instance
public MyPlugin(){
if(MyPlugin.instance != null) { //Unnecessary check but ensures your plugin is only initialized once.
throw new Error("Plugin already initialized!");
}
MyPlugin.instance = this; //A plugin's constructor should only be called once
}
public static MyPlugin getInstance(){ //Get's your plugin's instance
return instance;
}
//your other code...
}
Then, to access your main class from another class, simply use MyPlugin.getInstance()
public class MyOtherClass {
public void doSomethingWithMainClass(){
MyPlugin.getInstance().getLogger().info("We just used MyPlugin");
}
}
The plugin.yml file goes in the root of your final jar file and provides essential information to Bukkit to load your plugin. The most simple plugin.yml looks like this
name: {$PluginName} //The name of the plugin
main: {$PackageName}.{$MainClass} //The fully qualified name of the main class.
version: {$Version} //The plugin's version
For example with the above MyPlugin class
name: MyPlugin
main: com.example.myplugin.MyPlugin
version: 1.0
BuildTools.jar is a solution to building Bukkit, CraftBukkit, Spigot, and the Spigot-API. All of which is done on your computer! A few prerequisite programs are necessary, but the instructions below will guide you through everything you need to do.
There are two applications necessary to use BuildTools: Git and Java.
In order for BuildTools to run on Windows, you will need to install Git. For Windows it is distributed via git-scm, which can be downloaded here. Install it where you like, it will provide git bash, which will be used to run the BuildTools jar. Just keep hitting next when running the installer.
Download JRE 8 from here and install. Just keep hitting next when running the installer.
Both git and Java, as well as util commands, can be installed using a single command via your package manager.
Debian/Ubuntu: sudo apt-get install git openjdk-7-jre-headless tar
CentOS/RHEL: sudo dnf install git java-1.7.0-openjdk-devel tar
Arch: pacman -S jdk8-openjdk git
Git can be downloaded from: http://sourceforge.net/projects/git-osx-installer/files/
Java may need to be updated from the Apple distributed version, and even if previously updated, may need to be linked for shell use. Please follow steps found here: https://gist.github.com/johan/10590467
Download BuildTools.jar from https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar.
Open your terminal if you are on Linux, or git bash on Windows.
Navigate to where you downloaded BuildTools.jar, or use the command line way to download the jar to your current directory.
Run BuildTools.jar from the terminal (Do not double-click BuildTools.jar) by doing the following:
Wait as it builds your jars. In a few minutes you should have freshly compiled jars!
You can find CraftBukkit and Spigot in the same directory you ran the the BuildTools.jar in (for minecraft version 1.10, they would be craftbukkit-1.10.jar and spigot-1.10.jar). You can find Spigot-API in \Spigot\Spigot-API\target\ (for minecraft version 1.10, it would be spigot-api-1.10-R0.1-SNAPSHOT.jar).
To be able to create a server, you need to have the spigot or the bukkit jar file. Reefer to the versions topic to select your jar
@echo off
java -Xms512M -Xmx1G -XX:+UseConcMarkSweepGC -jar {YOUR_JAR.jar}
pause
Don't forget to change {YOUR_JAR.jar} for the jar you downloaded before starting these topics.
-Xms
to change the minimum allowed RAM (Ex: -Xms1024M = 1024MB, -Xms1G = 1GB). You can also edit -Xmx
to change the maximum allowed RAM. Make sure the maximum is bigger than the minimum.start.bat
file. Your server should now open. To run the server, you must accept the EULA.eula.txt
change eula=false
to eula=true
Click "Save" and then you should now be able to start your server.start.bat
, open Minecraft, add a server and put localhost
as the IP.