In diesem Part werde ich euch bei bringen wie man ein config.yml erstellt, ausliest und beschreiben kann. Mit Hilfe solcher Config-Dateien lassen sich unsere Plugins viel dynamischer Gestalten, sogar auf einzelne Spieler bezogen!
Um das Beispiel aus dem ersten Part heran zu ziehen, werde ich eine Config-Datei erstellen, dessen inhalt die Aktivierung unserer 3 Beispiel-Befehle enthält.
Nun gut, fangen wir an. Wie immer starten wir als erstes unserere Programmierumgebung 'Eclipse'. Als nächstes öffnen wir wieder unser altes Projekt und navigieren zu unserer Klasse, welche unsere Commands enthält.
Als aller erstes müssen wir eine Fileconfiguration definieren. Dafür navigieren wir unsere Maus ans obere Ende unserer Public Class PluginBasics und schreiben unter der geschweiften Klammer folgendes:
PHP Code:
protected FileConfiguration config;
Allerdings kann ich mich auch irren.
Nun gut, damit unsere Config auch einen 'Inhalt' bekommt müssen wir zum Void onEnable und setzen den Wert von 'config' zu getConfig().
Das dürfte nun ungefähr so aussehen:
PHP Code:
config = getConfig();
Wie dies geht, dürftet ihr inzwischen schon wissen.
Wir möchten nun, dass unser Plugin automatisch abfragt, ob die Config-Datei schon einmal gefüllt wurde, oder eben nicht.
Das unternehmen wir ganz einfach. Wir fragen mit folgenden Methoden den Inhalt einer einzelnen Eigenschaft ab:
PHP Code:
if(this.getConfig().getBoolean("written") != true)
{
}
Man kann natürlich auch Strings oder Integer abfragen.
Anstatt getBoolean verwendet man dann getInt oder getString.
Un genau in dem Fall, wenn unsere eigenschaft written auf False ist, so möchte ich weitere Eigenschaften hin zu fügen. (Damit das funktioniert, muss der Administrator des Servers, zumindest die Eigenschaft written in die config.yml einfügen. Denn erst dann, können die weiteren Eigenschaften geschrieben werden. Das ist viel Bequemer für den Server-Administrator, da er in die Config nur einmal written hinzufügen muss, mit dem wert False. Das weitere Schreiben, damit auch keine Fehler entstehen, überlässt man dann einfach dem Plugin.
Un dies funktioniert folgender Maßen:
Um eine Eigenschaft zu setzen beziehungsweise überhaupt zu schreiben, verwenden wir die Methode this.getConfig().set("Eigenschaftenname", WERT);
Allerdings möchte ich die Config.yml so aufgebaut haben:
Sprich: Es gibt Kategorien, welche dann wiederrum eigenschaften besitzen.Quote:
hello:
activated: true
storm:
activated: true
heal:
activated: true
Dies bewerkstelligen wir, indem wir bei "Eigenschaftenname" zum Beispiel 'storm.activated' schreiben! Verstanden?
Fangen wir an, unsere Config.yml innerhalb unserer vorhin gesetzten Abfrage zu beschreiben.
PHP Code:
this.getConfig().set("hello.activated", true);
this.getConfig().set("storm.activated", true);
this.getConfig().set("heal.activated", true);
Erklären brauche ich bei den 3 Zeilen nun nichts mehr. Das könnt ihr alles in etwa 10 Zeilen weiter höher lesen und auch verstehen.
Alles klar. Jetzt muss der Administrator einmal das Plugin reinziehen, die Eigenschaft 'written' auf false setzen und anschliessen den Server einmal starten. Damit beim Neustart des Servers allerdings nicht alles wieder überschrieben wird, müssen wir written auf true setzen.
Wie wir dies bewerkstelligen dürft ihr nun mal selber ausprobieren.
Nun möchten wir die Conifgdatei schon einmal speichern!
Das funktioniert einfach mit saveConfig();
Die Methode solltet ihr auch bei onDisable anwenden, damit eure, eventuell Ingame veränderten Eigenschaften nicht verworfen werden.
Wir erinnern uns, wir wollten bei unseren Commands abfragen, ob unsere Commands aktiviert sind! Schaut einfach etwas weiter oben in dieses Tutorial, und zwar dort, wo wir abfragen, ob die Eigenschaft written auf false ist. Ich muss hier ja nicht jeden einzelnen Schritt erklären!
Das war's auch schon mit dem Tutorial hier.
Bei Fehlern bitte bescheid geben.
PS: Das Listenertutorial wird später in diesen Thread rein editiert!