Das offizielle Minecraft Wiki twittert hier: Wiki-Twitter   Noch keinen Server gefunden? Es gibt einen Wiki-Server
Die Wiki-Daten sind auf einen neuen Host umgezogen, aktuell gibt es noch Probleme mit den Bildern.

Modifikation/Mods erstellen

Aus Minecraft Wiki
Wechseln zu: Navigation, Suche
Baustelle.svg
Diese Seite wird gerade von SiegerSpieler neu erstellt oder grundlegend überarbeitet.
Fragen und Vorschläge bitte in die Diskussion. Fortschritt: Heart.svgHeart.svgHeart.svgHeart.svgHeart.svgEmpty Heart.svgEmpty Heart.svgEmpty Heart.svgEmpty Heart.svgEmpty Heart.svg
Achtung.svg Diese Seite wird vom Minecraft Wiki nicht auf inhaltliche Richtigkeit geprüft.

Das relativ einfache Modifizieren von Minecraft ist einer der Gründe für die Beliebheit von Mods in der Community. Modifikationen verändern dabei den Programmcode und Funktionen, im Gegensatz zu Ressourcenpaketen, die nur das Aussehen anpassen. Für das Erstellen und die Funktion von Mods sind verschiedene Werkzeuge notwendig.

Werkzeuge[Bearbeiten | Quelltext bearbeiten]

Die Werkzeuge unterscheiden sich funktionell in der Anbindung an das Hauptprogramm und der eigentlichen Programmierung:

  • Programmschnittstellen (APIs) standardisieren die Einbindung von Mods, um eine Kompatiblität zwischen dem Spiel und der Modifikation herzustellen. Dazu stellen sie programmspezifische Funktionen (im Fall von Minecraft Java) zur Verfügung. Zu dieser Gruppe werden meist auch die Loader gezählt, die zur Verwaltung von Mods und deren Kompatibilität dienen.
    • ModLoader gehört zu den ältesten APIs. (Unterstützt Minecraft nur bis Version 1.6.2)
    • Minecraft Forge ist eine neuere Version vom ModLoader und fügt hunderte von zusätzlichen Klassen und Auswahlmöglichkeiten ein.
  • Vereinfachte Mod-Generatoren (wie Mod Maker (veraltet) und MCreator) werden von Mod-Erstellern verwendet, die nicht direkt den Java-Code schreiben und kompilieren möchten. Generell sind diese aber nicht zu empfehlen, da sie eine schlechte Code-Qualität erzeugen.
  • Bei der codenahen Programmierung helfen Dekompilierungs-Tools. Solche Programme werden nicht von Mojang veröffentlicht und müssen von den Entwicklern an neue Versionen angepasst werden.
    • Das Minecraft Coder Pack (kurz: MCP) ist das Standard-Tool der Community zum Lesen oder Ändern des Minecraft-Codes.
    • Allzweck-Java-Dekompilierer (wie JAD oder fernflower) helfen, wenn MCP keine Funktionen zur Verfügung stellt (z.B. beim Modden von Snapshots).
  • Ein IDE (Integrated Development Environment) ist sinnvoll für jede nicht-triviale Programmierung. MCP erzeugt automatisch Projekt-Dateien für die Verwendung in Eclipse, einer beliebten Java-IDE.
  • 3D-Modellierungswerkzeuge (wie z.B. Techne oder Cubik) helfen beim Erstellen von Blockmodellen oder Objekten (Entity).
  • Beim obligatorischen Debuggen helfen neben dem Crash-Report im Launcher auch Protokoll-Analyse-Tools bei Multiplayer-Mods.
  • Eine Liste mit APIs findet man hier: APIs und Loader

Minecraft Forge API[Bearbeiten | Quelltext bearbeiten]

Die Minecraft Forge API ist ein sehr nützliches Werkzeug zum Erstellen von Mods, das Konflikte zwischen dem Mod und Minecraft verhindert. Es enthält neben vielen anderen Optionen auch einfachere Methoden zum Erstellen von Mods, zum Beispiel fügt die Methode addSmelting() ein Schmelz-Rezept in das Spiel ein. Neben den offiziellen Tutorials gibt es auch viele Videoanleitungen. Es kann auf der offiziellen Internetseite heruntergeladen werden.

Java[Bearbeiten | Quelltext bearbeiten]

Minecraft wurde in Java programmiert, einer plattformübergreifenden, objektorientierten Programmiersprache. Für weitergehende Modifikationen ist die Kenntnis der grundlegenden Begriffe notwendig. Eine kurze Beschreibung der Grundbegriffe findet sich hier:

Forge installieren[Bearbeiten | Quelltext bearbeiten]

Installation[Bearbeiten | Quelltext bearbeiten]

Lade als erstes die Installationsdatei von der Forge-Website herunter. Dann starte die Datei und gehe dem Tutorial nach.

Lade dir immer die Version herunter, für die auch die Mods verfügbar sind.

Mods installieren[Bearbeiten | Quelltext bearbeiten]

Um eine Modifikation zu installieren, verschiebt man diese einfach in den mods-Ordner, welcher nach der Installation von Forge unter %appdata%/.minecraft/ entstanden sein sollte.
Zu diesen Ordner kommt man indem man die Adresse ( %appdata%/.minecraft/ ) in den Explorer als Pfad eingibt oder ⊞ Windows + R drückt und den Pfad in das erscheinende Dialogfenster eingibt.

Minecraft mit Forge starten[Bearbeiten | Quelltext bearbeiten]

Im Launcher wurde nun ein Profil mit dem Namen Forge angelegt und ausgewählt. Wenn man nun Minecraft startet, werden alle installierten Mods geladen.
Wenn du ein Profil auf Forge ändern möchtest, gehe auf Edit Profil, und Wähle die entsprechende Version (Sie befindet sich meistens ganz unten in der Liste der Versionen).

Mods programmieren mit Forge[Bearbeiten | Quelltext bearbeiten]

Die Anleitung ist zwar individuell, kann aber an einigen Stellen bei deiner Programmierumgebung abweichen. Dies bezieht sich allerdings nur auf den Aufbau, da alle Programmierumgebungen ähnlich aufgebaut sind.

Vorbereiten[Bearbeiten | Quelltext bearbeiten]

  1. Es ist sinnvoll für den Mod einen eigenen Ordner zu erstellen, da Forge mehrere Datein erstellt.
  2. Hier oder hier hast du eine Auswahl von Versionen für Minecraft Forge.
  3. Im Beitrag downloaden wir nun den Quellcode (engl. Sourcecode), welcher bei Source steht. (Ich nehme als Beispiel Forge für die Minecraftversion 1.8)
  4. Sobald wir ihn direkt oder über AdLink heruntergeladen haben, kopieren wir die .zip Datei in den Ordner den wir für den Mod ausgesucht haben und entpacken diese.
  5. Jetzt müssen wir nur noch den Quellcode decoden und entpacken. Dazu müssen wir nur in den Ordner gehen und ⇧ Shift + Rechtsklick machen und im Menü Eingabeaufforderung hier öffnen auswählen.
  6. Wenn du Eclipse benutzt schreibe (Infos im README):
    gradlew setupDecompWorkspace 
    gradlew eclipse
  7. Wenn nicht schreibe
    gradlew setupDecompWorkspace idea
  8. Es kann je nach Computerleistung bis zu 30 Minuten oder länger dauern.
  9. Nun kannst du Eclipse starten.
  10. Forge hat automatisch einen Eclipse-Workspace erstellt. Das ist der eclipse-Ordner in dem Ordner, den du für die Mod erstellt hast.
  11. Dort sollte ein Beispiel-Mod bereits vorhanden sein.
  12. Solltest du dich nicht gut mit Java auskennen wäre es sinnvoll sich mit den Begriffen 'Package' und 'Klasse' für ein paar Minuten auseinander zusetzen.

Grundaufbau[Bearbeiten | Quelltext bearbeiten]

Das Grundgerüst ist immer gleich aufgebaut und enthält drei Hauptmethoden, wo drin alles bei Minecraft Forge registriert wird.
Eine Methode wird vor der Initialisierung von Minecraft aufgerufen wird, eine dabei und eine danach.
Im Beispiel-Mod wird allerdings nur die init Methode deklariert.
Um alles zu verstehen löschen wir erstmal den Beispielmod, indem wir rechts auf das Package (Nicht auf das Java-Projekt!) einen Rechtsklick ausführen und auf Löschen klicken.
Nun können wir unseren eigenen Mod erstellen.

Um die Grundstruktur zu erstellen brauchen wir eine eigene Klasse. Damit das Projekt immer übersichtlich bleibt erstellen wir uns ein Package, dazu müssen wir nur Rechtsklick auf das Projekt machen und dann auf New -> Package. Dieses können wir nennen wie wir wollen. Normalerweise heißt es aber:

  • Deine Internetseite/Server rückwärts und Name (Beispiel: Du hast einen Server (MeinServer.com), dann kann der Packagename sein: com.mainserver.deinname)
  • Nur dein Name
  • Modname


Nun erstellen wir uns unsere Hauptklasse, diese nennen wir so wie unser Mod heißen soll (Das kann man später auch noch ändern). Diese sollte automatisch so aussehen:

package com.mainserver;

public class TutorialMod {

}


Damit Forge erkennt das wir einen Mod programmieren müssen wir über dem public class [...] noch
@Mod(modid = "MOD_ID")
hinzufügen, dabei steht "MOD_ID" für die von dir gewählte ModID (Diese ist meistens der Modname in kleinen Buchstaben). Da wir diese ModID später noch brauchen können ist es sinnvoll sie in der Klasse selber zu speichern (Tipp: Nutze public static final um von allen Klassen aus die Variable zu sehen, aber nicht zu bearbeiten); die Klasse sieht dann so aus:
package com.mainserver;


@Mod(modid = TutorialMod.MOD_ID)
public class TutorialMod {

	public static final String MOD_ID = "tutorialmod";
}


Als Abschluss der Vorbereitung müssen nur noch drei Event-Methoden erstellt werden in denen später alles passiert, da dies immer das gleiche ist reicht es oft den Code einfach zu kopieren.
Aber als Überischt:

Eventname Erklärung
FMLPreInitializationEvent Das FMLPreInitializationEvent wird immer aufgerufen bevor Minecraft startet, dort wird vieles registriert.
FMLInitializationEvent Das FMLInitializationEvent wird aufgerufen wenn Minecraft lädt.
FMLPostInitializationEvent Beim FMLPostInitializationEvent werden Weltgeneratoren und ähnliches geladen.

Eine ganze Klasse könnte so aussehen:

package com.mainserver;

import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = TutorialMod.MOD_ID)
public class TutorialMod {
	
	public static final String MOD_ID = "tutorialmod";
	
	@EventHandler
	public void preInit(FMLPreInitializationEvent event){
		
	}
	
	@EventHandler
	public void init(FMLInitializationEvent event){
		
	}
	
	@EventHandler
	public void postInit(FMLPostInitializationEvent event){
		
	}
}

Crafting-Rezepte hinzufügen[Bearbeiten | Quelltext bearbeiten]

Minecraft unterscheidet zwischen zwei verschiedenen Crafting-Arten. Dem "Shaperecipe" und dem "Shapelessrecipe". Das Shapelessrecipe hat im Gegensatz zu dem Shaperecipe keinen Aufbau, man muss also nur die Materialien irgendwie in die Slots packen.
Die CraftingRezepte werden in der Klasse GameRegistry registriert. Die Methoden sind sehr einfach gestaltet:
Für ein Shapelessrecipe:

GameRegistry.addShapelessRecipe(ItemStack output, Object... params);
Parameter Erklärung
output output ist der Itemstack der am Ende gecraftet wird
params params sind eine unbestimmte Anzahl von Itemstacks, welche benötigt werden

Hier 2 Beispiele für das Shapelessrecipe:

GameRegistry.addShapelessRecipe(new ItemStack(Blocks.STONE), Blocks.DIRT);

Man kann nun aus einem Dirtblock einen Steinblock craften. Das Blocks.DIRT wird hier als Object gehändelt.

GameRegistry.addShapelessRecipe(new ItemStack(Items.STONE), new Object[] {
    new ItemStack(Blocks.DIRT),
    new ItemStack(Items.APPLE)
});

Aus DIRT und APPLE kann man nun einen STONE craften. Bei mehreren Ausgangsstoffen muss man ein Object erzeugen, das die Materialien enthält.

Item beim Craften beschädigen[Bearbeiten | Quelltext bearbeiten]

Hierbei manipuliert man die Daten eines ItemStacks. Zuerst muss man allerdings dieses ItemStack erstellen. Hier heißt es stack.

ItemStack stack = new ItemStack(item, amount);

oder

ItemStack stack = new ItemStack(block, amount);

Jetzt kann man es manipulieren, zu beachten ist allerdings, dass die Zahl nie größer sein darf als die maximale Haltbarkeit.

stack.setItemDamage(amount);

Also beim Craften an Beispiel eines Eisenschwertes:

ItemStack stack = new ItemStack(Items.IRON_SWORD, 1);
stack.setItemDamage(240);
GameRegistry.addShapelessRecipe(stack, Items.IRON_SWORD);

Unendlich einsetzbare Items[Bearbeiten | Quelltext bearbeiten]

Ofen-Rezepte hinzufügen[Bearbeiten | Quelltext bearbeiten]

Block hinzufügen[Bearbeiten | Quelltext bearbeiten]

Um einen Block zu erstellen brauchen wir 4 Dateien.

- 3 Json-Dateien
- 1 Textur

Item hinzufügen[Bearbeiten | Quelltext bearbeiten]

Um ein Item zu erstellen, braucht man 3 Dateien und das InitializationEvent.

  • 1 Json-Datei
  • 1 Textur
  • 1 Java-Datei

Zum Erstellen eines Items muss man die Textur im src/main/resources/assets/tutorialmod/textures/items-Verzeichnis einfügen. Daraufhin wird im Verzeichnis src/main/resource/assets/tutorialmod/models/item eine leere Datei erstellt, die so heißen könnte (in unserem Beispiel ein Rubin): ruby.json. Die Dateiendung .json ist Pflicht! In der .json Datei werden nun neue Parameter hineingeschrieben (wie in unserem Beispiel)

{ "parent": "builtin/generated",
  "textures": {
   "layer0": "tutorialmod:items/ruby"
   
   },
   "display": {
   "thirdperson": {
   "rotation": [ -90, 0, 0 ],
   "translation": [ 0, 1, -3 ],
   "scale": [ 0.55, 0.55, 0.55 ]
   
   },
   "firstperson": {
   "rotation": [ 0, -135, 25 ],
   "translation": [ 0, 4, 2 ],
   "scale": [ 1.7, 1.7, 1.7 ]
   }
  }
} 

"parent" sorgt dafür, das diese Textur überhaupt entsteht.

"textures" ist die Textur des Items (NICHT DIE DATEIENDUNG MITSCHREIBEN!).

"display" zeigt euch je nach Parameter an, wie das Item aussieht, wenn es in der Hand ist.

Anschließend wird im InitializationEvent eine GameRegistry erstellt. Hier ein Beispiel:

GameRegistry.registerItem(ruby, "ruby");

Dies registriert das Item und weist eine ID zu.

Und darunter ein weiterer Befehl:

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(ruby, 0, new ModelResourceLocation("tutorialmod:ruby", "inventory"));

Dies bewirkt, dass für den Gegenstand ruby ein Inventarmodell aus der Datei assets/tutorialmod/models/item/ruby.json geladen wird. Wenn man für Metadata 1 ein anderes Modell hinzufügen möchte, kann man so den zweiten Parameter hinter dem Gegenstand verändern:

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(ruby, 1, new ModelResourceLocation("tutorialmod:ruby_cracked", "inventory"));

Sprache[Bearbeiten | Quelltext bearbeiten]

Um Namen zu definieren, müssen wir wie in einem Ressourcenpaket eine Sprachdatei erstellen. In Minecraft kannst du die Beschriftung der Gegenstände, der Tabs des Kreativmenüs oder andere ablesen (zum Beispiel: tile.testblock.name). Dann kannst du in die Datei title.testblock.name=Testblock schreiben. Nach dem Gleichheitszeichen kannst du alles schreiben, was angezeigt werden soll, dies können ganze Sätze aber auch ein Leerzeichen sein.

Um Farbcodes zu benutzen, kannst du im Text, nach dem Gleichheitszeichen mit diesem Code: §X, Farben hinzufügen (hierbei muss X durch eine Zahl bzw. einen Buchstaben ersetzt werden).

Biome erstellen[Bearbeiten | Quelltext bearbeiten]

Kreatur hinzufügen[Bearbeiten | Quelltext bearbeiten]

Rüstungen erstellen[Bearbeiten | Quelltext bearbeiten]

Tipps[Bearbeiten | Quelltext bearbeiten]

  • Eine der simpelsten Arten von Mods sind hinzugefügte und veränderte Blöcke / Gegenstände. Man kopiert eine Klasse und bearbeitet sie. Wenn ein Block / Gegenstand sich nur minimal von einem bestehenden unterscheiden soll ist es einfacher, der bereits vorhandenen Klasse eine Unterklasse hinzuzufügen, in der nur ein paar Feinheiten geändert werden. Je nach gewünschtem Verhalten des neuen Blocks / Gegenstands kann es notwendig sein, auch andere Klassen zu bearbeiten.

Fehler mit Intel[Bearbeiten | Quelltext bearbeiten]

Bei Integrierten Grafikkarten von Intel kann eine "LWJGLException" auftreten. Versuche in diesem Fall deine Grafikkartentreiber zu aktualisieren, sollte der Fehler weiterhin auftreten wird die Grafikkarte nicht mehr unterstützt.

Natürlich kann man jedes Mal die Mod exportieren und mit dem "normalen" Minecraft starten, dies kann allerdings bei älteren Rechnern, wo dieser Fehler eher auftritt, sehr lange dauern da Minecraft immer komplett neu gestartet werden muss.

Häufige Fehler[Bearbeiten | Quelltext bearbeiten]

JAVA_HOME ist falsch gesetzt

  • Beachte, dass du JAVA_HOME in deinen System-Umgebungsvariablen (Rechtsklick auf Computer -> Eigenschaften -> Erweiterte Systemeinstellungen -> Umgebungsvariablen) auf dein JDK einstellen musst. Das machst du, indem du den JDK-Pfad kopierst und dann JAVA_HOME auf diesen stellst. Falls es keine Variable mit dem Namen JAVA_HOME gibt, dann erstelle eine.

Minecraft startet gar nicht / blinkt kurz auf.

  • Mojang unterstützt ab der Version 1.7.2 nur noch OpenGL 3 oder höher, update die Treiber falls möglich.

Die Namen aus der Sprachdatei werden nicht übernommen.

  • Beachte, dass du die richtige Sprache in Minecraft ausgewählt hast.

Forge zeigt einen Fehler beim Laden von Minecraft an, bevor die Mod initialisiert wird.

  • Das ist normal, der Fehler steht nur dafür, dass sich Minecraft nicht mit Mojang verbinden kann.

Mods erstellen ohne MCP[Bearbeiten | Quelltext bearbeiten]

Manchmal ist es nützlich, Mods ohne MCP zu erstellen. MCP ist z.B. nicht für Entwicklerversionen verfügbar. Um Mods ohne MCP zu erstellen, muss man entweder alten Code dekompilieren oder Java Bytecode modifizieren. Dekompilieren ist einfach, funktioniert aber nur bei simplen Klassen (Classes).