minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht...
Transcript of minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht...
minecraft
#minecraft
Inhaltsverzeichnis
Über 1
Kapitel 1: Erste Schritte mit Minecraft 2
Bemerkungen 2
Versionen 2
Examples 2
Minecraft installieren 2
Kapitel 2: Erstellen eines Basisblocks mit Forge 4
Einführung 4
Bemerkungen 4
Examples 4
Die Blockklasse 4
Das Blockmodell JSON 5
Registrierung sperren 6
Kapitel 3: Erstellen eines Basiselements mit Schmiede 8
Einführung 8
Bemerkungen 8
Examples 8
Artikelklasse 8
Artikelmodell 9
Artikelregistrierung 10
Kapitel 4: Erstes Spigot-Plugin erstellen 11
Examples 11
Erstes Plugin in Eclipse 11
Voraussetzung 11
Kapitel 5: Event-Hörer in Bukkit 14
Examples 14
Ereignis-Listener erstellen 14
EventHandler-Parameter 14
Benutzerdefinierte Ereignisse erstellen 15
Ihr individuelles Ereignis anrufen 15
Anpassen eines benutzerdefinierten Ereignisses 16
So machen Sie Ihr CustomEvent kündbar 16
Abmelden von Ereignissen oder Zuhörern 17
Registrierung eines bestimmten Ereignisses aufheben 17
Alle Veranstaltungen abmelden 17
Kapitel 6: Event-Hörer in Forge 19
Examples 19
Erstellen eines Ereignis-Listeners in Forge 19
Kapitel 7: Installieren eines Spigot-Servers 21
Examples 21
BuildTools 21
Was ist es? 21
Voraussetzungen 21
Windows 21
Git 21
Java 21
Linux 21
Mac 21
BuildTools ausführen 22
Spigot-Installation 23
Windows 23
Linux 23
Mac 23
Kapitel 8: Minecraft Mods schreiben 25
Einführung 25
Examples 25
Grundlegende Bukkit-Plugins 25
Grundlegende Forge Mods 25
Kapitel 9: Modding mit Schmiede 26
Syntax 26
Bemerkungen 26
Examples 26
Implementierungsmuster für Initialisierungs-Proxies 26
Hinzufügen von benutzerdefinierten Sounds zu Ihrem MOD 27
Befehl senden 29
Kapitel 10: Plugin-Befehle 31
Examples 31
Hallo Befehl 31
MainClass.java 31
Plugin.yml 31
Credits 32
Über
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: minecraft
It is an unofficial and free minecraft ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official minecraft.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/de/home 1
Kapitel 1: Erste Schritte mit Minecraft
Bemerkungen
Dieser Abschnitt bietet einen Überblick über das, was minecraft ist und warum ein Entwickler es verwenden möchte.
Es sollte auch alle großen Themen in Minecraft erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für minecraft neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.
Versionen
Ausführung Veröffentlichungsdatum
1.0.0 2011-11-18
1.2.5 2012-04-04
1.4.7 2013-01-09
1.6.4 2013-09-19
1.7.10 2014-06-26
1.8.9 2015-12-09
1.9.4 2016-05-10
1.10.2 2016-06-23
1.11 2016-11-14
Examples
Minecraft installieren
Kaufe Minecraft hier1.
Erstellen Sie einen Mojang-Account oder melden Sie sich an, wenn Sie bereits einen haben.2.
Wenn Sie ein neues Konto erstellt haben, überprüfen Sie Ihre E-Mail.3.
Geben Sie Ihre Zahlungsdetails ein. Stellen Sie sicher, dass Sie sich auf minecraft.net befinden und sich auf einer sicheren Verbindung befinden (HTTPS).
4.
https://riptutorial.com/de/home 2
Laden Sie Minecraft herunter und starten Sie es5.
Öffne den Minecraft Launcher6.
Melden Sie sich mit Ihrer E-Mail-Adresse an, wenn Sie Minecraft nach November 2012 gekauft oder Ihren Benutzernamen zu einem Mojang-Konto migriert haben.
Melden Sie sich mit Ihrem Benutzername , wenn Sie ein älteres Minecraft - Konto haben, und noch nicht migriert auf das neue Konto - Format. Sie können von der Mojang- Kontoseite zu einem Mojang-Konto migrieren .
7.
Klicken Sie auf "Play", wenn Sie mit der neuesten Version spielen möchten.8.
Das Spiel genießen.9.
Erste Schritte mit Minecraft online lesen: https://riptutorial.com/de/minecraft/topic/7952/erste-schritte-mit-minecraft
https://riptutorial.com/de/home 3
Kapitel 2: Erstellen eines Basisblocks mit Forge
Einführung
Das Erstellen eines einfachen dekorativen Blocks mit Forge ist eine der ersten Aufgaben, die ein aufstrebender Modder erlernen muss. Wie man das macht, hat sich in den verschiedenen Versionen von Minecraft geändert und befindet sich wahrscheinlich nach 1.7.10 in einem "mittelschweren" Schwierigkeitsgrad.
Bemerkungen
Wenn etwas schief geht und Ihr benutzerdefinierter Block (entweder beim Platzieren oder Halten) eine fehlende Textur (schwarz / violett) oder ein Modell (Standardwürfel, der beim Halten zu groß ist) enthält, überprüfen Sie das Protokoll. Probleme dieser Art werden fast immer im Protokoll angezeigt, vorausgesetzt, Sie haben die Dinge richtig registriert.
Das erste, was angezeigt wird, ist die Zeile "Exception loading model for variant..." oder ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at... wird beginnt eine andere Linie Caused by...
Diese "Caused By" -Zeile ist die wichtige, sie sagt Ihnen, welche Datei nicht richtig geladen wurde und kann einer von mehreren Fehlern sein, wie zum Beispiel:
Fehlerhaftes JSON (Ihre JSON-Datei ist ungültig und hat einen Tippfehler)•Datei nicht gefunden (die Datei, die Minecraft sucht, ist nicht richtig benannt oder an der richtigen Stelle)
•
Fehlende Variantenausnahme (Ihr Blockstate-JSON ist unvollständig)•
Sie können sogar mehr als einen Fehler für einen einzelnen Fehler erhalten! Wenn Sie nicht wissen, welcher Block das Problem ist, kommentieren Sie jeden Block und jedes Element, von dem Sie wissen, dass es funktioniert, und reduzieren Sie die Fehlerliste auf den betreffenden Block (oder die Blöcke). Möglicherweise müssen Sie dies mehrmals tun.
Darüber hinaus zeigt eine Mischtextur als eine einfache Liste alle fehlenden Ressourcen für eine bestimmte Domäne (Mod-ID).
Examples
Die Blockklasse
Zuerst brauchen wir eine Klasse, die den Block darstellt
https://riptutorial.com/de/home 4
public class CustomBlock extends Block { public CustomBlock () { super(Material.ROCK); setHardness(1.0f); setHarvestLevel("pickaxe", 0); setResistance(1.0f); setCreativeTab(CreativeTabs.DECORATIONS); this.setSoundType(SoundType.STONE); } }
Auch hier gibt es mehrere Modifikationen: Material (das bestimmte Eigenschaften bestimmt, z. B. das Drücken durch Kolben und ob es von Hand zerbrochen werden kann), die Härte (wie lange es dauert zu brechen), das Erntenniveau (geeignetes Werkzeug und Werkzeug) Material: in diesem Fall hölzerne Spitzhacke), Widerstand (vs. Explosionen), Registerkarte, die im Kreativmenü angezeigt wird, und welchen Schritt es hat.
Hier müssen alle Funktionsblöcke installiert werden, aber jetzt erstellen wir einen Block, der einfach gut aussieht, also sind wir fertig.
Das Blockmodell JSON
Als Nächstes müssen wir Minecraft mitteilen, wie unser Block aussehen soll.
{ "parent": "block/cube_all", "textures": { "all": "example:blocks/decorative" } }
Das ist so ziemlich alles, was benötigt wird, um zu funktionieren, sobald der Block registriert ist. Das einzig Wichtige ist , dass der Dateiname der Registrierung Namen übereinstimmen verwendet , um den Block zu registrieren und in Kleinbuchstaben sein sollte (1.11+ Dateinamen klein geschrieben sein müssen, um vor , dass es nur zwischen Groß- und Klein).
Nennen Sie das Modell JSON - Datei my_block.json (Anpassung der Registry Namen wir es gehst später geben) und speichern Sie es in src\main\resources\assets\example\models\block\ (wobei example ist die Mod - ID in der angegebenen @Mod Annotation Ihrer Hauptmod-Klasse).
Das Blockmodell verwendet hier ein übergeordnetes Element von block / cube_all. Dies bedeutet, dass die einzeln gelieferte Textur auf allen Flächen verwendet wird. Es gibt auch andere Standardmodelle wie:
Block / Würfel (alle sechs Gesichter unabhängig voneinander zugewiesen)•block / cube_bottom_top (Ober- und Unterseite unabhängig von den Seiten)•Block / orientierbar (Richtblende, zB Ofen)•Block / Kreuz (Blumen, hohes Gras)•Block / Ernte (Weizen, Karotten)•
https://riptutorial.com/de/home 5
Beachten Sie, dass jedes Modell die verwendeten Texturen anhand einer Namens-ID angibt (z. B. "all" oder "top" ). Sehen Sie sich das übergeordnete Modell an, um zu ermitteln, wie diese Namen aussehen, wenn Sie unsicher sind. Falsch angegebene Texturen können dazu führen, dass Texturprobleme nicht fehlerfrei gemeldet werden .
Es ist auch möglich, ein vollständig benutzerdefiniertes Modell oder ein benutzerdefiniertes übergeordnetes Modell zu erstellen. Aber jetzt reicht das aus.
Vergessen Sie nicht, eine Textur zu erstellen, nennen Sie sie decorative.png (wie in der JSON-Datei angegeben) und speichern Sie sie unter src\main\resources\assets\example\textures\blocks\
Registrierung sperren
Das Registrieren von Blöcken erfolgt über Ihre Hauptmod-Klasse oder eine ModBlocks-Klassenmethode, die von der Hauptmod-Klasse während preInit aufgerufen wird.
Block myBlock = new CustomBlock(); string registryname = "my_block"; block.setRegistryName(registryname); block.setUnlocalizedName(block.getRegistryName().toString()); GameRegistry.register(block);
Es gibt einen wichtigen Grund, block.setUnlocalizedName(block.getRegistryName().toString()); auch! Es stellt sicher, dass Ihre nicht lokalisierten Namen (und Elemente) die Mod-ID enthalten, um Sprachdateikonflikte zwischen Mods zu vermeiden.
Sie möchten auch eine Artikelversion, damit diese auch in Ihrem Inventar vorhanden sein kann? Das wird separat nach 1.7.10 erstellt und so gemacht:
ItemBlock ib = new ItemBlock(block); ib.setRegistryName(registryname); GameRegistry.register(ib);
Beachten Sie, dass wir den Registrierungsnamen von ItemBlock auf dieselbe Zeichenfolge wie unseren Block setzen. So können Sie Forge- und Matchblöcke mit ihrem Gegenstück ItemBlock und umgekehrt abgleichen.
Aber warte, es gibt noch mehr!
Ihr Block hat möglicherweise ein Elementformular , aber dieses Element hat noch kein Modell oder keine Textur! Modelle werden automatisch für Blöcke registriert, nicht jedoch für Elemente. Dieser kann nur vom Client Proxy aus aufgerufen werden und deckt keine Blöcke mit Varianten ab (z. B. Wolle oder Blätter).
ModelLoader.setCustomModelResourceLocation( ib , 0, new ModelResourceLocation(ib.getRegistryName(),"normal"));
Im Allgemeinen benötigen Sie kein Item Model JSON, da Forge und Vanilla stattdessen auf das Modell des Blocks zurückgreifen. Dies ist jedoch nicht immer der Fall. Wenn Sie feststellen, dass
https://riptutorial.com/de/home 6
Sie einen Artikelmodell-JSON benötigen, überordnen Sie ihn einfach Ihrem Block-JSON und speichern Sie ihn unter src\main\resources\assets\example\models\item\ mit demselben Dateinamen wie der Registrierungsname des Blocks.
{ "parent": "example:block/my_block" }
Erstellen eines Basisblocks mit Forge online lesen: https://riptutorial.com/de/minecraft/topic/9748/erstellen-eines-basisblocks-mit-forge
https://riptutorial.com/de/home 7
Kapitel 3: Erstellen eines Basiselements mit Schmiede
Einführung
Das Erstellen eines einfachen Gegenstands mit Forge ist eine der ersten Aufgaben, die ein aufstrebender Modder erlernen muss. Wie man das macht, hat sich in den verschiedenen Versionen von Minecraft geändert und befindet sich wahrscheinlich nach 1.7.10 in einem "mittelschweren" Schwierigkeitsgrad.
Bemerkungen
Wenn etwas schief geht und Ihr benutzerdefiniertes Element eine fehlende Textur (schwarz / violett) oder ein Modell (Standardwürfel ist zu groß beim Halten) aufweist, überprüfen Sie das Protokoll. Probleme dieser Art werden fast immer im Protokoll angezeigt, vorausgesetzt, Sie haben die Dinge richtig registriert.
Das erste, was angezeigt wird, ist die Zeile "Exception loading model for variant..." oder ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at... wird beginnt eine andere Linie Caused by...
Diese "Caused By" -Zeile ist die wichtige, sie sagt Ihnen, welche Datei nicht richtig geladen wurde und kann einer von mehreren Fehlern sein, wie zum Beispiel:
Fehlerhaftes JSON (Ihre JSON-Datei ist ungültig und hat einen Tippfehler)•Datei nicht gefunden (die Datei, die Minecraft sucht, ist nicht richtig benannt oder an der richtigen Stelle)
•
Fehlende Variantenausnahme (Ihr Blockstate-JSON ist unvollständig)•
Sie können sogar mehr als einen Fehler für einen einzelnen Fehler erhalten! Wenn Sie nicht wissen, welches Element das Problem ist, kommentieren Sie jeden Block und jedes Element, von dem Sie wissen, dass es funktioniert, und reduzieren Sie die Fehlerliste auf den betreffenden Block (oder die Blöcke). Möglicherweise müssen Sie dies mehrmals tun.
Darüber hinaus zeigt eine Mischtextur als eine einfache Liste alle fehlenden Ressourcen für eine bestimmte Domäne (Mod-ID).
Examples
Artikelklasse
Dieser Teil hat die Versionen von Minecraft nicht viel verändert, obwohl die Methodensignaturen und die Klassenhierarchie einige Mutationen aufwiesen. Ein grundlegendes Element (eines, das
https://riptutorial.com/de/home 8
keine Funktionalität hat, wie z. B. ein Stock oder ein Barren: das ist richtig, beide sind Nichtselbstartikel!)
public class CustomItem extends Item { public CustomItem () { super(); this.setMaxDamage(0); this.setCreativeTab(CreativeTabs.MISC); } }
Im Gegensatz zu Blöcken ist an dieser Stelle nicht viel Raum für Anpassungen. Alles, was wir tun können, ist zu ändern, ob der Gegenstand Schaden nehmen kann oder nicht (die Werkzeuge verwenden dies) und in welchem Creative-Tab er vorhanden sein wird.
Dies ist jedoch alles, was benötigt wird, um den Gegenstand zu halten, zu transportieren, fallen zu lassen, zu basteln, zu schmelzen und anderweitig zu verwenden. Einige Gegenstände in Minecraft (z. B. Stöcke) haben nicht einmal eine eindeutige Klasse und verwenden einfach den new Item() . Wir könnten das hier tun, aber jeder Artikel mit zusätzlicher Funktionalität wird eine Klasse benötigen.
Artikelmodell
Wie bei Blöcken benötigen Artikel auch Modelle.
{ "parent": "item/generated", "textures": { "layer0": "example:items/basic" } }
Das ist so ziemlich alles, was benötigt wird, um zu funktionieren, sobald der Artikel registriert ist. Wichtig ist nur, dass der Dateiname mit dem Registrierungsnamen übereinstimmt, der für die Registrierung des Blocks verwendet wird, und er muss in Kleinbuchstaben angegeben werden (1.11-Dateinamen müssen Kleinbuchstaben sein, davor ist nur die Groß- und Kleinschreibung zu beachten).
Beachten Sie, dass "layer0" die einzige Textur ist, die benötigt wird, und es ist sehr unwahrscheinlich, dass überhaupt eine andere Textur angegeben wird (obwohl einige Elemente wie Tränke und Lederrüstung eine "layer1" haben). Alle Namen werden im Gegensatz zu Blöcken durch item/builtin (das interne oberste übergeordnete Modell für Elemente) definiert.
my_item.json die Modell-JSON-Datei my_item.json (entsprechend dem Registrierungsnamen, den wir später my_item.json ), und speichern Sie sie unter src\main\resources\assets\example\models\item\ (wobei in diesem example die Mod-ID steht @Mod Annotation Ihrer Hauptmod-Klasse).
Erstellen Sie zusätzlich eine Textur für Ihren Artikel, benennen Sie ihn basic.png und speichern Sie
https://riptutorial.com/de/home 9
ihn unter src\main\resources\assets\example\textures\items\
Das Elementmodell verwendet hier ein übergeordnetes Element / Element, das heißt, die einzeln bereitgestellte Textur wird verwendet (wie bei den meisten Nicht-Block-Elementen) und wird in der Standardausrichtung in der Hand des Spielers gehalten. Es gibt auch einen Artikel / Handheld, der verschiedene Anzeigeausrichtungen (für Werkzeuge) festlegt. Elemente können auch ein eigenes "display" -Attribut bereitstellen, das die Werte des übergeordneten Elements überschreibt, aber in 99,9% der Verwendungszwecke nicht erforderlich ist.
Artikelregistrierung
Das Registrieren von Elementen erfolgt über Ihre Hauptmod-Klasse oder eine ModItems-Klassenmethode, die von der Hauptmod-Klasse während preInit aufgerufen wird.
Item item = new CustomItem(); string registryname = "my_item"; item.setRegistryName(registryname); item.setUnlocalizedName(item.getRegistryName().toString()); GameRegistry.register(item);
Es gibt einen wichtigen Grund, item.setUnlocalizedName(item.getRegistryName().toString()); auch! Dadurch wird sichergestellt, dass der nicht lokalisierte Name des Elements die Mod-ID enthält, um Sprachdateikonflikte zwischen Mods zu vermeiden.
Jetzt benötigt das Element auch ein Modell, und an diesem Punkt wurde es nach 1.7.10 schwierig, da Minecraft nur der Name der zu ladenden Textur mitteilte und im Konstruktor des Elements angegeben werden konnte.
final ModelResourceLocation fullModelLocation = new ModelResourceLocation(item.getRegistryName().toString(), "inventory"); ModelBakery.registerItemVariants(item, fullModelLocation); ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() { public ModelResourceLocation getModelLocation(ItemStack stack) { return fullModelLocation; } });
Beachten Sie, dass dieser Abschnitt muss nur clientseitige befinden (dh der Client - Proxy) , da viele der referenzierten Klassen existieren nicht auf dem dedizierten Server.
Registrieren Artikel mit Varianten zB Schösslinge, hat eine andere Art und Weise durchgeführt werden, unter Verwendung von ModelLoader.setCustomModelResourceLocation(item, metadata, resourceLocation) , obwohl es uns eine Blockstate Datei verwenden kann , um unsere Varianten angeben (die die Alternative bevorzugten viel ist). Unser Artikel verwendet keine Varianten, also sind wir fertig.
Erstellen eines Basiselements mit Schmiede online lesen: https://riptutorial.com/de/minecraft/topic/9850/erstellen-eines-basiselements-mit-schmiede
https://riptutorial.com/de/home 10
Kapitel 4: Erstes Spigot-Plugin erstellen
Examples
Erstes Plugin in Eclipse
Voraussetzung
In diesem Handbuch wird davon ausgegangen, dass Sie BuildTools bereits verwendet und den Spigot-Server mindestens einmal ausgeführt haben. Es wird auch davon ausgegangen, dass Sie über die JAR-Datei Spigot-API verfügen, die wir verwenden werden.
1) Starten Sie Eclipse . Sie können den Arbeitsbereich auf Wunsch ändern.
2) Erstellen Sie ein neues Projekt
Stellen Sie den Projektnamen auf beliebig. Hier haben wir MyFirstPlugin gewählt.1. Weiter klicken.2. Wählen Sie auf der Registerkarte Bibliotheken die Option Externe JARs hinzufügen aus. Wählen Sie im Dialogfeld JAR-Auswahl die Spigot-Api-Shaded-JAR-Datei aus, die Sie in Spigot / Spigot-API / target / im Ordner BuildTools finden.
3.
Wählen Sie Fertig stellen4.
3) Fügen Sie ein neues Paket hinzu
Klicken Sie mit der rechten Maustaste auf src und klicken Sie auf Neu> Paket . Sie können eine beliebige Namespace-Konvention verwenden, die Sie möchten, einfach konsistent sein. (zB: com.google.android).
4) Erstellen Sie eine neue Klasse
Klicken Sie mit der rechten Maustaste auf das neu erstellte Paket und wählen Sie Neu> Klasse .
1.
Gib ihm einen Namen. oft derselbe Name wie das Projekt. Im Editor wird die neu erstellte Java-Klasse geöffnet. Der Code sollte ungefähr so aussehen:
package yourpackage; public class MyFirstPlugin { }
2.
5) Ändern Sie die Klassendeklaration
Ihre Klasse muss sich von JavaPlugin erstrecken. Eclipse erzeugt einen Fehler, da es nicht weiß, was JavaPlugin ist. Wenn Sie die Spigot-API erfolgreich importiert haben, können Sie JavaPlugin importieren, indem Sie die Importanweisung hinzufügen. Sie müssen diese Zeile
1.
https://riptutorial.com/de/home 11
nicht manuell eingeben. Klicken Sie einfach auf den Fehler und wählen Sie die entsprechende Aktion aus. Ihr Code sollte jetzt so aussehen:
package yourpackage; import org.bukkit.plugin.java.JavaPlugin; public class MyFirstPlugin extends JavaPlugin { }
6) Implementieren Sie die erforderlichen Methoden
Die JavaPlugin-Klasse verfügt über einige abstrakte Methoden, die von Ihrem Plugin implementiert werden müssen. Fügen Sie daher die Funktionen onEnable und onDisable hinzu, die ausgelöst werden, wenn das Plugin in der Konsole deaktiviert oder aktiviert ist. Sie können diese vorerst leer lassen. Sie müssen auch @Override über der Methode schreiben.
Hinweis: Sie müssen keinen getLogger hinzufügen, wenn Ihr Plugin aktiviert oder deaktiviert ist. Bukkit übernimmt dies bereits für Sie.
package com.meeku.tutorialPlugin; import org.bukkit.plugin.java.JavaPlugin; public class MyFirstPlugin extends JavaPlugin { // Fired when plugin is enabled @Override public void onEnable() { } // Fired when plugin is disabled @Override public void onDisable() { } }
7) Erstellen Sie die plugin.yml-Datei
Klicken Sie mit der rechten Maustaste auf das Projekt und erstellen Sie eine Datei Neu> Datei . Nennen Sie es plugin.yml . Fügen Sie Folgendes ein:
name: MyFirstPlugin main: yourpackage.MyFirstPlugin version: 1.0 commands:
8) Exportieren
Da es keine Fehler gibt, können wir dieses Projekt als JAR exportieren. Klicken Sie mit der rechten Maustaste auf den Projektnamen und wählen Sie Exportieren. Wählen Sie im nachfolgenden Dialogfeld die JAR-Datei aus. Weiter klicken. Sie können den Klassenpfad und das Projekt include deaktivieren und das Exportziel in Ihren Plugins-Ordner ändern
9) Laufen
https://riptutorial.com/de/home 12
Starten Sie den Server und Sie sollten sehen, dass Ihr Plugin aktiviert wurde.
Erstes Spigot-Plugin erstellen online lesen: https://riptutorial.com/de/minecraft/topic/9766/erstes-spigot-plugin-erstellen
https://riptutorial.com/de/home 13
Kapitel 5: Event-Hörer in Bukkit
Examples
Ereignis-Listener erstellen
Um Ihre Methoden zu registrieren, muss die Klasse, die die EventHandler enthält, die Listener-Schnittstelle implementieren.
import org.bukkit.event.Listener; public final class ListenerClass implements Listener { }
Sie müssen den Ereignis-Listener registrieren, indem Sie der onEnable-Methode in der Klasse, die JavaPlugin erweitert, den folgenden Aufruf hinzufügen:
getServer().getPluginManager().registerEvents(new ListenerClass(), this);
Um ein bestimmtes Ereignis in Ihrer Listener-Klasse anzuhören, müssen Sie eine Methode mit der @EventHandler-Annotation für die Methode erstellen. Der Ereignistyp wird von Type im einzigen Argument der Methode angegeben. Die Methode kann beliebig benannt werden.
import org.bukkit.event.Listener; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerLoginEvent; public class ListenerClass implements Listener { @EventHandler public void onPlayerLogin(PlayerLoginEvent event) { event.getPlayer().sendMessage("Welcome to the server!"); } }
EventHandler-Parameter
Die Annotation org.bukkit.event.EventHandler akzeptiert einige Parameter.
Priorität - Zeigt die Priorität Ihres Listeners an. Es gibt sechs verschiedene Prioritäten in der Reihenfolge der Ausführung: LOWEST, LOW, NORMAL [Standard], HIGH, HIGHEST, MONITOR. Diese Konstanten beziehen sich auf die Aufzählung org.bukkit.event.EventPriority .
Wenn Sie das Ergebnis eines Ereignisses ändern möchten, wählen Sie sehr sorgfältig zwischen NIEDRIGSTEN und HÖCHSTEN. Vorgeschlagene verallgemeinerte Schutz-Plugins für LOWEST, spezifischere Plugins für NORMAL und Überschreiben von Plugins für HIGH. Wenn Sie handeln möchten, wenn ein Ereignis auftritt, das Ergebnis jedoch nicht ändern, verwenden Sie MONITOR.
Hinweis: Die Priorität MONITOR sollte nur zum Lesen verwendet werden. Diese Priorität ist
https://riptutorial.com/de/home 14
nützlich, um Plugins zu protokollieren, um die Ergebnisse eines Ereignisses anzuzeigen, und das Ändern von Werten kann diese Plug-In-Typen beeinträchtigen.
ignoreCancelled - Ein boolescher Wert, der angibt, ob der Listener ausgelöst werden soll oder nicht, wenn das Ereignis abgebrochen wurde, bevor der Listener das Ereignis verarbeitet. Standardmäßig falsch.
import org.bukkit.event.Listener; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerLoginEvent; public final class LoginListener implements Listener { @EventHandler public void normalLogin(PlayerLoginEvent event) { // Some code here } @EventHandler(priority = EventPriority.HIGH) public void highLogin(PlayerLoginEvent event) { // Some code here } }
Benutzerdefinierte Ereignisse erstellen
Manchmal müssen Sie ein eigenes Ereignis erstellen, das andere Plugins anhören können (unter anderem auch Vault), und dies sogar abbrechen. Bukkits Event-API ermöglicht dies. Sie müssen lediglich eine neue Klasse erstellen, Event , die Handler und die Attribute hinzufügen, die Ihr Ereignis benötigt (wie Player oder Nachricht).
import org.bukkit.event.Event; import org.bukkit.event.HandlerList; public final class CustomEvent extends Event { private static final HandlerList handlers = new HandlerList(); private String message; public CustomEvent(String example) { message = example; } public String getMessage() { return message; } public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } }
https://riptutorial.com/de/home 15
Ihr individuelles Ereignis anrufen
Sie haben die Kontrolle über das Erstellen und Aufrufen von Ereignissen, bei denen Sie es selbst aufrufen. Hier ist ein Beispiel
// Create the event here CustomEvent event = new CustomEvent("Sample Message"); // Call the event Bukkit.getServer().getPluginManager().callEvent(event); Bukkit.getServer().broadcastMessage(event.getMessage());
Denken Sie daran: Sie haben die Kontrolle über Ihre Ereignisse. Wenn Sie es nicht anrufen und danach handeln, passiert es nicht!
Anpassen eines benutzerdefinierten Ereignisses
Das Anhören eines benutzerdefinierten Ereignisses entspricht dem Abhören eines normalen Ereignisses.
import org.bukkit.event.Listener; import org.bukkit.event.EventHandler; public final class CustomListener implements Listener { @EventHandler public void onCustomEvent(CustomEvent event) { // Some code here } }
So machen Sie Ihr CustomEvent kündbar
Wenn Sie Ihre Veranstaltung jemals boolean cancelled machen möchten, fügen Sie einfach implements Cancellable , boolean cancelled implements Cancellable und einen Getter und Setter hinzu:
import org.bukkit.event.Event; import org.bukkit.event.HandlerList; import org.bukkit.event.Cancellable; public final class CustomEvent extends Event implements Cancellable { private static final HandlerList handlers = new HandlerList(); private String message; private boolean cancelled; public CustomEvent(String example) {
https://riptutorial.com/de/home 16
message = example; } public String getMessage() { return message; } public boolean isCancelled() { return cancelled; } public void setCancelled(boolean cancel) { cancelled = cancel; } public HandlerList getHandlers() { return handlers; } public static HandlerList getHandlerList() { return handlers; } }
Anschließend prüfen Sie, ob ein Plugin das benutzerdefinierte Ereignis abgebrochen hat.
// Create the event here CustomEvent event = new CustomEvent("Sample Message"); // Call the event Bukkit.getServer().getPluginManager().callEvent(event); // Check if the event is not cancelled if (!event.isCancelled()) { Bukkit.getServer().broadcastMessage(event.getMessage()); }
Abmelden von Ereignissen oder Zuhörern
Sie können einzelne Ereignisse, ganze Listener-Klassen oder alle von Ihrem Plugin oder sogar von anderen Plugins registrierten Ereignisse abmelden!
Registrierung eines bestimmten Ereignisses aufheben
Jede Ereignisklasse verfügt über die statische Methode getHandlerList (). Rufen Sie diese auf. Anschließend können Sie die .unregister () -Methode verwenden.
PlayerInteractEvent.getHandlerList().unregister(plugin); // this will unregister all PlayerInteractEvent instances from the plugin // you can also specify a listener class instead of plugin.
Jetzt wissen Sie, warum Sie die getHandlerList () in Ihren benutzerdefinierten Ereignissen benötigen.
https://riptutorial.com/de/home 17
Alle Veranstaltungen abmelden
Mit der HandlerList-Klasse und ihrer statischen unregisterAll () - Methode können Sie Ereignisse von Listener-Klassen oder Plugins problemlos abmelden.
HandlerList.unregisterAll(plugin); // this will unregister all events from the specified plugin // you can also specify a listener class instead of plugin.
Event-Hörer in Bukkit online lesen: https://riptutorial.com/de/minecraft/topic/9739/event-horer-in-bukkit
https://riptutorial.com/de/home 18
Kapitel 6: Event-Hörer in Forge
Examples
Erstellen eines Ereignis-Listeners in Forge
Das Erstellen eines Ereignis-Listeners in Forge ähnelt sehr dem Erstellen von Bukket.
Das Erstellen der Listener-Klasse erfordert viel weniger. Es gibt keine Schnittstelle zum Implementieren oder andere Importe.
public class ListenerClass { } //perfectly valid event listener class
Für die Registrierung muss die Instanz an den Forge-Ereignisbus übergeben werden:
MinecraftForge.EVENT_BUS.register(new ListenerClass());
Je nach Veranstaltung gibt es mehrere verschiedene Veranstaltungsbusse. Beispielsweise werden ORE_GEN_BUS auf dem ORE_GEN_BUS . Sie können diese Registrierung von überall aus aufrufen. Es wird jedoch empfohlen, sie entweder von Ihrer Hauptmod-Klasse (mit der @Mod-Annotation) oder von einer Proxy-Klasse (einige Ereignisse sind nur clientseitig) aufzurufen, und ein clientseitiger Ereignishandler muss nur aufgerufen werden vom Client-Proxy aus, sonst stürzt der dedizierte Server ab!)
Um ein bestimmtes Ereignis in Ihrer Listener-Klasse abhören zu können, müssen Sie eine Methode mit der @SubscribeEvent-Annotation für die Methode erstellen. Der Ereignistyp wird von Type im einzigen Argument der Methode angegeben. Die Methode kann beliebig benannt werden.
Beachten Sie, dass einige Ereignistypen Untertypen sind (auf die von ihrem einschließenden Typ verwiesen werden sollte, z. B. CropGrowEvent.Pre ) und dass einige Ereignisse möglicherweise eine Phase haben, da sie an mehreren TickEvent ausgelöst werden (z. B. alle TickEvent die beide zuvor ausgelöst wurden.) und nach allem Vanille-Code). Als Modder sollten Sie immer nach diesen beiden Aspekten suchen und Ihren Code nur ausführen, wenn er benötigt wird.
public class ListenerClass { @SubscribeEvent public void onPlayerLogin(PlayerLoggedInEvent event) { event.player.addChatMessage(new TextComponentString("Welcome to the server!")); } }
Da Forge-Mods direkt mit Minecraft-Interna interagieren, wird dem Modder viel Kraft verliehen, um Auswirkungen zu haben. Der Code muss jedoch ebenfalls dem Vanilla-Framework folgen: Es gibt keine Abkürzungen für das Senden von Nachrichten, aus denen die Nachricht erstellt werden muss ITextComponents manuell, aber die Möglichkeit, diese Objekte zu bearbeiten (z. B. Farbformatierung anwenden), ist wesentlich einfacher. Zum Beispiel:
https://riptutorial.com/de/home 19
TextComponentString txt = new TextComponentString( TextFormatting.LIGHT_PURPLE + "Welcome to the server!"); txt.appendSibling(new TextComponentString( TextFormatting.AQUA + "Server has been online for " + x + " days")); event.player.addChatMessage(txt);
Was ergibt folgendes Ergebnis:
Event-Hörer in Forge online lesen: https://riptutorial.com/de/minecraft/topic/9744/event-horer-in-forge
https://riptutorial.com/de/home 20
Kapitel 7: Installieren eines Spigot-Servers
Examples
BuildTools
Was ist es?
BuildTools.jar ist eine Lösung zum Erstellen von Bukkit, CraftBukkit, Spigot und der Spigot-API. Das alles geschieht auf Ihrem Computer! Ein paar vorausgesetzte Programme sind erforderlich, aber die folgenden Anweisungen führen Sie durch alles, was Sie tun müssen.
Voraussetzungen
Für die Verwendung von BuildTools sind zwei Anwendungen erforderlich: Git und Java.
Windows
Git
Damit BuildTools unter Windows ausgeführt werden kann, müssen Sie Git installieren. Für Windows wird es über git-scm verteilt, das hier heruntergeladen werden kann . Installiere es wo du willst, es wird git bash zur Verfügung stellen, die zum Ausführen der BuildTools-JAR verwendet wird. Schlagen Sie einfach weiter, wenn Sie das Installationsprogramm ausführen.
Java
Laden Sie JRE 8 hier herunter und installieren Sie es. Schlagen Sie einfach weiter, wenn Sie das Installationsprogramm ausführen.
Linux
Sowohl git und Java als auch util-Befehle können mit einem einzigen Befehl über Ihren Paketmanager installiert werden.
Debian / Ubuntu: sudo apt-get install git openjdk-7-jre-headless tar
CentOS / RHEL: sudo dnf install git java-1.7.0-openjdk-devel tar
Bogen: pacman -S jdk8-openjdk git
https://riptutorial.com/de/home 21
Mac
Git kann heruntergeladen werden von: http://sourceforge.net/projects/git-osx-installer/files/
Möglicherweise muss Java von der verteilten Apple-Version aktualisiert werden, und selbst wenn es zuvor aktualisiert wurde, muss es möglicherweise für die Verwendung der Shell verknüpft werden. Bitte befolgen Sie die hier aufgeführten Schritte: https://gist.github.com/johan/10590467
BuildTools ausführen
Laden Sie BuildTools.jar von https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar herunter.
1.
Öffnen Sie Ihr Terminal, wenn Sie mit Linux arbeiten, oder git bash unter Windows.
Git-bash ist auf dem Desktop oder im Startmenü unter dem Namen "git bash" zu finden. Sie können es auch öffnen, indem Sie mit der rechten Maustaste auf etwas klicken, da es jetzt ein Element in Ihrem Kontextmenü ist.
1.
2.
Navigieren Sie zu dem Ort, an dem Sie BuildTools.jar heruntergeladen haben, oder verwenden Sie die Befehlszeile, um die JAR-Datei in Ihr aktuelles Verzeichnis herunterzuladen.
Unter Windows können Sie entweder den Befehl cd verwenden, um Verzeichnisse zu ändern, oder Sie können mit der rechten Maustaste auf den leeren Bereich des Ordners klicken, in dem sich BuildTools.jar befindet (klicken Sie NICHT auf BuildTools.jar), und klicken Sie auf "git bash". Dadurch wird es geöffnet in Ihrem aktuellen Verzeichnis.
1.
3.
Führen Sie BuildTools.jar vom Terminal aus (doppelklicken Sie nicht auf BuildTools.jar), indem Sie folgende Schritte ausführen:
Führen Sie unter Linux git config --global --unset core.autocrlf aus, und führen Sie dann java -jar BuildTools.jar in bash oder einer anderen geeigneten Shell aus.
1.
Führen Sie unter Windows den folgenden Befehl innerhalb des geöffneten git bash-Fensters aus: java -jar BuildTools.jar Bitte beachten Sie, dass Sie über BuildTools # 35 oder höher verfügen, ältere Versionen funktionieren nicht.
2.
Führen Sie auf dem Mac die folgenden Befehle aus und exportieren Sie MAVEN_OPTS = "- Xmx2G" java -Xmx2G -jar BuildTools.jar
3.
4.
Warten Sie, wie es Ihre Gläser baut. In wenigen Minuten sollten Sie frisch zusammengestellte Gläser haben!
5.
Sie finden CraftBukkit und Spigot in demselben Verzeichnis, in dem Sie BuildTools.jar ausgeführt haben (craftbukkit-1.10.jar und spigot-1.10.jar). Sie finden die Spigot-API unter \
6.
https://riptutorial.com/de/home 22
Spigot \ Spigot-API \ target \ (spigot-api-1.10-R0.1-SNAPSHOT.jar).
Spigot-Installation
Windows
Holen Sie sich spigot.jar mit BuildTools oder von hier .1.
Fügen Sie den folgenden Text in ein Textdokument ein. Speichern Sie es als start.bat im selben Verzeichnis wie spigot.jar: Sie müssen Ihr Jar in spigot.jar umbenennen oder die Datei in der bat-Datei so ändern, dass sie auf die richtige Datei verweist. nb: Windows (standardmäßig) blendet die Erweiterung .jar der Datei aus.
@echo off java -Xmx1G -jar spigot.jar pause
2.
Doppelklicken Sie auf die Batchdatei.3.
Linux
Holen Sie sich spigot.jar mit BuildTools oder von hier .1.
Erstellen Sie ein neues Startskript (start.sh) im Verzeichnis, um die JAR: #! / Bin / sh zu starten
java -Xmx1G -jar spigot.jar
2.
Öffnen Sie Ihr Terminal und führen Sie im Verzeichnis Folgendes aus: chmod + x start.sh3.
Führen Sie Ihr Startskript aus:
./start.sh
4.
Mac
Holen Sie sich spigot.jar mit BuildTools oder von hier .1.
Erstellen Sie ein neues Startskript (start.command), um JAR zu starten: #! / Bin / sh
cd "$( dirname "$0" )" java -Xmx1G -jar spigot.jar
2.
Öffne das Terminal und tippe hinein: (Nicht Enter drücken!)3.
https://riptutorial.com/de/home 23
chmod a+x
Ziehen Sie Ihre Startskriptdatei in das Terminalfenster. (Stellen Sie sicher, dass zwischen chmod a + x und Ihrem Startskript ein Leerzeichen steht!)
4.
Doppelklicken Sie auf Ihr Startskript.5.
Installieren eines Spigot-Servers online lesen: https://riptutorial.com/de/minecraft/topic/9702/installieren-eines-spigot-servers
https://riptutorial.com/de/home 24
Kapitel 8: Minecraft Mods schreiben
Einführung
Verstehen, wie man eigene Mods für Minecraft schreibt.
Als erstes sollten Sie wissen, dass es hauptsächlich zwei Plattformen gibt, auf denen Mods aufbauen. Schmiede und Bukkit.
Jede Plattform hat ihre Vor- und Nachteile und ist im Allgemeinen nicht miteinander kompatibel. Forge-Mods spielen die gesamte Bandbreite und sind im Allgemeinen spielorientiert. Bukkit-Mods sind vollständig serverbasiert und generell auf Admin-Tools ausgerichtet. Bukkit-Mods werden Plugins genannt.
Examples
Grundlegende Bukkit-Plugins
Einen Hello-Befehl schreiben•Einen Ereignis-Listener schreiben•
Grundlegende Forge Mods
Einen Basisblock erstellen•Erstellen eines Basiselements•Einen Hello-Befehl schreiben•Einen Event-Handler schreiben•Erste Schritte mit den Funktionen [1.8+]•
Minecraft Mods schreiben online lesen: https://riptutorial.com/de/minecraft/topic/9740/minecraft-mods-schreiben
https://riptutorial.com/de/home 25
Kapitel 9: Modding mit Schmiede
Syntax
MODID = steht für den Bezeichner der MOD•MODPath = steht für den vollständigen qualifizierten Verzeichnispfad zu Ihrem Mod-Ordner•
Bemerkungen
Dieses Thema sollte die am häufigsten verwendeten Muster / Beispiele und gut getesteten Code zum Modifizieren der Minecraft-Anwendung mit Schmiede enthalten. Vielleicht kann dies eines Tages die offiziellen Unterlagen ersetzen.
Examples
Implementierungsmuster für Initialisierungs-Proxies
Dieses Beispiel zeigt Ihnen, wie Sie Proxy-Klassen für Ihre Minecraft Mod Application implementieren, die zum Initialisieren Ihres Mod verwendet werden.
Zunächst müssen Sie die Basis-Klasse CommonProxy.java implementieren, die die 3 hauptsächlich verwendete Methode enthält:
public class CommonProxy { public void preInit(FMLPreInitializationEvent e) {} public void init(FMLInitializationEvent e) {} public void postInit(FMLPostInitializationEvent e) {} }
Normalerweise enthält Ihr Mod zwei verschiedene Pakete für Client- und Servercode. Sie benötigen also in jedem Paket eine untergeordnete Klasse von CommonProxy.java wie:
public class ClientProxy extends CommonProxy { @Override public void preInit(FMLPreInitializationEvent e) { super.preInit(e); } @Override public void init(FMLInitializationEvent e) { super.init(e); } @Override public void postInit(FMLPostInitializationEvent e) { super.postInit(e); } }
https://riptutorial.com/de/home 26
und für den Server:
public class ServerProxy extends CommonProxy { @Override public void preInit(FMLPreInitializationEvent e) { super.preInit(e); } @Override public void init(FMLInitializationEvent e) { super.init(e); } @Override public void postInit(FMLPostInitializationEvent e) { super.postInit(e); } }
Nachdem Sie diese Klassen erstellt haben, können Sie sie um Methoden erweitern, die nur auf Client- oder Serverseite ausgeführt werden müssen. Sie können sie jedoch auch an beide anhängen, wenn Sie die Methoden in der Klasse "base" aufrufen.
Zuletzt müssen Sie festlegen, welcher Proxy zur Laufzeit genommen wird. Sie müssen Ihre Hauptmod-Klasse mit der Annotation @Mod , indem Sie:
private static final String CLIENTPROXY = "com.yourpackage.client.ClientProxy"; private static final String SERVERPROXY = "com.yourpackage.client.ServerProxy"; @SidedProxy(clientSide = CLIENTPROXY, serverSide = SERVERPROXY) public static CommonProxy PROXY;
Dadurch kann Forge erkennen, welche Klasse zur Laufzeit genommen werden soll. In den Initialisierungsmethoden Ihres Mods können Sie jetzt diese statische PROXY-Eigenschaft verwenden.
@EventHandler public void init(FMLInitializationEvent event) { PROXY.init(event); } @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { PROXY.preInit(event); } @EventHandler public void postInit(FMLPostInitializationEvent event) { PROXY.postInit(event); }
Hinzufügen von benutzerdefinierten Sounds zu Ihrem MOD
Dieses Beispiel zeigt Ihnen, wie Sie Ihrem MOD neue Sounds hinzufügen und diese abspielen.
https://riptutorial.com/de/home 27
Zunächst benötigen Sie eine *.ogg mit dem Format *.ogg . Jedes andere Format ist in der Minecraft-Anwendung nicht zulässig und wird abgelehnt.
Die Sounddatei hat den Namen: sound1.ogg
Legen Sie die Sounddatei unter folgendem Pfad ab:
/YourPath/src/main/resources/assets/MODID/sounds/sound1.ogg
Ersetzen Sie 'MODID' durch den Bezeichner, den Sie für Ihr MOD definiert haben
Als Nächstes müssen Sie eine sounds.json in UTF-8-Kodierung (Standard) erstellen, die den Namen, die Ressource, ... und andere Dinge für Ihren benutzerdefinierten Sound definiert. Diese Datei sieht folgendermaßen aus:
{ "sound1": { "category" : "player", "sounds": [{ "name": "MODID:sound1", "stream": false } ] }, "sound2": { "category" : "ambient", "sounds": [{ "name": "MODID:subfolder/sound2", "stream": true } ] } }
Als Erklärung für diese Geräusche.
Es gibt zwei definierte Sounds, da ich ein Beispiel hinzugefügt habe, in dem Sie untersuchen können, wie Sie Multiplikations-Sounds hinzufügen. sound1 hat die Kategorie player der zweite ist von der Kategorie ambient sound1 bedeutet, dass die Lautstärke des Sounds von den Lautstärkeeinstellungen beeinflusst wird, die der Benutzer für Player- / Ambient-Sounds festgelegt hat. name ist die wichtigste Eigenschaft, da er auf die Ressource des Sounds verweist. Die MODID ist die Kennung Ihres MOD und ist obligatorisch, da die Anwendung in den Ressourcen Ihres Mod nach der Datei sucht. Andernfalls wird in den Minecraft-Ressourcen gesucht und nichts gefunden. Die stream Eigenschaft bedeutet, dass der Sound vom Dateisystem gestreamt wird. Dies wird nur für Sounds benötigt, die länger als 4 Sekunden dauern.
Ihre benutzerdefinierte sounds.json Datei muss sich unter dem folgenden Pfad befinden:
/YourPath/src/main/resources/assets/MODID/sounds.json
Jetzt können Sie die Sounds in die Registry des Spiels laden. Sie müssen also eine Klasse erstellen, die SoundEvent s initialisiert und die Registrierung SoundEvent .
https://riptutorial.com/de/home 28
public class SoundRegistrator { public static final SoundEvent SOUND_1; public static final SoundEvent SOUND_2; static { SOUND_1 = addSoundsToRegistry("sound1"); SOUND_2 = addSoundsToRegistry("sound2"); } private static SoundEvent addSoundsToRegistry(String soundId) { ResourceLocation shotSoundLocation = new ResourceLocation("MODID", soundId); SoundEvent soundEvent = new SoundEvent(shotSoundLocation); soundEvent.setRegistryName(shotSoundLocation); return soundEvent; } }
Danach müssen Sie einen SoundRegisterListener erstellen:
public class SoundRegisterListener { @SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true) public void registerSoundEvents(RegistryEvent.Register<SoundEvent> event) { event.getRegistry().registerAll(SoundRegistrator.SOUND_1,SoundRegistrator.SOUND_2); } }
und registriere es bei MinecraftForge.EVENT_BUS wie:
MinecraftForge.EVENT_BUS.register(new SoundRegisterListener());
Endlich kannst du deine Sounds spielen:
void playSound(SoundEvent sound) { try { if (Minecraft.getMinecraft().world.isRemote) { EntityPlayerSP player = Minecraft.getMinecraft().player; Minecraft.getMinecraft().world.playSound(player, player.getPosition(), sound, SoundCategory.PLAYERS, RandomGenerator.getNextRandomVolumeLoud(), 1.0F); } } catch (Exception ex) { //Error happened } }
Befehl senden
Dieses Beispiel zeigt Ihnen verschiedene Möglichkeiten, Befehle für Minecraft aus Code auszuführen:
EntityPlayerSP player = Minecraft.getMinecraft().player; player.sendChatMessage("/Command here");
So senden Sie einen Befehl in SinglePlayer
https://riptutorial.com/de/home 29
Modding mit Schmiede online lesen: https://riptutorial.com/de/minecraft/topic/9956/modding-mit-schmiede
https://riptutorial.com/de/home 30
Kapitel 10: Plugin-Befehle
Examples
Hallo Befehl
Im folgenden Code können Sie sehen, wie Sie Ihrem Plugin einen Befehl hinzufügen.
MainClass.java
package yourpackage; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.plugin.java.JavaPlugin; public class MainClass extends JavaPlugin { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("hello")) { sender.sendMessage("Hey!"); } return false; } }
Plugin.yml
name: HelloCommand main: yourpackage.MainClass version: 1.0 commands: hello: description: Hello
Plugin-Befehle online lesen: https://riptutorial.com/de/minecraft/topic/9708/plugin-befehle
https://riptutorial.com/de/home 31
Credits
S. No
Kapitel Contributors
1Erste Schritte mit Minecraft
Community, Martin W, SoniEx2
2Erstellen eines Basisblocks mit Forge
Draco18s
3Erstellen eines Basiselements mit Schmiede
Draco18s
4Erstes Spigot-Plugin erstellen
Martin W
5 Event-Hörer in Bukkit Draco18s, Martin W
6 Event-Hörer in Forge Draco18s, Martin W
7Installieren eines Spigot-Servers
Martin W
8Minecraft Mods schreiben
Draco18s, Martin W
9Modding mit Schmiede
Code.IT
10 Plugin-Befehle Martin W
https://riptutorial.com/de/home 32