Minecraft Plugins programmieren – Teil 4: Dein erstes Minecraft Plugin

Minecraft Plugins programmieren – Teil 4: Dein erstes Minecraft PluginIm letzten Teil meiner Artikelserie werde ich dir zeigen, wie du dein erstes Minecraft programmierst und auf deinem Minecraft Server installierst und testest. Dieser Artikel baut auf den drei vorherigen Artikeln dieser Serie auf.

Am Ende dieses Tutorials hast du den gesamten Entwicklungsworkflow für ein Minecraft Plugin kennengelernt. Wenn du Spaß daran gefunden hast, kannst du weiter in die Welt der Minecraft Plugins eintauchen.

Ich werde auf meinem Blog noch weitere Artikel veröffentlichen, in denen du Minecraft Plugins programmieren lernen kannst.

Inhaltsverzeichnis

Dein erstes Minecraft Command

Am Ende dieses Artikels wirst du dein erstes eigenes Minecraft Plugin auf deinem Minecraft Server installiert haben. Des Plugin wird sehr einfach sein, aber es wird ein eigenes Command für Minecraft enthalten. Eine umfangreiche Programmlogik würde den Rahmen dieser Artikelserie sprengen.

Das neue Kommando soll über die Befehle  /hallo und /hello ausgeführt werden können. Nach Eingabe des Befehls soll der Spieler, der das Kommando ausgeführt hat, mit seinem Namen begrüßt werden.

Minecraft Command definieren

Im ersten Schritt müssen wir unser neues Minecraft Command in unserem Plugin definieren. Wir müssen unseren neuen Befehl beschreiben, sodass er dann in Minecraft ausgeführt werden kann. Dazu werden verschiedene Attribute definiert, welche in der Datei

/src/main/resources/plugin.yml

eintragen werden müssen (Im dritten Teil dieser Artikelserie habe ich die wichtigsten Bestandteile eines Minecraft Plugins beschrieben). 

Wir verwenden vorerst nur die folgenden Attribute:

  • description: Eine Beschreibung des Befehls
  • usage: Ein Hinweis, wie der Befehl ausgeführt werden kann, d. h. z. B. welche Parameter übergeben werden müssen
  • aliases: Eine Auflistung aller Befehle, mit denen das Minecraft Command ausgeführt werden kann. Es können mehrere Befehle das gleiche Command ausführen.

Es gibt aber noch weitere Attribute, mit denen z. B. Berechtigungen definiert werden können. Darüber kann dann gesteuert werden, welche Spieler den Befehl ausführen dürfen.

Für das oben beschriebene Plugin ergänze nun folgendes in der Datei plugin.yml ein:

				
					
commands:
    hallo:
        description: "Say hello to yourself"
        usage: "/hallo"
        aliases: [hallo,hello]
				
			

Damit wird festgelegt, dass dein erstes eigenes Minecraft Command mit dem Befehl /hallo oder /hello ausgeführt werden kann (aliases).

Die ersten Zeilen in der Datei (name, version, main, api-version) dürfen nicht gelöscht werden. Du findest die ganze Datei auch in meinem Github-Repository.

Minecraft Command programmieren

Als Nächstes muss die Programmlogik implementiert werden. D. h. es wird in Java programmiert, was passieren soll, wenn das Command durch einen Spieler aufgerufen wird.

Wie bereits oben beschrieben möchte ich in dieser Artikelserie den kompletten Entwicklungsweg für dein erstes Minecraft Plugin aufzeigen. Darum enthält das Plugin auch so gut wie keine Logik. Ein Minecraft Plugin kann natürlich mehrere Kommandos enthalten und besteht i. d. R. aus vielen Java-Dateien. Ich setze in diesem Tutorial aber bewusst auf eine sehr einfache Struktur.

Die zentrale Java-Klasse des Plugins ist die Datei

/src/main/java/de/minetekki/minecraftplugin/MinecraftPlugin.java

Die Basisklasse dieser Klasse ist JavaPlugin (extends JavaPlugin) aus dem Bukkit-Framework. Dadurch stehen einige wichtigen Methode zur Verfügung, die überschrieben werden müssen bzw. können. Wenn du dich mit Vererbung in Java noch nicht auskennst, kannst du dich im openBook Java ist auch ein Insel darüber informieren.

Wir lassen die beiden bestehenden Methoden onEnable und onDisable in der Klasse MinecraftPlugin außer acht. Diese werden beim Aktiveren bzw. Deaktivieren eines Minecraft Plugins ausgeführt und können für spezielle Programmlogik verwendet werden.

Stattdessen fügen wir eine neue Methode onCommand hinzu:

				
					@Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
        sender.sendMessage("Hallo " + sender.getName());
        return true;
    }
				
			

Wichtig ist hier die so genannte Annotation @Override. Diese drückt aus, dass die Methode onCommand aus der Basisklasse JavaPlugin überschrieben wird. Wird in Minecraft eines der in der plugin.yml definierten Commands ausgeführt wird, so wird diese Methode aus unserem Plugin aufgerufen und unser Programmcode ausgeführt.

Begrüßung mit Minecraft Spielernamen zusammenbauen

In der Methode onCommand stehen einige Java-Objekte zur Verfügung, die automatisch als Methoden-Parameter übergeben werden. Wir konzentrieren uns in diesem Tutorial aber erst einmal nur auf den Parameter sender vom Typ CommandSender. Diese Variable enthält das aufrufende Objekt (z. B. Spieler oder ein Tier), welches in Minecraft das Command ausgeführt hat. Wir gehen der Einfachheit davon aus, dass dies ein Minecraft-Spieler ist.

Das sender-Objekt stellt verschiedene Methoden zur Verfügung, um auf dessen Attribute (Eigenschaften) zugreifen zu können. Im Falle eine Spielers können wir über die Methode getName() den Namen auslesen. Unser Kommando soll den aufrufenden Spieler mit seinem Namen begrüßen. Darum bauen wir uns die Begrüßung mit dem Aufruf dieser Methode zusammen:

"Hallo " + sender.getName()

Der erste Teil (“Hallo”) ist eine feste Zeichenkette (String). Mit dem Plus-Zeichen werden zwei Zeichenketten verknüpft. Über die Methode getName erhalten wir vom sender-Objekt nun den Spielernamen – auch wieder als Zeichenkette.

Nachricht an Minecraft Spieler senden

Neben Methoden zum Zugreifen auf Eigenschaften finden wir im sender-Objekt auch Methoden, um Aktionen auf dem Objekt ausführen zu können. Die Methode sendMessage(@NotNull String message) bietet uns die Möglichkeit dem Spieler, der das Command aufgerufen hat, eine Nachricht im Chat zu senden. Dies machen wir uns zu nutze und senden ihm die oben zusammengebaute Nachricht:

sender.sendMessage("Hallo " + sender.getName());

Die Methode sendMessage erwartet als Parameter eine Zeichenkette. Und diese haben wir oben ja zusammengesetzt. Das ist dann auch schon die gesamte Logik von deinem ersten Minecraft Plugin. 

Die Methode onCommand ist so definiert, dass ein boolscher Wert, d. h. true oder false, zurückgegeben werden muss. Wir geben hier einfach true zurück, damit wird der Methodenablauf dann erfolgreich abgeschlossen. Gibt man an dieser Stelle false zurück, wird dem Spieler der Text aus dem Attribut usage aus der Datei plugin.yml angezeigt. Man kann also falsche Kommandoaufrufe damit beenden. 

Minecraft Plugin Kompilieren

Das Minecraft Plugin enthält nun alles Notwendige, damit es auf dem Minecraft Server installiert und ausgeführt werden kann. Der Quellcode wurde allerdings noch nicht kompiliert und es wurde noch kein Paket gebaut. Das fertige Paket enthält dann die eigenen Java-Klassen in kompilierter Form, die Konfigurationsdateien und alle Abhängigkeiten, die zur Ausführung des Plugins benötigt werden. Mit Abhängigkeiten sind z. B. Java-Klassen, die man nicht selbst programmiert hat, aber in seinem Projekt verwenden möchte, gemeint.

Im vorherigen Teil dieser Serie haben wir das Projekt eingerichtet und Gradle als Build System ausgewählt. Über ein Build System wird gesteuert, wie eine Software letztendlich gebaut werden soll: von der Kompilierung bis hin zum installierbaren Paket. Für dieses einfache Minecraft Plugin ist keine spezielle Gradle-Konfiguration notwendig und somit kann das Paket einfach über den Gradle-Task build (Doppelklick zum Ausführen) gebaut werden:

Nach einem erfolgreichen Build sollte im Ausgabefenster eine Erfolgsmeldung ausgeben werden:

BUILD SUCCESSFUL

Außerdem sollte nun das fertige Paket mit allen Resourcen erstellt worden sein:

build/libs/MinecraftPlugin-1.0-SNAPSHOT.jar

Diese Datei kann nun für die Installation beim Minecraft Server verwendet werden.

Minecraft Plugin kompilieren
Minecraft Plugin kompilieren

Plugin auf dem Minecraft Server installieren​

Nachdem du im vorherigen Schritt nun dein Minecraft Plugin kompiliert und paketiert hast, kannst du es auf deinem Minecraft Server installieren. Wie du dir lokal einen Minecraft Server einrichtest, habe ich im vorherigen Teil dieser Artikelserie erklärt.

Die Installation des Plugins ist sehr einfach und im Grunde genommen keine wirkliche Installation. Genau genommen muss die erzeugte .jar-Datei des Plugins nur in einen speziellen Ordner des Servers kopiert werden.

Wenn du jetzt deinen Minecraft Server startest, solltest du in der Konsolenausgabe sehen, dass dein Plugin geladen (“Loading server plugin MinecraftPlugin…”) und aktiviert (“Enabling MinecraftPlugin…”) wird:

Minecraft Plugin Installation
Minecraft Plugin Installation

Zum Abschluss: Dein Minecraft Plugin testen

Jetzt ist es an der Zeit, dein Minecraft Plugin zu testen. Starte dazu Minecraft und verbinde dich mit deinem Server. Wähle hierzu den Mehrspielermodus und klicken dann auf Server hinzufügen. Den Servernamen kannst du frei wählen, bei der Serveradresse gibst du

localhost

ein. Localhost ist ein Standard-Domainname, der auf deinen eigenen PC zeigt. Trete nun deinem Server bei.

Bei der Definition des Minecraft Commands haben wir eine Beschreibung, einen Hinweis für die Verwendung und zwei Aliase hinterlegt. Wenn du jetzt im Minecraft-Chat

/help hallo

eingibst, kannst du dir dies anzeigen lassen:

Minecraft-Plugin Hilfe anzeigen
Hilfe zum Minecraft Plugin anzeigen mit /help

Und wenn du jetzt

/hallo

oder

/hello

im Chat eingibst, dann begrüßt dich dein Plugin mit deinem Namen:

Minecraft-Plugin Command ausführen
Ausführen des Minecraft Commands

Wenn alles funktioniert hat, hast du ein erstes eigenes Minecraft Plugin erfolgreich erstellt, installiert und getestet!

Fazit

Mit diesem letzten Artikel endet meine Artikelserie zum Programmieren von eigenen Minecraft Plugins. Über vier Artikel habe ich aufgezeigt, wie man bei der Entwicklung eines eigenen Minecraft Plugins vorgeht und was man dazu alles benötigt.

Falls Fragen offen geblieben sind, lasse mir gerne eine Kommentar da, dann kann ich diese beantworten und im Artikel ergänzen. Und wenn dir meine Artikel gefallen haben, würde ich mich sehr freuen, wenn du diese teilen würdest.

Alle Themen dieser Artikelserie

Daniel Hillwig
Daniel Hillwig

Hi, mein Name ist Daniel und ich bin Software-Entwickler. Hier schreibe ich über technische Themen zu Minecraft. Seit über 20 Jahren programmiere ich mit Java und liebe Open-Source-Software und Linux.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

  • Wer schreibt hier?

    mineTekki PortraitHi, ich bin Daniel und Software-Entwickler. Zu Minecraft bin ich über meinen Sohn gekommen. Er ist ein leidenschaftlicher Spieler und hat schon viele Welten gebaut. Mittlerweile spielen wir zusammen und programmieren Minecraft Plugins.

  • Alle Inhalte meines Blogs sind keine offiziellen Minecraft-Produkte und stehen in keiner Verbinung zu Mojang.

  • Artikel-Serie

    Minecraft Plugins programmieren lernen

  • mineTekki Minecraft Blog