En esta ocasión nos daremos a la tarea de desarrollar un plugin muy sencillo que escuche el comando hello y salude al avatar replicando hello <usuario>, esto con el fin de explorar los pasos y requerimientos para el desarrollo de plugins para Minecraft.

Prerequisitos :

Tener instalado el NetBeans 7.0
Acceso a Internet
Acceso a un servidor de Minecraft con Bukkit instalado

Pasos :

Descargar la librería de desarrollo para Bukkit
Ir al servidor Wiki de Bukkit

http://wiki.bukkit.org/

Buscar el enlace y descargar el archivo

Bukkit API - For Developers

La vesion al momento de escribir estos pasos se puede descargar asi :

wget http://ci.bukkit.org/job/dev-Bukkit/lastSuccessfulBuild/artifact/target/bukkit-0.0.1-SNAPSHOT.jar

Abrir el NetBeans 7.0

Crear un proyecto Java, del tipo Java Class Library

Colocarle el nombre mchelloplugin

Para evitar problemas con el API de Bukkit copiaremos esta dentro del proyecto,

para que no dependa del ambiente de desarrollo y siempre quede asociado al proyecto

Active la opcion

Use Dedicated Folder for Storing Libraries

Verifique que en la caja de dialogo aparezca

Libraries Folder: ./lib

Pulse el boton Finish

Vamos a Libraries en el arbol del proyecto

Click derecho y seleccionamos Add Jar/Folder

Buscamos el archivo bukkit-0.0.1-SNAPSHOT.jar

lo adicionamos con la opcion Copy Libraries to Folder

Ahora crearemos la clase Java que implementa el Plugin

Vamos a Source Packages

Click derecho y New Java Class

Colocamos como Class Name

HelloPlugin

Colocamos como Package

mjs.minecraft.plugin.hello

Pulsamos el boton Finish

Reemplazamos el contenido del archivo por :


view plaincopy to clipboardprint?

package mjs.minecraft.plugin.hello;

import java.util.logging.Logger;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class HelloPlugin extends JavaPlugin {

public static final Logger log = Logger.getLogger("Minecraft";

@Override
public void onDisable() {
PluginManager pluginManager = getServer().getPluginManager();
log.info("Hello plugin has been disabled.";
}

@Override
public void onEnable() {
log.info("Hello plugin has been enabled!";
}

@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {

if(label.equals("hello") {
Player player = (Player) sender;
player.sendMessage("Hello " + player.getDisplayName());
return true;
}

return false;
}
}



---------------------------------

Vamos a Source Packages y al paquete

<default package>

Click derecho y New Empty File

Colocamos como File Name
plugin.yml

Pulsamos el boton Finish

Reemplazamos el contenido del archivo por :

name: MHello
main: mjs.minecraft.plugin.hello.HelloPlugin
version: 0.1
author: Marlon J. Manrique
website: http://www.marlonj.com
description: Example command to say hello to the user

commands:
hello:
description: Say hello to the user.
usage: /<command>


-------------------------------
En este momento ya tenemos los componentes necesarios para el Plugin
El descriptor y la clase principal del mismo
Compilamos el proyecto, no deben salir errores (F6)
Construimos la solución (Build, F11)
Esto genera el directorio dist que dentro tiene el archivo mchelloplugin.jar
Debemos copiar este archivo al directorio plugins de nuestro servidor
Por ejemplo en nuestro ambiente de desarrollo
scp /home/<usuario>/NetBeansProjects/mchelloplugin/dist/mchelloplugin.jar minecraft@<ipservidor>:/home/minecraft/server/plugins
Reiniciamos el servicio de McMyAdmin o el de Minecraft en el servidor
si usamos mcmyadmin
sudo service mcmyadmin restart
si usamos minecraft
sudo service minecraft restart
Ahora se puede listar el plugin dentro del administrador de McMyAdmin
Creando un Plugin minecraft [tutorial]

Podemos entrar desde el visor de Minecraft a nuestro servidor y ejecutar el comando
<pulsar la tecla t>
/hello
El servidor responde
hello <usuario>


tutorial

Descargar el archivo con el proyecto listo para NetBeans 7.0 (incluye el API de Bukkit y el codigo fuente del ejemplo)
http://www.marlonj.com/blog/wp-content/uploads/2011/06/mchelloplugin.zip