minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht...

36
minecraft #minecraft

Transcript of minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht...

Page 1: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

minecraft

#minecraft

Page 2: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 3: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 4: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 5: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

Ü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

Page 6: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 7: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 8: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 9: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 10: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 11: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 12: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 13: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 14: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 15: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 16: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 17: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 18: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 19: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 20: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 21: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 22: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 23: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 24: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 25: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 26: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 27: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 28: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 29: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 30: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 31: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 32: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 33: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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

Page 34: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

Modding mit Schmiede online lesen: https://riptutorial.com/de/minecraft/topic/9956/modding-mit-schmiede

https://riptutorial.com/de/home 30

Page 35: minecraft - riptutorial.com · ähnliches, die Ihnen mitteilt, welcher Block oder Artikel nicht ordnungsgemäß geladen wurde. Nach einem Dutzend oder so Zeilen beginnend mit at...

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