So verwenden Sie NMS in Bukkit
Obwohl Minecraft verschiedene Plugins willkommen heißt (mit denen Sie Ihr Spielerlebnis verändern können), sind einige Elemente des Spiels vor Plugin-Manipulation geschützt. Net.Minecraft.Server (NMS) ist eines dieser geschützten Pakete, da es wichtigen Servercode für das Spiel enthält. Dieser Code stammt direkt von den Minecraft-Entwicklern Mojang und soll Spielern nicht zugänglich sein.
Mit Bukkit können Spieler eine Abstraktionsschicht um den NMS-Code erstellen. Auf diese Weise können sie Plug-Ins entwickeln, die mit dem Code des Servers interagieren, ohne direkte Änderungen an der Codebasis vorzunehmen, die für das Spielen des Spiels unerlässlich ist. Stellen Sie es sich wie ein Fenster vor, in dem Sie den Code sehen können, den Sie in Ihrem Plugin verwenden möchten, das aber auch als Barriere fungiert, die Sie daran hindert, den Code direkt zu ändern.
Lassen Sie uns untersuchen, wie Sie Bukkit mit dem NMS von Minecraft verwenden.
Bevor Sie beginnen – Was Sie über Bukkit wissen müssen
Bukkit ist eine API, die es Ihnen ermöglicht, Plugins zu erstellen und zu verwenden, die verändern, wie Sie den Multiplayer-Aspekt von Minecraft erleben. Zumindest war es so. Die letzte Version von Bukkit kam 2016 heraus und wurde seitdem eingestellt, um Platz für eine andere API namens Spigot zu machen. Obwohl es ähnlich wie Bukkit funktioniert, bietet es eine bessere Serverleistung.
Wenn Sie also Bukkit für Ihre Plugins verwenden, müssen Sie sowohl eine veraltete Version von Minecraft spielen als auch die Tatsache akzeptieren, dass Bukkit nicht so gut ist wie seine Ersatz-API. Angenommen, Sie nehmen diese Opfer gerne in Kauf, hier sind die einzigen Dinge, die Sie brauchen:
- Java Development Kit (JDK) 7 oder höher, wobei die meisten JDK 8 empfehlen.
Damit sind Sie bereit, einige Plugins zu erstellen.
So erstellen Sie Bukkit-Plugins für Minecraft
Bevor Sie Bukkit verwenden können, um auf das NMS von Minecraft zuzugreifen, müssen Sie die API als Abhängigkeit hinzufügen, eine Hauptklasse festlegen, die es Bukkit ermöglicht, mit dem von Ihnen erstellten Plugin zu interagieren, und Bukkit die Informationen bereitstellen, die zum Laden Ihres Plugins in die erforderlich sind Spiel. Jeder Schritt erfordert Codierung, wobei die folgenden Beispiele aus dem RIP-Tutorial stammen .
Schritt 1 – Bukkit als Abhängigkeit hinzufügen
In der Vergangenheit konnten Sie Bukkit als Abhängigkeit in Minecraft hinzufügen, indem Sie die Datei Bukkit.jar aus dem Bukkit-Repository herunterladen und sie dem Klassenpfad Ihres Projekts hinzufügen. Diese Option ist nicht mehr verfügbar, da auf das Repository nicht mehr zugegriffen werden kann.
Glücklicherweise gibt es eine alternative Methode, die die pom.xml-Datei Ihres Spiels verwendet. Öffnen Sie die Datei und fügen Sie die folgenden Zeilen hinzu:
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<!--Bukkit API-->
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>{VERSION}</version>
<scope>provided</scope>
</dependency>
</dependencies>
Schritt 2 – Erstellen Sie die Hauptklasse Ihres Plugins
Ihr Plug-in muss in der Lage sein, eine einzelne Instanz seiner Hauptklasse zu erstellen, die verwendet wird, um „JavaPlugin“ zu erweitern, damit es das Plug-in erkennt und Ihnen erlaubt, es zu verwenden, wenn Sie sich im Spiel befinden. Stellen Sie sich diese Hauptklasse als die Tür vor, durch die Bukkit eintreten kann, um das Plugin sowohl zu laden als auch zu manipulieren. Die meisten geben der Hauptklasse ihres Plugins denselben Namen wie dem Plugin selbst, was es einfacher macht, sich beim Codieren auf die Hauptklasse zu beziehen.
Der folgende Beispielcode aus dem RIP-Tutorial bietet ein Beispiel einer Hauptklasse für ein Plugin namens „MyPlugin:“
package com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName};
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
//Called when the plugin is enabled
getLogger().info("onEnable has been invoked!");
}
@Override
public void onDisable() {
//Called when the plugin is disabled
getLogger().info("onDisable has been invoked!");
}
}
Zugriff auf Ihr Plugin von einer anderen Klasse
Möglicherweise möchten Sie über eine andere Klasse als die Hauptklasse, die Sie dafür erstellen, auf Ihr Plugin zugreifen, was für den Zugriff auf mehrere Plugins in einem einzigen Minecraft-Spiel hilfreich sein kann.
Dazu müssen Sie zunächst eine Instanz der Hauptklasse speichern, die Sie mit Bukkit erstellt haben, damit andere Klassen darauf zugreifen können. Auch hier stammt der folgende Beispielcode aus dem RIP-Tutorial und verwendet den Klassennamen „MyPlugin“:
public class MyPlugin extends JavaPlugin {
private static MyPlugin instance; //Effectively final variable containing your plugin's instance
public MyPlugin(){
if(MyPlugin.instance! = null) { //Unnecessary check but ensures your plugin is only initialized once.
throw new Error("Plugin already initialized!");
}
MyPlugin.instance = this; //A plugin's constructor should only be called once
}
public static MyPlugin getInstance(){ //Get's your plugin's instance
return instance;
}
//your other code...
}
Sobald Sie die Instanz eingerichtet haben, können Sie mit dem Befehl „getInstance()“ auf Ihre Hauptklasse (erstellt über Bukkit) zugreifen. Hier ist ein Beispiel dafür mit der Hauptklasse „MyPlugin“ von RIP Tutorial:
public class MyOtherClass {
public void doSomethingWithMainClass(){
MyPlugin.getInstance().getLogger().info("We just used MyPlugin");
}
}
Schritt 3 – Erstellen Sie Ihre plugin.yml-Datei
Eine plugin.yml-Datei enthält wichtige Informationen über Ihr Plugin, was bedeutet, dass sie als grundlegende Konfigurationsdatei des Plugins dient. Ohne diese Datei verfügt Bukkit nicht über die Informationen, die es benötigt, um Ihr Plugin in Minecraft zu laden, was dazu führt, dass das Plugin nicht geladen werden kann und das Spiel wahrscheinlich abstürzt.
Diese Datei sollte die folgenden Details enthalten:
- Name – Dies ist der Name, den Sie Ihrem Plug-in gegeben haben (zB „MyPlugin“ von RIP Tutorial), und er wird in Log-Meldungen und Ihrer Plug-in-Liste angezeigt.
- Version – Verwenden Sie dieses Feld, um den Versionsverlauf des Plugins anzugeben, beginnend mit 1.0.0 und aufsteigend, wenn Sie das Plugin ändern oder bearbeiten.
- Main – Enthält den Namen der Hauptklasse des Plugins, die „JavaPlugin“ erweitert und es Bukkit ermöglicht, das Plugin einzugeben. Im RIP-Tutorial-Beispiel wäre dieser Name „Paket com.example.myplugin“, was Sie oben im Hauptklassencode sehen können.
- Beschreibung – Eine grundlegende Beschreibung dessen, was Ihr Plugin tut.
- Autor – Sie können einen einzelnen Autor oder mehrere Autoren haben, wobei letztere wie folgt mit eckigen Klammern und Kommas gekennzeichnet werden – [Autor1, Autor2, Autor3].
- Mitwirkende – Sie verwenden diesen Abschnitt, um alle Personen zu notieren, die zu Ihrem Plugin beigetragen haben, wobei die Formatierung dieselbe ist wie im Abschnitt „Autoren“.
- Website – Wenn Sie eine Website zum Plug-in haben oder Personen mit der Seite des Plug-ins oder dem GitHub-Repository verlinken möchten, können Sie die URL hier eingeben.
- API-Version – Geben Sie hier die Version der Bukkit-API ein, die Sie verwenden. Wenn Sie keine API-Version eingeben, geht Minecraft davon aus, dass ein Legacy-Plugin geladen wird. Das Plugin funktioniert möglicherweise immer noch, obwohl beim Laden eine Warnung in Ihrer Konsole angezeigt wird, dass es sich um eine Legacy-Version handelt.
Das Folgende ist ein Beispiel für eine plugin.yml-Datei, die auf den Namenskonventionen basiert, die im in diesem Artikel verwendeten RIP-Tutorial-Code verwendet werden:
name: MyPlugin
version: 1.0.0
main: package com.example.myplugin
description: A test plugin for Minecraft
author: RIP Tutorial
website: https://riptutorial.com/bukkit
api-version: 1.17
Eignet sich Bukkit für den Zugriff auf und die Nutzung von NMS?
Damit haben Sie eine Bukkit-Abhängigkeit erstellt, eine Hauptklasse erstellt, die als Bukkits Tür zum Plugin dient, und eine plugin.yml-Datei, die Bukkit verwenden kann, um zu sehen, was das Plugin tut. Möglicherweise möchten Sie dies jedoch nicht tun, da Bukkit so veraltet ist, dass Sie eine sehr alte Version von Minecraft ausführen müssen, um es effektiv zu verwenden. Die meisten sind bereits zu Sprigot übergegangen, das das meiste von Bukkit widerspiegelt und gleichzeitig eine bessere Leistung bietet.
Wenn Sie immer noch Bukkit für den Zugriff auf Plugins verwenden möchten, warum haben Sie es dann moderneren APIs vorgezogen? Welche Arten von Plugins verwenden Sie, um Ihr Minecraft-Erlebnis zu verbessern? Erzählen Sie uns alles darüber in den Kommentaren unten.
Schreibe einen Kommentar