Wir werden das Plug-In entwickeln, indem wir es dem Plug-In hinzufügen, das in Erstellen eines Spigot-Plug-Ins mit Eclipse erstellt wurde.
Bearbeiten Sie plugin.yml
, um die Funktion hinzuzufügen, mit der der Befehl des selbst erstellten Plug-Ins auf den Befehl reagiert.
command:
Befehlsname:
description:Eine Übersicht über den Befehl finden Sie hier
usage:Beschreibung der Befehlsverwendung
--description - Befehlsbeschreibung. --usage - Verwendung des Befehls. Wenn onCommand () hier false zurückgibt, wird diese Verwendung angezeigt.
Hier werden nur grundlegende Elemente hinzugefügt. Es ist möglich, mit verschiedenen Dingen zu spielen, indem andere als "Beschreibung" und "Verwendung" hinzugefügt werden. Wenn Sie weitere detaillierte Einstellungen vornehmen möchten, wählen Sie diese Site Wir verweisen auf E4% B8% 80% E8% A6% A7).
Ein Beispiel ist wie folgt.
name: "QiitaTest"
version: "${project.version}"
main: "com.github.kubota.qiitatest.QiitaTest"
api-version: "1.13"
commands: #Deklarieren Sie Befehle für Ihr eigenes Plugin
qiita:
description: this is a sample command.
usage: /<command>
Fügen Sie der Hauptklasse die folgenden Elemente hinzu.
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
return false;
}
Hier finden Sie eine kurze Erläuterung der Methode "onCommand".
Diese Methode wird ausgeführt, wenn der durch Command
in plugin.yml
definierte Befehl ausgeführt wird.
Es gibt vier Argumente, von denen jedes wie folgt lautet. --CommandSender Absender - Befehl Absender --Command cmd - Inhalt des ausgeführten Befehls --String commandLabel - Verwendeter Befehlsalias --String [] args - Ein Array mit Befehlsargumenten
Und da der Typ dieser Methode "Boolean" ist, ist der zurückgegebene Wert entweder "true" oder "false". Wenn es "wahr" ist, bedeutet dies, dass es normal funktioniert. Wenn es "falsch" ist, bedeutet dies, dass es nicht normal funktioniert hat und die unter "Verwendung" beschriebenen Inhalte angezeigt werden.
Wenn Sie diese Methode zu einem vorhandenen Programm hinzufügen, ist dies wie folgt.
package com.github.kubota.qiitatest;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class QiitaTest extends JavaPlugin{
//↓ onEnable ist eine Methode, die beim Laden ausgeführt wird
@Override
public void onEnable() {
//↓ Hinterlassen Sie ein Protokoll auf dem Server
getLogger().info("Hello, Qiita!");
}
//onCommand ist ein Plugin.Wird ausgeführt, wenn der in yml beschriebene Befehl aufgerufen wird
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
return false;
}
}
Wenn Sie dies tun, sieht es so aus: Wenn der Befehl "Qiita" ausgeführt wird, wird das Programm in der Methode "onCommand" ausgeführt und "false" zurückgegeben, sodass die in "Verwendung" in "plugin.yml" beschriebenen Inhalte angezeigt werden. Ich werde.
Fügen Sie die Methode "sendMessage" hinzu, da dies nur schwer zu verstehen ist. Diese Methode ist eine Member-Methode der CommandSender-Klasse. Die Funktion dieser Methode besteht darin, die Zeichenfolge im Argument als Nachricht an diese Zielperson (Benutzer der Instanz) zu senden. Der Unterschied zur im vorherigen Kapitel verwendeten Methode "getLogger" besteht darin, dass die Zeichenfolge auf der Konsole angezeigt und nur an die Zielperson gesendet wird.
Das Folgende ist die bearbeitete Version.
package com.github.kubota.qiitatest;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class QiitaTest extends JavaPlugin{
//↓ onEnable ist eine Methode, die beim Laden ausgeführt wird
@Override
public void onEnable() {
//↓ Hinterlassen Sie ein Protokoll auf dem Server
getLogger().info("Hello, Qiita!");
}
//onCommand ist ein Plugin.Wird ausgeführt, wenn der in yml beschriebene Befehl aufgerufen wird
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
sender.sendMessage("Command, Qiita!");
return true;
}
}
Aufgrund der Art der Methode "onCommand" ist das erste Argument, "sender", der Benutzer, der den Befehl ausgeführt hat. Daher wird in diesem Programm die Nachricht nur an den Benutzer gesendet, der den Befehl ausgeführt hat. Außerdem habe ich von "false" zu "true" gewechselt, um die Änderung des Verhaltens aufgrund des Rückgabewerts zu bestätigen.
Das Ausführungsergebnis ist wie folgt.
Um mehrere Plug-Ins festzulegen, fügen Sie diese wie folgt unter "Befehl" hinzu. Es sieht aus wie das.
name: "QiitaTest"
version: "${project.version}"
main: "com.github.kubota.qiitatest.QiitaTest"
api-version: "1.13"
commands: #Deklarieren Sie Befehle für Ihr eigenes Plugin
qiita:
description: this is 1st sample command.
usage: /<command>
sample:
description: this is 2nd sample command.
usage: /<command>
onCommand
ist eine Methode, die ausgeführt wird, wenn der in plugin.yml
beschriebene Befehl aufgerufen wird.
Wenn in plugin.yml
mehrere Befehle definiert sind, werden sie ausgeführt, wenn einer von ihnen aufgerufen wird.
Wenn Sie das vorhandene Programm beibehalten, führen alle Befehle denselben Vorgang aus, auch wenn Sie mehrere Befehle vorbereiten.
In diesem Fall ist es sinnlos, mehrere Befehle vorzubereiten. Daher muss der Prozess gemäß dem ausgeführten Befehl verzweigt werden.
package com.github.kubota.qiitatest;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class QiitaTest extends JavaPlugin{
//↓ onEnable ist eine Methode, die beim Laden ausgeführt wird
@Override
public void onEnable() {
//↓ Hinterlassen Sie ein Protokoll auf dem Server
getLogger().info("Hello, Qiita!");
}
//onCommand ist ein Plugin.Wird ausgeführt, wenn der in yml beschriebene Befehl aufgerufen wird
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if(cmd.getName().equalsIgnoreCase("qiita")){
//Wird ausgeführt, wenn der Befehl qiita ausgeführt wird
sender.sendMessage("Command, Qiita!");
return true;
}
if(cmd.getName().equalsIgnoreCase("sample")){
//Wird ausgeführt, wenn der Beispielbefehl ausgeführt wird
sender.sendMessage("Command, sample!");
return true;
}
return false;
}
}
Wie oben erwähnt, speichert cmd Informationen über den ausgeführten Befehl.
Sie können den ausgeführten Befehl als Zeichenfolge abrufen, indem Sie die Methode "getName" dieser Instanz ausführen.
equalsIgnoreCase
-Methode Dies ist eine Methode vom Typ String, die als Boolescher Typ zurückgibt, ob die Argumentzeichenfolge mit der ausgeführten Zeichenfolge übereinstimmt.
Wenn dies ausgeführt wird, ist es wie folgt.
Tips
Die Methode wird zwangsweise beendet, ohne "return" und anschließende Verarbeitung auszuführen.
Dies ist kein Muss, aber um Argumente als Funktion des Befehls qiita zu akzeptieren, ändern Sie die Verwendung, um das Verständnis wie folgt zu erleichtern.
name: "QiitaTest"
version: "${project.version}"
main: "com.github.kubota.qiitatest.QiitaTest"
api-version: "1.13"
commands: #Deklarieren Sie Befehle für Ihr eigenes Plugin
qiita:
description: this is 1st sample command.
usage: /<command> [text]
sample:
description: this is 2nd sample command.
usage: /<command>
Die Argumente beim Ausführen des Befehls werden in einer Variablen namens "args" gespeichert. Dies ist ein Array vom Typ String. Da es sich um ein Array handelt, können Sie es erhalten, indem Sie "args [x]" usw. eingeben. Der "x" -Teil beginnt bei 0 und wird um 1 erhöht.
> qiita a wa ka
Wenn Sie den Befehl ausführen
Streit | args[0] | args[1] | args[2] |
---|---|---|---|
Wert | "a" | "wa" | "ka" |
Es wird so gespeichert.
Schreiben wir den folgenden Code damit.
package com.github.kubota.qiitatest;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class QiitaTest extends JavaPlugin{
//↓ onEnable ist eine Methode, die beim Laden ausgeführt wird
@Override
public void onEnable() {
//↓ Hinterlassen Sie ein Protokoll auf dem Server
getLogger().info("Hello, Qiita!");
}
//onCommand ist ein Plugin.Wird ausgeführt, wenn der in yml beschriebene Befehl aufgerufen wird
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if(cmd.getName().equalsIgnoreCase("qiita")) {
if(args.length == 0)return false;
sender.sendMessage("Command, Qiita by " + args[0]);
return true;
}
if(cmd.getName().equalsIgnoreCase("sample")) {
sender.sendMessage("Command, Sample");
return true;
}
return false;
}
}
args.length
enthält die Anzahl der Elemente, die im Array von args
gespeichert sind.
Wenn es 0 ist, bedeutet dies, dass bei der Ausführung des Befehls kein Argument eingegeben wurde.
Diesmal ist ein solcher Status nicht geeignet, daher gibt die Methode "onCommand" "false" zurück.
Wenn die Bedingung überschritten wird (wenn ein Argument vorhanden ist), wird die als erstes Argument eingegebene Zeichenfolge angezeigt, nachdem die Meldung "Befehl, Qiita von" angezeigt wird. Wenn dies ausgeführt wird, ist das Ergebnis wie folgt.
Das wars für diese Zeit!
Erstellen Sie abschließend ein Beispiel-Plug-In mit diesem Wissen.
Als Funktion ist es ein Programm, das einen Computer spielt. Die Hand des Gegners wird als zufällige Hand bestimmt, wenn das Plug-In aktiviert wird, und ändert sich danach nicht mehr.
Die durch Befehle implementierten Funktionen sind
»Mach Janken --Überprüfe die Hand des Gegners
Es gibt zwei.
plugin.yml
name: "QiitaTest"
version: "${project.version}"
main: "com.github.kubota.qiitatest.QiitaTest"
api-version: "1.13"
commands: #Deklarieren Sie Befehle für Ihr eigenes Plugin
janken:
discription: play the game of scissors-paper-roc.
usage: /<command> [your choice]
enemy:
discription: check enemy choice.
usage: /<command>
Funktion des Befehls des zu implementierenden Plug-Ins
Befehl | Funktion |
---|---|
/janken [Hand zum Löschen] |
Mach Janken |
/enemy |
Überprüfen Sie die Hand des Gegners |
package com.github.kubota.qiitatest;
//Bibliothek zur Zufallszahlengenerierung
import java.util.Random;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class QiitaTest extends JavaPlugin{
String enemy = "";
//onEnable ist die Methode, die beim Laden ausgeführt wird
//Bei dieser Methode Feind(Hand des Gegners)Nach dem Zufallsprinzip bestimmen
@Override
public void onEnable() {
//Sequenz mit Handinformationen
String[] hand = {"goo","tyo","paa"};
//Instantulieren Sie eine Klasse für die Zufallszahlengenerierung
Random r = new Random();
//Generieren Sie mit der nextInt-Methode eine Zufallszahl zwischen 0 und 3,Bewahren Sie die entsprechende Hand im Feind auf
enemy = hand[r.nextInt(3)];
}
//onCommand ist ein Plugin.Wird ausgeführt, wenn der in yml beschriebene Befehl aufgerufen wird
@Override
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
//Spielen Sie das Spiel mit dem Feind, indem Sie den Befehl janken ausführen
//Geben Sie Ihre Hand als Argument ein
if(cmd.getName().equalsIgnoreCase("janken")) {
//Es wurden keine Argumente übergeben
if(args.length == 0)return false;
if(args[0].equalsIgnoreCase("paa") && enemy.equalsIgnoreCase("tyo") ||
args[0].equalsIgnoreCase("tyo") && enemy.equalsIgnoreCase("goo") ||
args[0].equalsIgnoreCase("goo") && enemy.equalsIgnoreCase("paa")){
//Muster besiegen
sender.sendMessage("Mein Gewinn!Überlegen Sie, warum Sie bis morgen verloren haben");
}else if(args[0].equalsIgnoreCase("tyo") && enemy.equalsIgnoreCase("paa") ||
args[0].equalsIgnoreCase("goo") && enemy.equalsIgnoreCase("tyo") ||
args[0].equalsIgnoreCase("paa") && enemy.equalsIgnoreCase("goo")) {
//Siegesmuster
sender.sendMessage("Tu es!Lass mich morgen rächen");
}else if(args[0].equalsIgnoreCase(enemy)) {
//Aiko Muster
sender.sendMessage("Aikoyan!Was ist das?");
}else {
//Andere Muster als goo tyo paa
return false;
}
return true;
}
//Zeigen Sie die Hand des Gegners mit dem feindlichen Befehl an
if(cmd.getName().equalsIgnoreCase("enemy")) {
sender.sendMessage("Enemy choice is " + enemy + ".");
return true;
}
return false;
}
}
//Bibliothek zur Zufallszahlengenerierung
import java.util.Random;
Durch Importieren dieser Bibliothek können Sie die unten verwendeten Klassen verwenden, um Zufallszahlen zu generieren.
//Variabel, um die Hand des Gegners zu speichern
String enemy = "";
//onEnable ist die Methode, die beim Laden ausgeführt wird
//Bei dieser Methode Feind(Hand des Gegners)Nach dem Zufallsprinzip bestimmen
@Override
public void onEnable() {
//Sequenz mit Handinformationen
String[] hand = {"goo","tyo","paa"};
//Instantulieren Sie eine Klasse für die Zufallszahlengenerierung
Random r = new Random();
//Generieren Sie mit der nextInt-Methode eine Zufallszahl zwischen 0 und 3,Bewahren Sie die entsprechende Hand im Feind auf
enemy = hand[r.nextInt(3)];
}
Dies ist ein Programm, das zufällig die Hand des Gegners bestimmt. Bereiten Sie zunächst "Feind", eine Variable, die die Hand des Gegners speichert, als Feld der Hauptklasse vor.
Danach wird eine Instanz der Random
-Klasse als Prozess initialisiert, wenn dieses Programm wirksam wird.
Dies ermöglicht die Verwendung einer Methode zum Generieren von Zufallszahlen über diese Instanz.
Rufen Sie als nächstes die Methode nectInt
auf, um eine Zufallszahl zu erhalten. Das Argument dieser Methode ist der Maximalwert der generierten Zufallszahl.
Dieses Programm generiert Zufallszahlen von 0 oder mehr und weniger als 3.
Indem dies als Index des Arrays verwendet wird, ist es möglich, zufällig eines der drei Elemente von 0 bis 2 zu erhalten, dh das "Hand" -Array.
//Spielen Sie das Spiel mit dem Feind, indem Sie den Befehl janken ausführen
//Geben Sie Ihre Hand als Argument ein
if(cmd.getName().equalsIgnoreCase("janken")) {
//Es wurden keine Argumente übergeben
if(args.length == 0)return false;
if(args[0].equalsIgnoreCase("paa") && enemy.equalsIgnoreCase("tyo") ||
args[0].equalsIgnoreCase("tyo") && enemy.equalsIgnoreCase("goo") ||
args[0].equalsIgnoreCase("goo") && enemy.equalsIgnoreCase("paa")){
//Muster besiegen
sender.sendMessage("Mein Gewinn!Überlegen Sie, warum Sie bis morgen verloren haben");
}else if(args[0].equalsIgnoreCase("tyo") && enemy.equalsIgnoreCase("paa") ||
args[0].equalsIgnoreCase("goo") && enemy.equalsIgnoreCase("tyo") ||
args[0].equalsIgnoreCase("paa") && enemy.equalsIgnoreCase("goo")) {
//Siegesmuster
sender.sendMessage("Tu es!Lass mich morgen rächen");
}else if(args[0].equalsIgnoreCase(enemy)) {
//Aiko Muster
sender.sendMessage("Aikoyan!Was ist das?");
}else {
//Andere Muster als goo tyo paa
return false;
}
return true;
}
Und der nächste scheint auf den ersten Blick sehr schwierig zu sein, aber der Inhalt ist einfach, weil der bedingte Ausdruck kompliziert ist. Das Gewinnmuster und das Verlustmuster werden alle nacheinander definiert (nur Aiko beurteilt, dass "Feind" und "Argumente" gleich sind).
//Zeigen Sie die Hand des Gegners mit dem feindlichen Befehl an
if(cmd.getName().equalsIgnoreCase("enemy")) {
sender.sendMessage("Enemy choice is " + enemy + ".");
return true;
}
Es wird nur "Feind" angezeigt. Ich glaube nicht, dass es besondere Schwierigkeiten gibt.