Eins vorweg: Sorry für den Doppelpost, aber der Post überschreitet die Maximallänge von 10.000 Zeichen also, musste ich 2 erstellen.
=== Vorwort ===
da mich jetzt schon einige Leute per PN nach Hilfe beim Programmieren gefragt haben, dachte ich mir ich schreibe euch hier ein kleines Tutorial wie das eigentlich funktioniert. Ich werde hier auf die Programmierung unter Bukkit eingehen, nicht auf Java Programmierung im allgemeinen.
=== Vorraussetzungen ===
(*) Grundlegende Java Kentnisse. (Was sind Klassen, Objekte, Schleifen usw.)
(*) Das Java Development Kit
(*) Ein aktueller bukkit build von www.bukkit.org
(*) Netbeans oder eine andere IDE. (Ich gehe hier im speziellen auf Netbeans ein.)
(*) Ein Bukkit Server
(*) Interesse am selbständigen Lernen.
=== Vorbereitung ===
Kopiert euch den runtergeladenen Bukkit-Build an einen Ort den ihr euch gut merken könnt, denn ihr werdet ihn bei jedem neuen Plugin neu einbinden müssen. In meinem Fall Lagere ich ihn in meinem NetbeansProjects Ordner. Vergesst nicht euren Build regelmäßig zu aktualisieren.
Jetzt öffnet ihr Netbeans und erstellt ein neues Projekt, in diesem Fall nennen wir es “Tutorial”.
Bei dem Punkt “generate main class” könnt ihr euren paketnamen eintragen, dieser kann willkürlich gewählt sein, sollte aber euer fqdn sein wenn ihr eine Domain besitzt. Z.b so: “eu.benni1000.tutorial.Tutorial” in diesem fall würde eure Main klasse Tutorial.java heißen.
Ob ihr die generierte Klasse als Main Klasse benutzt bleibt euch überlassen, die oben genannte Methode ist nur sehr gut um schnell viele pakete zu generieren. Jetzt Solltet ihr ein Projekt angelegt haben. Herzlichen Glückwunsch, ihr seit fast mit der Einrichtung fertig. Jetzt müsst ihr nur noch den vorher runtergeladenen Bukkit-Build inkludieren. Macht einen Rechtsklick auf euer Projekt, und wählt den Menüpunkt Properties. Dort wählt ihr in der Linken Menüzeile den Punkt Libaries aus, und drückt auf den Button “Add Jar / Folder”. Hier wählt ihr den vorhin runtergeladenen Bukkit Build aus.
Jetzt seit ihr mit dem einrichten eures Projektes fertig.
=== Ein kleines Testprojekt ===
Öffnet jetzt eure Main-Klasse, ihr könnt fast alles aus der Klasse löschen, denn Bukkit hat eine eigene Struktur. Vorhanden bleiben muss nur die Deklaration der Klasse und die Information in welchem paket die klasse steckt. Habt ihr alles was oben steht 1 zu 1 nachgemacht schaut eure Klasse jetzt so aus:
Jetzt müsst ihr Bukkit darauf hinweisen das es sich hier um die Main Klasse handelt. Erreichen könnt ihr das indem ihr die Klasse die Klasse JavaPlugin extendieren lasst. Also so:
Ihr werdet während diesem und einigen anderen Arbeitsschritten, teile eures Codes markiert bekommen, das passiert weil euch imports fehlen. Ihr könnt die Fehlenden Codes Importieren indem ihr auf die kleine rote Glühbirne neben eurem Code klickt und dort auf Importieren klickt.
Ich werde ab hier nicht mehr darauf hinweisen wenn etwas importiert gehört, da es ziemlich offensichtlich dargestellt wird und das Tutorial in die Länge ziehen würde.
Jetzt solltet ihr einen Logger erstellen. Logger werden dazu benutzt in der Konsole Fehler oder Informationen auszugeben. Fügt folgenden in eueren Code ein:
Hier sehen wir auch schon einen Zugriff auf die Bukkit API mit Bukkit.getLogger(); .
Nun müsst ihr die OnEnable und die OnDisable Methode einbauen.
Ich füge die OnDisable Methode immer zuerst ein, aber das ist Geschmakssache.
Mit diesem Code erstellt ihr die Disable Methode. Hier könnt ihr an @Override erkennen das euer plugin die OnDisable Methode der Klasse JavaPlugin überschreibt.
Jetzt könnt ihr z.b eine Nachricht ausgeben lassen, die angezeigt wird wenn der Server heruntergefahren wird.
Genau das gleiche könnt ihr mit der OnEnable Methode machen, mit dem Unterschied das die OnEnable Methode beim starten des Servers ausgeführt wird.
Jetzt sind wir an der Stelle angelang an der Auf den Befehl eines Users reagiert werden soll.
Befor das möglich ist müsst ihr eine neue Datei anlegen die sogenannte plugin.yml. Die plugin.yml enthält informationen die euer Plugin beschreiben wie z.b Name, wo die MainKlasse ist version euere homepage, und eben auch auf welche Befehle euer Plugin hören soll. Achtung: Ihr benötigt die plugin.yml IMMER nicht nur wenn ihr ein Plugin entwickelt welches Befehlt hat.
Macht einen Rechtsklick auf den Ordner SourcePackages. Jetzt wählt ihr New aus, dann geht ihr auf other, dort geht ihr in der Linken menüleiste runter bis zum Menüpunkt other und wählt dort den Menüpunkt YamlFile. Als Name müsst ihr “plugin” angeben, die endung .yml wird automatisch hinzugefügt. Jetzt fügt ihr folgendes ein:
Ihr müsst euren Packetpfad anpassen!
Der Letzte Punkt des Pfades ist eure Main-Klasse, ihr müsst aber die endung .java weglassen!
Wenn ihr keine befehle wollt dann könnt ihr auf alles unter dem main: punkt verzichten.
Neue Befehle werden im Gleichen Schema einfach unten angehängt.
Wichtig: Ihr dürft nur Leerzeichen in YAML dateien verwenden und keine TABs, sonst funktioniert die Datei nicht, und euer Server wird euer Plugin nicht aktivieren können.
Jetzt wo wir das haben könnt ihr schon unseren Befehl einfügen. In diesem Fall haben wir oben den Befehl “/heal” definiert, der Leute heilen soll. Um das zu erreichen müssen wir die OnCommand Methode überschreiben. Die Struktur schaut am Anfang etwas komplex aus, sie ist es aber nicht.
Fügt in den Code das ein:
Für euch wichtig ist, das euch in dieser Methode die Objekte sender,cmd und das array args zur verfügung stehen. Das Objekt sender enthält Informationen über den Absender des Objekt, unter anderem auch ob der Absender ein Spieler ist oder nicht. Das Objekt cmd enthält den übergebenen Befehl, ihr könnt auf ihn mit cmd.getName zugreifen. Das array args enthält alle argumente die euch übergeben wurden. Würde ich z.b “/heal Benni1000_ JemandAnderes” eingeben würde in args[0] der Name Benni1000_ stecken und in args[1] der Name JemandAnderes stecken.
=== Vorwort ===
da mich jetzt schon einige Leute per PN nach Hilfe beim Programmieren gefragt haben, dachte ich mir ich schreibe euch hier ein kleines Tutorial wie das eigentlich funktioniert. Ich werde hier auf die Programmierung unter Bukkit eingehen, nicht auf Java Programmierung im allgemeinen.
=== Vorraussetzungen ===
(*) Grundlegende Java Kentnisse. (Was sind Klassen, Objekte, Schleifen usw.)
(*) Das Java Development Kit
(*) Ein aktueller bukkit build von www.bukkit.org
(*) Netbeans oder eine andere IDE. (Ich gehe hier im speziellen auf Netbeans ein.)
(*) Ein Bukkit Server
(*) Interesse am selbständigen Lernen.
=== Vorbereitung ===
Kopiert euch den runtergeladenen Bukkit-Build an einen Ort den ihr euch gut merken könnt, denn ihr werdet ihn bei jedem neuen Plugin neu einbinden müssen. In meinem Fall Lagere ich ihn in meinem NetbeansProjects Ordner. Vergesst nicht euren Build regelmäßig zu aktualisieren.
Jetzt öffnet ihr Netbeans und erstellt ein neues Projekt, in diesem Fall nennen wir es “Tutorial”.
Bei dem Punkt “generate main class” könnt ihr euren paketnamen eintragen, dieser kann willkürlich gewählt sein, sollte aber euer fqdn sein wenn ihr eine Domain besitzt. Z.b so: “eu.benni1000.tutorial.Tutorial” in diesem fall würde eure Main klasse Tutorial.java heißen.
Ob ihr die generierte Klasse als Main Klasse benutzt bleibt euch überlassen, die oben genannte Methode ist nur sehr gut um schnell viele pakete zu generieren. Jetzt Solltet ihr ein Projekt angelegt haben. Herzlichen Glückwunsch, ihr seit fast mit der Einrichtung fertig. Jetzt müsst ihr nur noch den vorher runtergeladenen Bukkit-Build inkludieren. Macht einen Rechtsklick auf euer Projekt, und wählt den Menüpunkt Properties. Dort wählt ihr in der Linken Menüzeile den Punkt Libaries aus, und drückt auf den Button “Add Jar / Folder”. Hier wählt ihr den vorhin runtergeladenen Bukkit Build aus.
Jetzt seit ihr mit dem einrichten eures Projektes fertig.
=== Ein kleines Testprojekt ===
Öffnet jetzt eure Main-Klasse, ihr könnt fast alles aus der Klasse löschen, denn Bukkit hat eine eigene Struktur. Vorhanden bleiben muss nur die Deklaration der Klasse und die Information in welchem paket die klasse steckt. Habt ihr alles was oben steht 1 zu 1 nachgemacht schaut eure Klasse jetzt so aus:
Code:
package eu.benni1000.tutorial;
public class Tutorial {
}
Code:
package eu.benni1000.tutorial;
import org.bukkit.plugin.java.JavaPlugin;
public class Tutorial extends JavaPlugin {
}
Ich werde ab hier nicht mehr darauf hinweisen wenn etwas importiert gehört, da es ziemlich offensichtlich dargestellt wird und das Tutorial in die Länge ziehen würde.
Jetzt solltet ihr einen Logger erstellen. Logger werden dazu benutzt in der Konsole Fehler oder Informationen auszugeben. Fügt folgenden in eueren Code ein:
Code:
static final Logger log = Bukkit.getLogger();
Nun müsst ihr die OnEnable und die OnDisable Methode einbauen.
Ich füge die OnDisable Methode immer zuerst ein, aber das ist Geschmakssache.
Code:
@Override
public void onDisable() {
}
Jetzt könnt ihr z.b eine Nachricht ausgeben lassen, die angezeigt wird wenn der Server heruntergefahren wird.
Code:
@Override
public void onDisable() {
log.info("Tutorial v1.0 by Benni1000 disabled!");
}
Code:
@Override
public void onEnable() {
log.info("Tutorial v1.0 by Benni1000 enabled!");
}
Befor das möglich ist müsst ihr eine neue Datei anlegen die sogenannte plugin.yml. Die plugin.yml enthält informationen die euer Plugin beschreiben wie z.b Name, wo die MainKlasse ist version euere homepage, und eben auch auf welche Befehle euer Plugin hören soll. Achtung: Ihr benötigt die plugin.yml IMMER nicht nur wenn ihr ein Plugin entwickelt welches Befehlt hat.
Macht einen Rechtsklick auf den Ordner SourcePackages. Jetzt wählt ihr New aus, dann geht ihr auf other, dort geht ihr in der Linken menüleiste runter bis zum Menüpunkt other und wählt dort den Menüpunkt YamlFile. Als Name müsst ihr “plugin” angeben, die endung .yml wird automatisch hinzugefügt. Jetzt fügt ihr folgendes ein:
Code:
name: Tutorial
version: 1.0
main: eu.benni1000.tutorial.Tutorial
commands:
heal:
description: Heals a Player.
usage: /<command> username
Der Letzte Punkt des Pfades ist eure Main-Klasse, ihr müsst aber die endung .java weglassen!
Wenn ihr keine befehle wollt dann könnt ihr auf alles unter dem main: punkt verzichten.
Neue Befehle werden im Gleichen Schema einfach unten angehängt.
Wichtig: Ihr dürft nur Leerzeichen in YAML dateien verwenden und keine TABs, sonst funktioniert die Datei nicht, und euer Server wird euer Plugin nicht aktivieren können.
Jetzt wo wir das haben könnt ihr schon unseren Befehl einfügen. In diesem Fall haben wir oben den Befehl “/heal” definiert, der Leute heilen soll. Um das zu erreichen müssen wir die OnCommand Methode überschreiben. Die Struktur schaut am Anfang etwas komplex aus, sie ist es aber nicht.
Fügt in den Code das ein:
Code:
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
return false;
}
Zuletzt bearbeitet: