Plugin-Erstellung/Java/Reflexion in Java
* Diese Seite ist in Bearbeitung * This page is in progress *
Bitte schaue später noch einmal vorbei, um weitere Änderungen zu erfahren.
Please check back later for additional changes.
|
Reflexion ist eine leistungsstarke Funktion in Java, die es ermöglicht, zur Laufzeit auf Klassen, Methoden und Felder zuzugreifen und diese zu manipulieren. In diesem Artikel werden die Grundlagen der Reflexion in Java erläutert, insbesondere im Kontext von Plugins für das Spiel Rising World.
Grundlagen der Reflexion
Reflexion in Java ermöglicht es, zur Laufzeit auf die Struktur, Methoden und das Verhalten von Klassen zuzugreifen, ohne dass deren Namen zur Compilezeit bekannt sein müssen. Dies bietet eine flexible Möglichkeit, Klassen dynamisch zu untersuchen ...
Import
Es muss zuerst das folgende Paket importieren verwenden, um die Reflexions-API zu verwenden.
import java.lang.reflect.*
- es importiert alle Klassen, die in der Reflexions-API enthalten sind.
oder
import java.lang.reflect.Method;
- es importiert nur die Klasse Method
Beispiel
MethodCaller Klasse
Beispiel für eine MethodCaller Klasse
// ...
MyPluginClass Klasse
Beispiel für eine MyPluginClass Klasse
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()
{
// Plugin wurde entladen
}
@EventMethod
public void onPlayerConnectEvent(PlayerConnectEvent event)
{
System.out.println(this.getName() + ": Player 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
MethodCaller caller = new MethodCaller();
//Befehl durch Leerzeichen Teilen
String[] cmd = event.getCommand().split(" ");
//Spieler, der den Befehl ausgeführt hat
Player player = event.getPlayer();
// Wenn der Spieler "/call" eingibt
if (cmd[0].equalsIgnoreCase("/call"))
{
if (cmd.length == 2)
{
try
{
caller.startMethod(cmd[1]);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
}