Plugin-Erstellung/Java/Server Klasse
Server Klasse
stellt das Server-Objekt dar. Über diese Klasse lässt sich der Spielkontext steuern, also alles was mit dem Server, den Spielern, der Spielzeit, dem Wetter und der Weltverwaltung zusammenhängt.
Die Klasse Server enthält ausschließlich statische Methoden und muss daher nicht instanziiert werden.
Beispiel shutdown
Fährt den Server herunter, sobald er länger als 24 Stunden läuft.
Die Klasse MyPlugin erbt von Plugin.
import net.risingworld.api.Plugin;
import net.risingworld.api.Server;
import net.risingworld.api.Timer;
public class MyPlugin extends Plugin implements Listener
{
//Global flag somewhere in order to make sure that the shutdown
//procedure is only triggered once
public boolean shuttingdown = false;
@Override
public void onEnable()
{
//Check the server running time every second
registerTimer(new Timer(1f, 0, 0, () -> {
//24 hours == 86400 seconds
float runningtime = Server.getRunningTime();
//Make sure "shuttingdown" hasn't been set yet
if(!shuttingdown && runningtime > 86400){
shuttingdown = true;
//Send a shutdown text and yell notification to all players
Server.broadcastTextMessage("<color=red>WARNING: Server will shutdown in 1 minute!</color>");
Server.broadcastYellMessage("WARNING\nServer will shutdown in 1 minute", 5f, true);
//Create a timer which only triggers once after 1 minute (60 seconds)
Timer timer = new Timer(0, 60f, 0, () -> {
//Save all
Server.saveAll();
//Shutdown server (this does not restart the server!)
Server.shutdown();
});
//Start the timer (simply creating a timer does not start it automatically)
timer.start();
}
}).start());
}
@Override
public void onDisable()
{
//...
}
}Die Klasse Server mit Codeschnipsel ist unter javadoc RW: Class Server zu finden.
Methoden der Oberklasse
Unsere Klasse erbt von der Plugin Oberklasse die zur API gehört.
Die Methode onEnable() wird aufgerufen, wenn das Plugin aktiviert wird. Zu diesem Zeitpunkt sind alle anderen Plugins bereits geladen.
Die Methode onDisable() wird aufgerufen, wenn das Plugin deaktiviert und entladen wird.
Wichtige Methoden in diesem Beispiel
Server.getRunningTime()– liefert die Anzahl der Sekunden, die seit dem Start des Servers vergangen sind. 24 Stunden entsprechen 86400 Sekunden.Server.broadcastTextMessage()– sendet eine Chat-Nachricht an alle verbundenen Spieler. HTML- bzw. Wiki-Farbtags wie<color=red>...</color>werden unterstützt.Server.broadcastYellMessage()– blendet eine große Statusmeldung in der Bildschirmmitte aller Spieler ein. Die Parameter sind die Nachricht, die Anzeigedauer in Sekunden sowie ein Flag, ob die Meldung pulsieren soll.Server.saveAll()– erzwingt das Speichern aller ausstehenden Änderungen (Welt, Spieler, NPCs, Truhen usw.). Empfehlenswert vor einem geplanten Shutdown.Server.shutdown()– fährt den Server geordnet herunter (dauert ca. 10 Sekunden). Für einen sofortigen Abbruch kann alternativSystem.exit(0);verwendet werden.Timer– Klasse zum periodischen oder einmaligen Ausführen von Aufgaben. In diesem Beispiel wird sie genutzt, um den Shutdown 60 Sekunden nach der Warnung tatsächlich auszulösen.
Java Override Annotation
Mit der Java @Override Annotation können wir dem Compiler mitteilen das wir absichtlich die Methode der Plugin Oberklasse überschreiben wollen.
Siehe auch
Forum
- Rising World Forum: Getting started
- Rising World Forum: Create a Plugin
- Rising World Forum: Code Schnipsel
Kategorien
| Tutorial Kategorien
Tutorial (2 S) |
Plugin-Erstellung
|