Plugin-Erstellung/Java/Eclipse Entwicklungsumgebung: Unterschied zwischen den Versionen

Aus Rising World Wiki
 
(65 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Seite in Bearbeitung}}
[[Datei:Eclipse_Tutorial-Plugin_Projekt.jpg|340px|thumb|right|Eclipse Entwicklungsumgebung Tutorial]]
ToDo: plugin.yml, projectinfo.txt,  Bilder, Screenshots ...
'''Erstellung eines JAVA Plugin-Projekts für Rising World in Eclipse'''
 
 
'''Erstellung eines JAVA Plugin-Projekts für Rising World Plugin-API 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.
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 21: Zeile 18:
Nach der Installation von der JDK muss in Eclipse der Pfad zum JDK konfiguriert 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. <br/>
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.
<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 30: 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 38: 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 '''MainErstesPlugin'''.  
Im folgenden Beispiel nennen wir dein Paketnamen '''mainerstesplugin''' und deine Klasse '''MyPluginClass'''.  


# Rechtsklick auf das Projekt > "New" > "Package" und einen Paketnamen wie com.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 MainErstesPlugin eingeben
# 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:
<syntaxhighlight lang="java" line start="1">
<syntaxhighlight lang="java" line start="1">
package com.mainerstesplugin;
package net.mypackage.mainerstesplugin;


import net.risingworld.api.Plugin;
import net.risingworld.api.Plugin;
Zeile 56: 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;


public class MainErstesPlugin extends Plugin implements Listener
public class MyPluginClass extends Plugin implements Listener
{
{
     @Override
     @Override
     public void onEnable()
     public void onEnable()
     {
     {
      System.out.println("Mein Plugin geladen!");
       registerEventListener(this);
       registerEventListener(this);
      System.out.println(this.getName() + ":  ist geladen");
     }
     }


Zeile 69: 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 76: Zeile 118:
     {
     {
         Player player = event.getPlayer();
         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();
    }
     }
     }
}  
}
</syntaxhighlight>
</syntaxhighlight>
{| class="mw-collapsible mw-collapsed" style="float:left"
|+ style="white-space:nowrap; float:left" | Rising World Plugin API Links. &nbsp;
|-
|
* [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 87: Zeile 160:
Der Paketname ist der Name, der einem Paket innerhalb eines Projekts zugeordnet wird.  
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.  
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. com.example.myproject. Dies hilft, Konflikte zwischen Paketnamen zu vermeiden und die Organisation von Klassen und Ressourcen zu erleichtern.
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, <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.
=== 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> &nbsp; </span>
== 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. <br>
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 ===
Hier ist ein Beispiel für die "plugin.yml" Definitionsdatei:
<syntaxhighlight lang="yaml">
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
</syntaxhighlight>
=== Eigenschaften ===
[[Datei:Eclipse_Tut_-_plugin_yml_Beispiel.jpg|300px|thumb|right|plugin.yml Datei Beispiel]]
*'''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.
[[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 ===
ToDo: dynamisch kompilieren über eine "projectinfo.txt"
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/>
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 102: 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://forum.rising-world.net/thread/12493-getting-started/ Rising World Forum: Getting started]
* [https://javadoc.rising-world.net/latest/net/risingworld/api/package-summary.html JavaDoc RW: API Packages]  
* [https://javadoc.rising-world.net/latest/net/risingworld/api/package-summary.html JavaDoc RW: API Packages]  
* [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]
* [[Plugin-Erstellung]]  
* [[Plugin-Erstellung]]  
* [[:Kategorie:Java|Wiki Kategorie: "Java"]]
* [[: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://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/4757-create-a-plugin/ Rising World Forum: Create a Plugin]
* [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/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]


=== 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]]
[[Kategorie:Tutorial|Eclipse]]

Aktuelle Version vom 1. November 2024, 11:32 Uhr

Eclipse Entwicklungsumgebung Tutorial

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:

  1. Ö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.
  2. Suchen der Java-Einstellungen
    • Im linken Bereich des Einstellungsfensters befindet sich ein Baummenü
    • Erweitern Sie den Knoten "Java" durch einen Klick auf das Pluszeichen (+)
  3. 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
  4. 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)
  5. 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

  1. Eclipse öffnen und auf "File" > "New" > "Java Project" klicken.
  2. Im Dialogfeld "New Java Project" den Projektnamen eingeben, z.B. "RisingWorldPlugin".
  3. 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.
  4. Klicken Sie auf "Next" und dann auf "Finish".


Einbindung der Rising World Plugin-API

Einbindung der Plugin-API

Das Spiel wird bereits mit der API-Bibliothek (PluginAPI.jar) und dem entsprechenden JavaDoc (javadoc.zip) ausgeliefert, beides ist im
Spielverzeichnis unter Folder-icon.png 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:

  1. Im Eclipse-Projektbaum mit der rechten Maustaste auf das Projekt klicken und "Properties" auswählen.
  2. Zum Bereich "Java Build Path" navigieren und zum Reiter "Libraries" wechseln
  3. Auf "classpath" klicken
  4. Auf "Add External JARs..." klicken und die PluginAPI.jar Datei auswählen
  5. auf "classpath" verschieben wenn nötig
  6. 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.

  1. Rechtsklick auf das Projekt > "New" > "Package" und einen Paketnamen wie net.mypackage.mainerstesplugin angeben
  2. Auf "Finish" klicken
  3. Rechtsklick auf das neu erstellte Paket > "New" > "Class" und einen Klassennamen MyPluginClass eingeben
  4. Auf "Finish" klicken und die Klasse wird erstellt
  5. 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();
	    }
    }
}
Rising World Plugin API Links.  

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

Eine rote Schlangenlinie über import net. ...
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

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: 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

plugin.yml Datei Beispiel
  • 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.

90%


Plugin kompilieren und testen

Um das Plugin zu kompilieren, einfach das Projekt in Eclipse bauen.

  1. Rechtsklick auf das Projekt > "Export" > "Java" > "JAR file"
  2. klicken Sie auf "Next" (Weiter)
  3. "JAR file" > "Browse"

Die generierte .jar-Datei soll dann im
Plugins-Verzeichnis Folder-icon.png 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

Plugin-Erstellung

Forum

Kategorien

Tutorial Kategorien
Plugin-API(1 K, 5 S)
Tutorial(2 S)
Plugin-Erstellung
Java(2 K, 6 S)
Unity(3 S)