Erstellen von Spigot-Plugins mit Eclipse

Dinge die zu tun sind

スクリーンショット 2019-08-12 23.00.57.png Ich werde ein super einfaches Plug-In implementieren, das das Protokoll anzeigt, wenn das Plug-In wie folgt aktiviert ist. Wenn Sie es richtig machen, dauert es weniger als 15 Minuten.

Zielgruppe

  1. Der Minecraft-Zapfen-Server wurde bereits erstellt.

Autorenumgebung

macOS Mojave Version: 10.14.6

Macbook Pro (15-inch, 2018) Prozessor: 2,2 GHz Intel Core i7 Speicher: 16 GB 2400 MHz DDR4 Startdiskette: Macintosh HD Grafik: Radeon Pro 555X 4GB Intel UHD Graphics 630 1536MB

Einführung einer umfassenden Entwicklungsumgebung (Eclipse)

Greifen Sie auf die Download Site zu. Dann sollten Sie auf die folgenden Websites zugreifen können. Vorerst habe ich die neueste Version gewählt. スクリーンショット 2019-08-12 18.15.35.png

Als nächstes installieren Sie die full Edition von Java in diesem. Es scheint, dass es kein Problem mit "Standard Edition" gibt, aber ich habe "Full Edition" verwendet, da es keinen Grund gibt, sie auszuwählen. スクリーンショット 2019-08-12 18.17.15.png

Aus irgendeinem Grund wurde es jedoch von der Mac-Sicherheit gespielt, daher habe ich es unter Bezugnahme auf die folgende Site gelöst. (Vielleicht war die neueste Version von Eclipse auf der Mac-Seite nicht zertifiziert?) Mac - Alle Anwendungen ausführen lassen

Ein Projekt erstellen

Wählen Sie zunächst "Datei-> Neu-> Maven-Projekt". スクリーンショット 2019-08-12 18.31.41.png

Dann wird der folgende Bildschirm angezeigt. Setzen Sie ein Spannfutter in "Ein einzelnes Projekt erstellen (Architekturauswahl überspringen)" und klicken Sie auf "Weiter>". スクリーンショット 2019-08-12 18.37.27.png

Als nächstes wird der Bildschirm zur Eingabe von Projektinformationen angezeigt. (Qiita ist nur mein Tippfehler ...) スクリーンショット 2019-08-12 18.42.35.png "Gruppen-ID" ist der Name des Erstellers. "Artefakt-ID" ist der Projektname = Plug-In-Name. Sie können es benennen, wie Sie möchten. "Version" ist die Versionsnummer. Sie können dies beliebig benennen. Stellen Sie diese drei ein. Andere sollten nicht geändert werden müssen.

Damit ist die Projekterstellung abgeschlossen!

Einstellung von pon.xml

Als nächstes nehmen wir die Einstellungen zum Einstellen des Plug-Ins vor. Bereiten Sie hier "was Sie brauchen (Abhängigkeit)" vor. Ich denke, das ist der Ausgangszustand.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.kubota</groupId>
  <artifactId>QiitaSample</artifactId>
  <version>1.0.0</version>
</project>

Die Einstellungen für den Zapfen werden hier beschrieben. Sie können die "Bukkit-API" verwenden, indem Sie "Spigot-Repository" und "Spigot-API" hinzufügen, wie unten gezeigt.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.kubota</groupId>
  <artifactId>QiitaSample</artifactId>
  <version>1.0.0</version>

  <!-- ↓ Spigot-repository -->
  <repositories>
    <repository>
      <id>spigot-repo</id>
      <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
  </repositories>

  <!-- ↓ Spigot-API -->
  <dependencies>
    <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-api</artifactId>

      <!-- ↓ (Minecraft-Version)-R0.1-SNAPSHOT -->
      <version>1.13.2-R0.1-SNAPSHOT</version>

      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>

Dies allein funktioniert jedoch je nach Version von Minecraft nicht. Beschreiben Sie die Eigenschaften daher wie folgt.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.kubota</groupId>
  <artifactId>QiitaSample</artifactId>
  <version>1.0.0</version>

  <!-- ↓ Spigot-repository -->
  <repositories>
    <repository>
      <id>spigot-repo</id>
      <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
  </repositories>

  <!-- ↓ Spigot-API -->
  <dependencies>
    <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-api</artifactId>

      <!-- ↓ (Minecraft-Version)-R0.1-SNAPSHOT -->
      <version>1.13.2-R0.1-SNAPSHOT</version>

      <scope>provided</scope>
    </dependency>
  </dependencies>

  <!--↓ Eigenschafteneinstellung-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- ↓ Java version 12 -->
    <maven.compiler.source>12</maven.compiler.source>
    <maven.compiler.target>12</maven.compiler.target>
  </properties>
</project>

Ändern Sie derzeit auch Folgendes, um die Zusammenarbeit mit "plugin.yml" zu erleichtern, das später hinzugefügt wird.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.kubota</groupId>
  <artifactId>QiitaSample</artifactId>
  <version>1.0.0</version>

  <!-- ↓ Spigot-repository -->
  <repositories>
    <repository>
      <id>spigot-repo</id>
      <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
  </repositories>

  <!-- ↓ Spigot-API -->
  <dependencies>
    <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-api</artifactId>

      <!-- ↓ (Minecraft-Version)-R0.1-SNAPSHOT -->
      <version>1.13.2-R0.1-SNAPSHOT</version>

      <scope>provided</scope>
    </dependency>
  </dependencies>

  <!--↓ Eigenschafteneinstellung-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- ↓ Java version 12 -->
    <maven.compiler.source>12</maven.compiler.source>
    <maven.compiler.target>12</maven.compiler.target>
  </properties>

  <!-- plugin.yml pom.Link mit XML-->
  <build>
    <resources>
      <resource>
        <targetPath>.</targetPath>
        <filtering>true</filtering>
        <directory>src/main/resources/</directory>
      </resource>
    </resources>
  </build>

</project>

Damit ist die Änderung von pom.xml abgeschlossen.

Projektaktualisierung

Die Abhängigkeit hat sich aufgrund der Änderung von "pom.xml" ein wenig geändert, daher ist es notwendig, sie zu aktualisieren. Klicken Sie als Methode mit der rechten Maustaste auf das erstellte Projekt ("QiitaSample" ist auf meinem Bildschirm anwendbar) und wählen Sie es in der Reihenfolge "Maven-> Projekt aktualisieren" aus. Dadurch werden die Abhängigkeiten aktualisiert (es dauerte nicht lange). スクリーンショット 2019-08-12 20.07.21.png

Dann sehen Sie den folgenden Bildschirm. (Im Fall des Autors werden bereits Projekte erstellt, aber wenn es sich um die erste Erstellung handelt, gibt es nur eines.) スクリーンショット 2019-08-12 20.12.35.png Chuck das diesmal erstellte Projekt dazu und drücke OK, Damit ist das Update abgeschlossen!

Plug-In erstellen

Nachdem die Bukkit-API-Abhängigkeiten festgelegt wurden, können Sie das Plugin selbst erstellen.

Hauptklasse erstellen

Klicken Sie mit der rechten Maustaste unter dem erstellten Projekt auf "src / main / java" und wählen Sie [Neu] → [Paket]. スクリーンショット 2019-08-12 20.16.00.png

Als nächstes verwenden wir den Paketnamen **, der die Gruppen-ID und den durch. (Punkt) ** verbundenen Steckernamen ist. Im Fall des Autors lautet die Gruppen-ID "com.github.kubota" und der Plug-In-Name "QiitaSample", dh "com.gtihub.kubota.qiitasample". Einige Änderungen sind darauf zurückzuführen, dass dieser Paketname nicht mit Großbuchstaben verwendet werden kann. Daher wird er durch Kleinbuchstaben ersetzt. Da - (Bindestrich) nicht verwendet werden kann, wird er durch _ (Unterstrich) ersetzt.

Klicken Sie dann mit der rechten Maustaste auf das erstellte Paket und wählen Sie "Neu" -> "Klasse". スクリーンショット 2019-08-12 20.26.40.png

Dann wird der folgende Bildschirm angezeigt. Geben Sie also den Klassennamen ein, der dort blühen wird. Der Name kann beliebig sein, aber aus Gründen der Übersichtlichkeit verwenden wir den aktuellen Projektnamen oder "Main". (Es ist mein Tippfehler, dass Qiita hier QIita ist ...) スクリーンショット 2019-08-12 20.32.30.png

Wenn Sie es öffnen, sollte es so aussehen:

package com.github.kubota.qiitasample;

public class QIitaPlugin {

}

Lassen Sie uns dies wie folgt ändern.

package com.github.kubota.qiitasample;
import org.bukkit.plugin.java.JavaPlugin;

public class QIitaPlugin 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!");
	}
}

Dann werde ich jeden geänderten Teil einzeln erklären.

import org.bukkit.plugin.java.JavaPlugin;

Diese Zeile importiert die Funktionalität, die zum Erstellen eines Plugins erforderlich ist.

public class QIitaPlugin extends JavaPlugin{

Mit dem an dieser Stelle hinzugefügten "Exetends Java Plugin" ist es möglich, durch Hinzufügen von Funktionen zu der Klasse, in der die Grundfunktionen von Minecraft bereits implementiert sind, zu erstellen.

public class QIitaPlugin 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!");
	}
}

Hier finden Sie eine kurze Erläuterung der Methode "onEnable". Der Ort mit dem Namen "@ Override" gibt an, dass die Methode in der "Javaplugin" -Klasse überschrieben wird. Das Überschreibungsziel ist die Methode "onEnable". Die Methode "onEnable" ist eine Methode, die automatisch ausgeführt wird, wenn das Plug-In aktiviert wird. Die Verarbeitung hat hier keine Funktion, solange sie nicht überschrieben wird.

Fügen Sie als Überschreibvorgang der Konsole mit der Methode'getLogger (). Info () 'etwas mit dem Namen "Hallo, Qiita!" Hinzu. Durch diesen Überschreibvorgang wurde es zu einer Methode mit einer Funktion namens **, die automatisch "Hallo, Qiita!" Auf der Konsole anzeigt, wenn das Plug-In aktiviert ist.

Plugin.yml erstellen

Klicken Sie mit der rechten Maustaste auf "src / main / resources" und wählen Sie "Neu"> "Datei". スクリーンショット 2019-08-12 20.51.55.png Erstellen Sie dann eine Datei mit dem Namen "plugin.yml". スクリーンショット 2019-08-12 20.53.35.png Wenn die folgenden vier beschrieben sind.

name: "Hauptklasse"
version: "Ausführung"
main: "Hauptklasse"
api-version: "Bukkit API-Version""

name beschreibt den Plug-In-Namen. version ist die Version des Plugins. Diese Version ist jedoch in Ordnung, wenn Sie "$ {project.version}" schreiben, da "plugin.yml" diesmal mit "pom.xml" verknüpft ist. main beschreibt den Paketnamen der Hauptklasse und den durch Punkte verbundenen Klassennamen. api-version ist nicht unbedingt erforderlich, aber fast erforderlich, also lasst es uns aufschreiben.

Hier werden die unterstützten Bukkit-API-Versionen aufgelistet. Zum Beispiel ist 1.13 oder 1.13.2 1.13, 1.14 oder 1.14.2 ist 1.14 und so weiter.

name: "QiitaSample"
version: "${project.version}"
main: "com.github.kubota.qiitasample.QiitaSample"
api-version: "1.13"

Plug-In kompilieren

Dies ist fast das Ende der Implementierung. Alles was Sie tun müssen, ist zu kompilieren. Klicken Sie dazu mit der rechten Maustaste auf den Projektnamen und wählen Sie "Ausführen" -> "Maven installieren". スクリーンショット 2019-08-12 21.14.55.png

Wenn Sie dies tun, wird das Ergebnis auf dem Konsolenbildschirm angezeigt. Wenn es als "BUILD SUCCESS" angezeigt wird, ist es erfolgreich.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.762 s
[INFO] Finished at: 2019-08-12T21:15:44+09:00
[INFO] ------------------------------------------------------------------------

Dann sollte die "Jar" -Datei zu "terget" hinzugefügt werden. スクリーンショット 2019-08-12 21.18.52.png

Wenn Sie diese "Jar" -Datei zu "Plugins" des ursprünglich erstellten Serververzeichnisses hinzufügen und ausführen, funktioniert das Plugin. (Der Name des Steckers lautet aus verschiedenen Gründen "QiitaTest", aber ich habe bestätigt, dass er nach dem oben beschriebenen Verfahren normal funktioniert.) スクリーンショット 2019-08-12 23.00.57.png

Das ist das Ende dieses Inhalts. Ich habe das Plug-In unter der Mac-Umgebung entwickelt, aber ich denke, es wird hilfreich sein, da die Verwendung von Eclipse selbst für Windows dieselbe ist. (Obwohl das Tastenlayout etwas anders sein kann ...)

Fortsetzung

Akzeptieren Sie den Befehl [MineCraft Plug-In] und lösen Sie ein Ereignis aus

Wo ich feststeckte

name: "SampleProject"
version: "${project.version}"
main: "com.github.kubota.sampleproject.SampleProject"
api-version: "1.13"

Obwohl es in plugin.yml des Hauptteils beschrieben ist. Ich habe falsch verstanden, dass es kein Problem nur mit dem Paketnamen an dieser Hauptstelle gibt, und habe es wie folgt beschrieben.

name: "SampleProject"
version: "${project.version}"
main: "com.github.kubota.sampleproject"
api-version: "1.13"

Infolgedessen konnte auf die Datei "SampleProject" nicht verwiesen werden, und der folgende Fehler wurde ausgelöst.

[16:11:39 ERROR]: Could not load 'plugins/SampleProject' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `com.github.kubota.sampleproject'
	at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:62) ~[spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:332) ~[spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:252) [spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at org.bukkit.craftbukkit.v1_13_R2.CraftServer.loadPlugins(CraftServer.java:325) [spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at net.minecraft.server.v1_13_R2.DedicatedServer.init(DedicatedServer.java:213) [spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:698) [spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at java.lang.Thread.run(Thread.java:835) [?:?]
Caused by: java.lang.ClassNotFoundException: com.github.kubota.projectsample
	at java.net.URLClassLoader.findClass(URLClassLoader.java:436) ~[?:?]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:136) ~[spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:82) ~[spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
	at java.lang.Class.forName0(Native Method) ~[?:?]
	at java.lang.Class.forName(Class.java:415) ~[?:?]
	at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:60) ~[spigot-1.13.2.jar:git-Spigot-1a3504a-dfa7583]
	... 7 more

Verweise

Recommended Posts

Erstellen von Spigot-Plugins mit Eclipse
Asynchrone Plug-Ins mit neovim erstellen
Erstellen einer Webanwendung mit Flask ②
Erstellen einer einfachen Tabelle mit Stettytable
Erstellen einer Webanwendung mit Flask ①
Erstellen eines Lernmodells mit MNIST
Erstellen einer Webanwendung mit Flask ③
Erstellen einer Webanwendung mit Flask ④