Plugin-Erstellung/Java/Eclipse Entwicklungsumgebung: Unterschied zwischen den Versionen
(48 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Datei:Eclipse_Tutorial-Plugin_Projekt.jpg|340px|thumb|right|Eclipse Entwicklungsumgebung Tutorial]] | |||
'''Erstellung eines JAVA Plugin-Projekts für Rising World in Eclipse''' | |||
'''Erstellung eines JAVA Plugin-Projekts für Rising World | |||
In diesem Tutorial wird beschrieben, wie man ein JAVA Plugin-Projekt für die Rising World Plugin-API in der '''Entwicklungsumgebung Eclipse''' erstellt. Eclipse ist eine weit verbreitete und leistungsfähige Entwicklungsumgebung, die sich ideal für Java-Projekte eignet, einschließlich der Entwicklung von Plugins für Spiele wie Rising World. | In diesem Tutorial wird beschrieben, wie man ein JAVA Plugin-Projekt für die Rising World Plugin-API in der '''Entwicklungsumgebung Eclipse''' erstellt. Eclipse ist eine weit verbreitete und leistungsfähige Entwicklungsumgebung, die sich ideal für Java-Projekte eignet, einschließlich der Entwicklung von Plugins für Spiele wie Rising World. | ||
Zeile 38: | Zeile 35: | ||
#* Klicken Sie auf "Directory..." (Verzeichnis...) | #* Klicken Sie auf "Directory..." (Verzeichnis...) | ||
#* Navigieren Sie zu Ihrem Spielverzeichnis "...\RisingWorld\_New Version\Data\Java\JDK" | #* Navigieren Sie zu Ihrem Spielverzeichnis "...\RisingWorld\_New Version\Data\Java\JDK" | ||
#* Wählen Sie den Ordner "JDK" aus und klicken Sie auf "OK" | #* Wählen Sie den Ordner "JDK" aus und klicken Sie auf "OK" (oder "Ordner auswählen") | ||
#* Klicken Sie auf "Finish" (Fertigstellen) | #* Klicken Sie auf "Finish" (Fertigstellen) | ||
# Festlegen des neuen JRE als Standard | # Festlegen des neuen JRE als Standard | ||
Zeile 46: | Zeile 43: | ||
Nachdem diese Schritte abgeschlossen sind, ist der Pfad zum JDK in Eclipse konfiguriert. | Nachdem diese Schritte abgeschlossen sind, ist der Pfad zum JDK in Eclipse konfiguriert. | ||
Jetzt können Sie Eclipse verwenden, um Plugins für die Rising World Plugin-API zu entwickeln und dabei das '''JDK''' aus dem Spielverzeichnis zu verwenden. | Jetzt können Sie Eclipse verwenden, um Plugins für die Rising World Plugin-API zu entwickeln und dabei das '''JDK''' aus dem Spielverzeichnis zu verwenden. | ||
<gallery mode=packed perrow=2> | |||
Datei:Eclipse_Installed_JREs_-_on_start.jpg|"Add" - Auswählen des Installierten JREs | |||
Datei:Eclipse_Installed_JREs_-_Apply_and_Close.jpg|Festlegen des neuen JRE als Standard und übernehmen | |||
</gallery> | |||
== Neues Projekt anlegen == | == Neues Projekt anlegen == | ||
Zeile 55: | Zeile 57: | ||
== Einbindung der Rising World Plugin-API == | == Einbindung der Rising World Plugin-API == | ||
[[Datei:Eclipse_PluginAPI_Einbindung.jpg|220px|thumb|right|Einbindung der Plugin-API]] | |||
Das Spiel wird bereits mit der API-Bibliothek (PluginAPI.jar) und dem entsprechenden JavaDoc (javadoc.zip) ausgeliefert, | Das Spiel wird bereits mit der API-Bibliothek (PluginAPI.jar) und dem entsprechenden JavaDoc (javadoc.zip) ausgeliefert, | ||
beides ist im <br/> Spielverzeichnis unter {{Dateipfad SDK}} zu finden. | beides ist im <br/> Spielverzeichnis unter {{Dateipfad SDK}} zu finden. | ||
Zeile 63: | Zeile 66: | ||
# Im Eclipse-Projektbaum mit der rechten Maustaste auf das Projekt klicken und "Properties" auswählen. | # Im Eclipse-Projektbaum mit der rechten Maustaste auf das Projekt klicken und "Properties" auswählen. | ||
# Zum Bereich "Java Build Path" navigieren und zum Reiter "Libraries" wechseln | # Zum Bereich "Java Build Path" navigieren und zum Reiter "Libraries" wechseln | ||
# Auf "classpath" klicken | |||
# Auf "Add External JARs..." klicken und die PluginAPI.jar Datei auswählen | # Auf "Add External JARs..." klicken und die PluginAPI.jar Datei auswählen | ||
# auf "classpath" verschieben wenn nötig | |||
# Auf "Apply and Close" klicken | # Auf "Apply and Close" klicken | ||
Im Eclipse-Projektbaum ist "Referenced Libraries" erschienen | |||
== Plugin erstellen == | == Plugin erstellen == | ||
Im folgenden Beispiel nennen wir dein Paketnamen ''' | Im folgenden Beispiel nennen wir dein Paketnamen '''mainerstesplugin''' und deine Klasse '''MyPluginClass'''. | ||
# Rechtsklick auf das Projekt > "New" > "Package" und einen Paketnamen wie net.mypackage.mainerstesplugin angeben | # Rechtsklick auf das Projekt > "New" > "Package" und einen Paketnamen wie net.mypackage.mainerstesplugin angeben | ||
# Auf "Finish" klicken | # Auf "Finish" klicken | ||
# Rechtsklick auf das neu erstellte Paket > "New" > "Class" und einen Klassennamen | # Rechtsklick auf das neu erstellte Paket > "New" > "Class" und einen Klassennamen MyPluginClass eingeben | ||
# Auf "Finish" klicken und die Klasse wird erstellt | # Auf "Finish" klicken und die Klasse wird erstellt | ||
# Folgenden Code als Beispiel eingeben, um mit der Entwicklung zu beginnen: | # Folgenden Code als Beispiel eingeben, um mit der Entwicklung zu beginnen: | ||
Zeile 81: | Zeile 87: | ||
import net.risingworld.api.events.Listener; | import net.risingworld.api.events.Listener; | ||
import net.risingworld.api.objects.Player; | import net.risingworld.api.objects.Player; | ||
import net.risingworld.api.events.player.PlayerConnectEvent; | |||
import net.risingworld.api.events.player.PlayerSpawnEvent; | |||
import net.risingworld.api.events.player.PlayerCommandEvent; | import net.risingworld.api.events.player.PlayerCommandEvent; | ||
Zeile 88: | Zeile 96: | ||
public void onEnable() | public void onEnable() | ||
{ | { | ||
registerEventListener(this); | registerEventListener(this); | ||
System.out.println(this.getName() + ": ist geladen"); | |||
} | } | ||
Zeile 95: | Zeile 103: | ||
public void onDisable() | public void onDisable() | ||
{ | { | ||
System.out.println("Mein Plugin entladen!"); | System.out.println("Mein Plugin wurde entladen !"); | ||
} | } | ||
@EventMethod | |||
public void onPlayerConnectEvent(PlayerConnectEvent event) | |||
{ | |||
Player player = event.getPlayer(); | |||
System.out.println(this.getName() + ": Player Connect"); | |||
player.sendTextMessage("Player "+player.getName()+" Connect"); | |||
} | |||
@EventMethod | @EventMethod | ||
Zeile 102: | Zeile 118: | ||
{ | { | ||
Player player = event.getPlayer(); | Player player = event.getPlayer(); | ||
player.sendTextMessage("Player "+player.getName()+" Spawn"); | |||
} | } | ||
@EventMethod | @EventMethod | ||
public void onPlayerCommand(PlayerCommandEvent event) { | public void onPlayerCommand(PlayerCommandEvent event) | ||
{ | |||
//diese Methode wird aufgerufen, wenn das "PlayerCommandEvent" ausgelöst wird | //diese Methode wird aufgerufen, wenn das "PlayerCommandEvent" ausgelöst wird | ||
//d.h. wenn ein Spieler einen Befehl in den Chat eingibt | //d.h. wenn ein Spieler einen Befehl in den Chat eingibt | ||
//Befehl durch Leerzeichen Teilen | |||
String[] cmd = event.getCommand().split(" "); | |||
//Spieler, der den Befehl ausgeführt hat | |||
Player player = event.getPlayer(); | |||
//Wenn der Spieler "/kill" eingibt, töte ihn | |||
if (cmd[0].equalsIgnoreCase("/kill")) | |||
{ | |||
player.kill(); | |||
} | |||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{| class="mw-collapsible mw-collapsed" style="float:left" | |||
|+ style="white-space:nowrap; float:left" | Rising World Plugin API Links. | |||
|- | |||
| | |||
* [https://javadoc.rising-world.net/latest/net/risingworld/api/package-summary.html JavaDoc: API Packages] | |||
* [https://javadoc.rising-world.net/latest/net/risingworld/api/events/EventMethod.html JavaDoc: Interface EventMethod] | |||
* [https://javadoc.rising-world.net/latest/net/risingworld/api/Plugin.html JavaDoc: Class Plugin] | |||
* [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html JavaDoc: Class Player] | |||
|} | |||
<div style="clear: both;"></div> | |||
=== Projektname === | === Projektname === | ||
Zeile 123: | Zeile 164: | ||
Es ist wichtig, den Paketnamen in Kleinbuchstaben zu schreiben, <br/>da Java und Eclipse die Groß- und Kleinschreibung von Paketnamen nicht unterscheiden. | Es ist wichtig, den Paketnamen in Kleinbuchstaben zu schreiben, <br/>da Java und Eclipse die Groß- und Kleinschreibung von Paketnamen nicht unterscheiden. | ||
=== plugin.yml Datei | === Fehler === | ||
{| class="mw-collapsible mw-collapsed" style="float:left" | |||
|+ style="white-space:nowrap; float:left" | Eine rote Schlangenlinie über <code>import net. ...</code> | |||
|- | |||
| Falls ein Fehler auftritt und eine rote Schlangenlinie über <code>import net.risingworld.api</code> zu sehen ist, <br/>setze alles unter Properties -> Java Build Path -> Libraries auf classpath und lösche die Datei module-info.java. Dann speichern wenn nötig und Eclipse neu starten. | |||
Nach dem Neustart wird das Projekt dort keinen Fehler mehr aufweisen. | |||
|} | |||
<span> </span> | |||
== plugin.yml Datei == | |||
Die Definitionsdatei "plugin.yml" ist notwendig. | Die Definitionsdatei "plugin.yml" ist notwendig. | ||
Jedes Plugin benötigt eine Definitionsdatei. Sie muss "plugin.yml" heißen und gehört in einen "resources"-Ordner in dem Quellverzeichnis. Nach dem kompilieren wird der Ressourcenordner automatisch zum resultierenden JAR hinzugefügt. <br> | Jedes Plugin benötigt eine Definitionsdatei. Sie muss "plugin.yml" heißen und gehört in einen "resources"-Ordner in dem Quellverzeichnis. Nach dem kompilieren wird der Ressourcenordner automatisch zum resultierenden JAR hinzugefügt. <br> | ||
Siehe auch: [https://forum.rising-world.net/thread/4757-create-a-plugin/ Rising World Forum: Create a Plugin] | Siehe auch: [https://forum.rising-world.net/thread/4757-create-a-plugin/ Rising World Forum: Create a Plugin] | ||
=== Erstellen === | |||
[[Datei:Eclipse_Tut_-_plugin_yml_Erstellen.jpg|200px|thumb|right|plugin.yml Datei erstellen]] | |||
* Erstelle einen "resources" Ordner in dem Quellverzeichnis unter /src | |||
* Erstelle eine "plugin.yml" Textdatei in src/resources/ | |||
* Kopiere "plugin.yml" Beispiel in die Datei und passe es an | |||
Siehe: [https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.emf.cdo.doc%2Fhtml%2Fusers%2FDoc06_UsingResources.html help.eclipse: Working with Folders and Resources] und [https://help.eclipse.org/latest/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-43.htm help.eclipse: Creating a folder (Erstellen eines Ordners)] | |||
=== Beispiel === | === Beispiel === | ||
Zeile 143: | Zeile 200: | ||
=== Eigenschaften === | === Eigenschaften === | ||
'''name''' - Name des Plugins. | [[Datei:Eclipse_Tut_-_plugin_yml_Beispiel.jpg|300px|thumb|right|plugin.yml Datei Beispiel]] | ||
'''main''' - Pfad zur Hauptklasse des Plugins einschließlich des Pakets. | *'''name''' - Name des Plugins. | ||
'''version''' - Versionsnummer des Plugins. | *'''main''' - Pfad zur Hauptklasse des Plugins einschließlich des Pakets. | ||
'''author''' - Name des Plugin-Erstellers. | *'''version''' - Versionsnummer des Plugins. | ||
'''team''' - Optional; Teammitglieder des Plugins. | *'''author''' - Name des Plugin-Erstellers. | ||
'''description''' - Beschreibung des Plugins. | *'''team''' - Optional; Teammitglieder des Plugins. | ||
'''loadorder''' - Optional; gibt an, ob das Plugin früher oder später als andere Plugins geladen werden soll. | *'''description''' - Beschreibung des Plugins. | ||
'''license''' - Lizenz des Plugins. | *'''loadorder''' - Optional; gibt an, ob das Plugin früher oder später als andere Plugins geladen werden soll. | ||
'''website''' - Website des Plugins oder des Erstellers. | *'''license''' - Lizenz des Plugins. | ||
*'''website''' - Website des Plugins oder des Erstellers. | |||
Diese Eigenschaften sind wichtig für die ordnungsgemäße Funktion und Identifizierung eines Plugins. | Diese Eigenschaften sind wichtig für die ordnungsgemäße Funktion und Identifizierung eines Plugins. | ||
Einige davon sind jedoch optional und können je nach Bedarf ergänzt werden. | Einige davon sind jedoch optional und können je nach Bedarf ergänzt werden. | ||
[[Datei:Eclipse_Tutorial-Plugin_Projekt.jpg|90%|center]] | |||
== Plugin kompilieren und testen == | == Plugin kompilieren und testen == | ||
Um das Plugin zu kompilieren, einfach das Projekt in Eclipse bauen. | Um das Plugin zu kompilieren, einfach das Projekt in Eclipse bauen. | ||
# Rechtsklick auf das Projekt > "Export" > "Java" > "JAR file" | |||
# klicken Sie auf "Next" (Weiter) | |||
# "JAR file" > "Browse" | |||
Die generierte '''.jar'''-Datei soll dann im <br/> | Die generierte '''.jar'''-Datei soll dann im <br/> | ||
Plugins-Verzeichnis {{Dateipfad Plugins}} platziert werden, um das Plugin zu testen. | Plugins-Verzeichnis {{Dateipfad Plugins}}MainErstesPlugin\ platziert werden, um das Plugin zu testen. | ||
=== Dynamisch kompilieren === | === Dynamisch kompilieren === | ||
Optional können fortgeschrittene Entwickler mit der "projectinfo.txt" arbeiten. | Optional können fortgeschrittene Plugin-Entwickler mit der "projectinfo.txt" arbeiten. | ||
<br/> | |||
Diese Datei bietet eine praktische Möglichkeit, Plugins dynamisch mit dem Rising World Spiel zu kompilieren. | |||
<br/> | <br/> | ||
Hier sind einige wichtige Punkte zur Verwendung der "projectinfo.txt": | |||
* Die "projectinfo.txt" ermöglicht das dynamische Kompilieren von Plugins während des Spielbetriebs. | |||
* Sie ist besonders nützlich, wenn Änderungen am Java-Plugin-Code vorgenommen werden, während das Spiel läuft. | |||
* Um sie zu nutzen, müssen alle JAR-Dateien aus dem Plugin-Ordner im Spiel entfernt werden, und stattdessen wird eine "projectinfo.txt" erstellt. | |||
* In der "projectinfo.txt" werden der Name des Plugins, der Pfad zum "src" Ordner des Plugin-Projekts | |||
* Optional der Pfad zum "libs" Ordner mit den erforderlichen Bibliotheken angegeben. Die Dateien bzw. der Ordner, der unter libs angegeben wurde, wird beim Kompilieren rüberkopiert. | |||
* Zusätzlich kann auch eine loadorder definiert werden, um anzugeben, ob das Plugin früher oder später als andere Plugins geladen werden soll. | |||
* Wenn das Plugin Assets verwendet, können auch Asset-Pfade in der "projectinfo.txt" angegeben werden. | |||
Ein Beispiel für den Inhalt einer "projectinfo.txt" Datei: | |||
<syntaxhighlight lang="yaml"> | |||
name: TestPlugin | |||
path: C:\Users\Name\Projects\Rising World\TestPlugin\src | |||
libs: C:\Users\Name\Projects\Rising World\ToolsAPI | |||
loadorder: -100 | |||
</syntaxhighlight> | |||
Siehe: [https://forum.rising-world.net/thread/12469-plugin-api-wehre-sch%C3%B6n-wenn-fehlerberichte-it-would-be-nice-if-bug-reports/?postID=99416#post99416 RW Forum: Antwort von red51] | |||
== Weiterentwicklung und Debugging == | == Weiterentwicklung und Debugging == | ||
Zeile 169: | Zeile 252: | ||
... | ... | ||
=== Remote debuggen === | |||
Es ist möglich Eclipse mit einer Remote Debugging Session mit der Virtual Machine zu verbinden.<br/> | |||
Siehe: | |||
* [https://sdq.kastel.kit.edu/wiki/Remote_Debugging_mit_Eclipse Remote Debugging mit Eclipse] | |||
* [https://forum.rising-world.net/thread/13433-plugin-remote-debuggen/ Rising World Forum: Plugin Remote debuggen] | |||
== Siehe auch == | == Siehe auch == | ||
* [https://javadoc.rising-world.net/latest/net/risingworld/api/package-summary.html JavaDoc RW: API Packages] | |||
* [[Plugin-Erstellung]] | |||
* [[:Kategorie:Java|Wiki Kategorie: "Java"]] | |||
* [[Plugin-Erstellung/Java/Gradle|Gradle Automatisierungswerkzeug]] | |||
* [https://javadoc.rising-world.net/latest/net/risingworld/api/Plugin.html JavaDoc RW: Class Plugin] | |||
* [https://steamcommunity.com/app/324080/guides/?browsesort=mostrecent&browsefilter=mostrecent Steamcommunity: neueste Guides] | |||
=== Plugin-Erstellung=== | |||
{{Special:PrefixIndex/Plugin-Erstellung/|hideredirects=0 |stripprefix=1}} | |||
=== Forum === | |||
* [https://forum.rising-world.net/thread/12493-getting-started/ Rising World Forum: Getting started] | * [https://forum.rising-world.net/thread/12493-getting-started/ Rising World Forum: Getting started] | ||
* [https://forum.rising-world.net/thread/4757-create-a-plugin/ Rising World Forum: Create a Plugin] | * [https://forum.rising-world.net/thread/4757-create-a-plugin/ Rising World Forum: Create a Plugin] | ||
* [https:// | * [https://forum.rising-world.net/thread/13433-plugin-remote-debuggen/ Rising World Forum: Plugin Remote debuggen] | ||
* [https://forum.rising-world.net/board/45-plugins-neue-version/ Rising World Forum: Plugins (Neue Version)] | * [https://forum.rising-world.net/board/45-plugins-neue-version/ Rising World Forum: Plugins (Neue Version)] | ||
* [https://forum.rising-world.net/thread/12494-update-0-6-5-plugin-api-de/ Rising World Forum: Update 0.6.5: Plugin API] | * [https://forum.rising-world.net/thread/12494-update-0-6-5-plugin-api-de/ Rising World Forum: Update 0.6.5: Plugin API] | ||
* [https://forum.rising-world.net/thread/12511-plugin-template/?postID=93346&highlight=gradle Rising World Forum: Plugin template mit Gradle] | |||
* [https:// | |||
=== Kategorien === | |||
{| style="margin:auto; width:100%;" class="nix_wikitable" | |||
|- style="vertical-align: top;" | |||
| style="width:50%" | '''Tutorial Kategorien''' | |||
<categorytree mode="categories" hideroot=off showcount=on>Plugin-API</categorytree> | |||
| style="width:50%" | '''Plugin-Erstellung''' | |||
<categorytree mode="categories" hideroot=off showcount=on>Plugin-Erstellung</categorytree> | |||
|} | |||
[[Kategorie:Plugin-API|Eclipse]] | [[Kategorie:Plugin-API|Eclipse]] | ||
[[Kategorie:Tutorial|Eclipse]] | [[Kategorie:Tutorial|Eclipse]] |
Aktuelle Version vom 1. November 2024, 11:32 Uhr
Erstellung eines JAVA Plugin-Projekts für Rising World in Eclipse
In diesem Tutorial wird beschrieben, wie man ein JAVA Plugin-Projekt für die Rising World Plugin-API in der Entwicklungsumgebung Eclipse erstellt. Eclipse ist eine weit verbreitete und leistungsfähige Entwicklungsumgebung, die sich ideal für Java-Projekte eignet, einschließlich der Entwicklung von Plugins für Spiele wie Rising World.
Eclipse installieren
Zuerst muss sichergestellt werden, dass Eclipse auf dem Computer installiert ist. Eclipse kann von der offiziellen Webseite eclipse.org/downloads/packages heruntergeladen werden. Für die Entwicklung von Java-Anwendungen sollte die "Eclipse IDE for Java Developers" Version ausgewählt werden.
Java Development Kit (JDK) installieren
Für die Plugin-Entwicklung ist das Java Development Kit (JDK) erforderlich.
JDK 20 wird empfohlen, da es mit der Rising World Plugin-API kompatibel ist.
Es ist empfehlenswert, es aus dem Spielverzeichnis zu verwenden: _New Version/Data/Java/JDK
.
Es kann alternativ von jdk.java.net/20 heruntergeladen werden.
Nach der Installation von der JDK muss in Eclipse der Pfad zum JDK konfiguriert werden.
Pfad zum JDK konfigurieren
Es wird empfohlen JDK aus dem Spielverzeichnis zu verwenden.
Um Pfad zum JDK in Eclipse zu konfigurieren:
- Öffnen der Einstellungen
- Navigieren Sie zu "Window" (Fenster) im oberen Menü
- Wählen Sie "Preferences" (Einstellungen) aus dem Dropdown-Menü. Dadurch wird ein neues Fenster mit den Eclipse-Einstellungen geöffnet.
- Suchen der Java-Einstellungen
- Im linken Bereich des Einstellungsfensters befindet sich ein Baummenü
- Erweitern Sie den Knoten "Java" durch einen Klick auf das Pluszeichen (+)
- Auswählen des Installierten JREs
- JRE steht für "Java Runtime Environment". Es ist eine Laufzeitumgebung für Java-Anwendungen.
- Wählen Sie "Installed JREs" (Installierte JREs) unter dem Java-Knoten aus
- Hinzufügen des JDK-Pfads
- Klicken Sie auf den Button "Add..." (Hinzufügen...), um ein neues installiertes JRE hinzuzufügen
- Wählen Sie "Standard VM" und klicken Sie auf "Next" (Weiter)
- Klicken Sie auf "Directory..." (Verzeichnis...)
- Navigieren Sie zu Ihrem Spielverzeichnis "...\RisingWorld\_New Version\Data\Java\JDK"
- Wählen Sie den Ordner "JDK" aus und klicken Sie auf "OK" (oder "Ordner auswählen")
- Klicken Sie auf "Finish" (Fertigstellen)
- Festlegen des neuen JRE als Standard
- Stellen Sie sicher, dass das Kontrollkästchen neben dem neu hinzugefügten JDK-Pfad aktiviert ist
- Klicken Sie auf "Apply and Close" (Übernehmen und Schließen)
Nachdem diese Schritte abgeschlossen sind, ist der Pfad zum JDK in Eclipse konfiguriert. Jetzt können Sie Eclipse verwenden, um Plugins für die Rising World Plugin-API zu entwickeln und dabei das JDK aus dem Spielverzeichnis zu verwenden.
Neues Projekt anlegen
- Eclipse öffnen und auf "File" > "New" > "Java Project" klicken.
- Im Dialogfeld "New Java Project" den Projektnamen eingeben, z.B. "RisingWorldPlugin".
- Bei der JRE auf "Use an execution environment JRE:" gehen und die passende Java-Version auswählen, die mit der Rising World API kompatibel ist.
- Klicken Sie auf "Next" und dann auf "Finish".
Einbindung der Rising World Plugin-API
Das Spiel wird bereits mit der API-Bibliothek (PluginAPI.jar) und dem entsprechenden JavaDoc (javadoc.zip) ausgeliefert,
beides ist im
Spielverzeichnis unter RisingWorld\_New Version\Data\SDK\
zu finden.
Wenn Sie die API aus dem Spielverzeichnis verwenden, verwendet Ihre IDE immer automatisch die neueste API.
Unter diesem Link gibt es eine Online-Version des neuesten JavaDoc: API Packages.
Einbindung:
- Im Eclipse-Projektbaum mit der rechten Maustaste auf das Projekt klicken und "Properties" auswählen.
- Zum Bereich "Java Build Path" navigieren und zum Reiter "Libraries" wechseln
- Auf "classpath" klicken
- Auf "Add External JARs..." klicken und die PluginAPI.jar Datei auswählen
- auf "classpath" verschieben wenn nötig
- Auf "Apply and Close" klicken
Im Eclipse-Projektbaum ist "Referenced Libraries" erschienen
Plugin erstellen
Im folgenden Beispiel nennen wir dein Paketnamen mainerstesplugin und deine Klasse MyPluginClass.
- Rechtsklick auf das Projekt > "New" > "Package" und einen Paketnamen wie net.mypackage.mainerstesplugin angeben
- Auf "Finish" klicken
- Rechtsklick auf das neu erstellte Paket > "New" > "Class" und einen Klassennamen MyPluginClass eingeben
- Auf "Finish" klicken und die Klasse wird erstellt
- Folgenden Code als Beispiel eingeben, um mit der Entwicklung zu beginnen:
package net.mypackage.mainerstesplugin;
import net.risingworld.api.Plugin;
import net.risingworld.api.events.EventMethod;
import net.risingworld.api.events.Listener;
import net.risingworld.api.objects.Player;
import net.risingworld.api.events.player.PlayerConnectEvent;
import net.risingworld.api.events.player.PlayerSpawnEvent;
import net.risingworld.api.events.player.PlayerCommandEvent;
public class MyPluginClass extends Plugin implements Listener
{
@Override
public void onEnable()
{
registerEventListener(this);
System.out.println(this.getName() + ": ist geladen");
}
@Override
public void onDisable()
{
System.out.println("Mein Plugin wurde entladen !");
}
@EventMethod
public void onPlayerConnectEvent(PlayerConnectEvent event)
{
Player player = event.getPlayer();
System.out.println(this.getName() + ": Player Connect");
player.sendTextMessage("Player "+player.getName()+" Connect");
}
@EventMethod
public void onPlayerSpawn(PlayerSpawnEvent event)
{
Player player = event.getPlayer();
player.sendTextMessage("Player "+player.getName()+" Spawn");
}
@EventMethod
public void onPlayerCommand(PlayerCommandEvent event)
{
//diese Methode wird aufgerufen, wenn das "PlayerCommandEvent" ausgelöst wird
//d.h. wenn ein Spieler einen Befehl in den Chat eingibt
//Befehl durch Leerzeichen Teilen
String[] cmd = event.getCommand().split(" ");
//Spieler, der den Befehl ausgeführt hat
Player player = event.getPlayer();
//Wenn der Spieler "/kill" eingibt, töte ihn
if (cmd[0].equalsIgnoreCase("/kill"))
{
player.kill();
}
}
}
Projektname
Der Projektnamen ist der Name, der einem Projekt in Eclipse zugewiesen wird. Er wird bei der Erstellung eines neuen Projekts festgelegt und dient dazu, das Projekt innerhalb der Eclipse-Arbeitsumgebung zu identifizieren. Der Projektnamen kann aus Buchstaben, Zahlen und einigen Sonderzeichen bestehen, aber es wird empfohlen, keine Leerzeichen zu verwenden, da Eclipse dies nicht unterstützt.
Paketname
Der Paketname ist der Name, der einem Paket innerhalb eines Projekts zugeordnet wird. Ein Paket ist eine logische Gruppierung von Klassen und anderen Ressourcen in einem Projekt. Der Paketname wird in Kleinbuchstaben geschrieben und sollte eine Domain-Namenskonvention verwenden, z. B. "net.example.myproject" oder "net.mypackage.mainplugin". Dies hilft, Konflikte zwischen Paketnamen zu vermeiden und die Organisation von Klassen und Ressourcen zu erleichtern. Klassen befinden sich immer in Paketen. Methoden und Klassen können vollqualifiziert (d.h. mit dem Paketnamen) benannt werden.
Es ist wichtig, den Paketnamen in Kleinbuchstaben zu schreiben,
da Java und Eclipse die Groß- und Kleinschreibung von Paketnamen nicht unterscheiden.
Fehler
Falls ein Fehler auftritt und eine rote Schlangenlinie über import net.risingworld.api zu sehen ist, setze alles unter Properties -> Java Build Path -> Libraries auf classpath und lösche die Datei module-info.java. Dann speichern wenn nötig und Eclipse neu starten. Nach dem Neustart wird das Projekt dort keinen Fehler mehr aufweisen. |
plugin.yml Datei
Die Definitionsdatei "plugin.yml" ist notwendig.
Jedes Plugin benötigt eine Definitionsdatei. Sie muss "plugin.yml" heißen und gehört in einen "resources"-Ordner in dem Quellverzeichnis. Nach dem kompilieren wird der Ressourcenordner automatisch zum resultierenden JAR hinzugefügt.
Siehe auch: Rising World Forum: Create a Plugin
Erstellen
- Erstelle einen "resources" Ordner in dem Quellverzeichnis unter /src
- Erstelle eine "plugin.yml" Textdatei in src/resources/
- Kopiere "plugin.yml" Beispiel in die Datei und passe es an
Siehe: help.eclipse: Working with Folders and Resources und help.eclipse: Creating a folder (Erstellen eines Ordners)
Beispiel
Hier ist ein Beispiel für die "plugin.yml" Definitionsdatei:
name: MyPluginName
main: net.mypackage.mainerstesplugin.MyPluginClass
version: 0.0.1
author: <AuthorName>
team: <your team, optional>
description: "RW Plugin description ..."
loadorder: 0
license: MIT
website: http://www.optional_homepage_url.com
Eigenschaften
- name - Name des Plugins.
- main - Pfad zur Hauptklasse des Plugins einschließlich des Pakets.
- version - Versionsnummer des Plugins.
- author - Name des Plugin-Erstellers.
- team - Optional; Teammitglieder des Plugins.
- description - Beschreibung des Plugins.
- loadorder - Optional; gibt an, ob das Plugin früher oder später als andere Plugins geladen werden soll.
- license - Lizenz des Plugins.
- website - Website des Plugins oder des Erstellers.
Diese Eigenschaften sind wichtig für die ordnungsgemäße Funktion und Identifizierung eines Plugins. Einige davon sind jedoch optional und können je nach Bedarf ergänzt werden.
Plugin kompilieren und testen
Um das Plugin zu kompilieren, einfach das Projekt in Eclipse bauen.
- Rechtsklick auf das Projekt > "Export" > "Java" > "JAR file"
- klicken Sie auf "Next" (Weiter)
- "JAR file" > "Browse"
Die generierte .jar-Datei soll dann im
Plugins-Verzeichnis RisingWorld\_New Version\Plugins\
MainErstesPlugin\ platziert werden, um das Plugin zu testen.
Dynamisch kompilieren
Optional können fortgeschrittene Plugin-Entwickler mit der "projectinfo.txt" arbeiten.
Diese Datei bietet eine praktische Möglichkeit, Plugins dynamisch mit dem Rising World Spiel zu kompilieren.
Hier sind einige wichtige Punkte zur Verwendung der "projectinfo.txt":
- Die "projectinfo.txt" ermöglicht das dynamische Kompilieren von Plugins während des Spielbetriebs.
- Sie ist besonders nützlich, wenn Änderungen am Java-Plugin-Code vorgenommen werden, während das Spiel läuft.
- Um sie zu nutzen, müssen alle JAR-Dateien aus dem Plugin-Ordner im Spiel entfernt werden, und stattdessen wird eine "projectinfo.txt" erstellt.
- In der "projectinfo.txt" werden der Name des Plugins, der Pfad zum "src" Ordner des Plugin-Projekts
- Optional der Pfad zum "libs" Ordner mit den erforderlichen Bibliotheken angegeben. Die Dateien bzw. der Ordner, der unter libs angegeben wurde, wird beim Kompilieren rüberkopiert.
- Zusätzlich kann auch eine loadorder definiert werden, um anzugeben, ob das Plugin früher oder später als andere Plugins geladen werden soll.
- Wenn das Plugin Assets verwendet, können auch Asset-Pfade in der "projectinfo.txt" angegeben werden.
Ein Beispiel für den Inhalt einer "projectinfo.txt" Datei:
name: TestPlugin
path: C:\Users\Name\Projects\Rising World\TestPlugin\src
libs: C:\Users\Name\Projects\Rising World\ToolsAPI
loadorder: -100
Siehe: RW Forum: Antwort von red51
Weiterentwicklung und Debugging
Weiterhin ist es empfehlenswert, regelmäßig neue Features zu implementieren, das Plugin zu testen und Fehler zu beheben. Eclipse bietet umfassende Debugging-Tools, die dabei helfen können, Probleme effizient zu identifizieren und zu lösen. ...
Remote debuggen
Es ist möglich Eclipse mit einer Remote Debugging Session mit der Virtual Machine zu verbinden.
Siehe:
Siehe auch
- JavaDoc RW: API Packages
- Plugin-Erstellung
- Wiki Kategorie: "Java"
- Gradle Automatisierungswerkzeug
- JavaDoc RW: Class Plugin
- Steamcommunity: neueste Guides
Plugin-Erstellung
Forum
- Rising World Forum: Getting started
- Rising World Forum: Create a Plugin
- Rising World Forum: Plugin Remote debuggen
- Rising World Forum: Plugins (Neue Version)
- Rising World Forum: Update 0.6.5: Plugin API
- Rising World Forum: Plugin template mit Gradle
Kategorien
Tutorial Kategorien
Tutorial (2 S) |
Plugin-Erstellung
|