Über das Schreiben von Mods für Minecraft

 

Ich habe die letze Zeit leider sehr viel zu tun mit meinem Abitur, deswegen kommen im Moment weniger Einträge. Trotzdem habe ich es zwischen Lernen und Prüfungen geschafft, mich etwas in die Minecraft-Modding Thematik einzuarbeiten.

Das Erstellen eines Minecraft Mods ist, wenn man die Programmiersprache Java kann, eigentlich nicht übermäßig kompliziert. Das Problem ist, dass man sich erstmal in den Code einarbeiten muss. Ich suchte also nach einer Möglichkeit selber einen Mod zu schreiben und stieß auf MCP, das Mod Coder Pack. Damit ist es mit ein paar Terminal oder CMD Befehlen möglich, Minecraft zu dekompilieren.

Dekompilieren: Damit ist gemeint, das fertige Programm zurück zu lesbarem Programmcode zu übersetzen. Das ist leider keine so einfache Sache und es kann auch nicht der komplette Programmcode zurück geholt werden. Zum Beispiel haben die Variablen nur noch Bezeichnungen wie par1, par2, usw. und die Methoden so etwas wie: function_123871823().

Das Problem ist nun, herauszufinden, was diese Funktion tun und wofür diese Variablen sind. Nun, das übernimmt MCP für uns. Es stellt einen Großteil der Methodennamen und Variablenbezeichnungen wieder her. Der Nachteil an einem „Großteil“ ist meistens, dass ein „Kleinteil“ zurückbleibt. Und Abgesehen davon, dass kleine Kinder diese bekanntlich schnell verschlucken können, ist es nicht ganz einfach, selber denn Sinn einer solchen unbeschrifteten, undokumentierten Methode oder Variable herauszufinden.

Der erste Mod, den ich geschrieben habe war der „Coal Block Mod“. Dafür habe ich die Klassen des Spieles modifiziert und habe selber den Block, sowie das Craftingrezept hinzugefügt. Mittlerweile weiß ich, dass diese Technik große Nachteile mit sich bringt. Dadurch, dass ich eine Klasse verändere, wird der Mod zwangsläufig inkompatibel, sobald in einer neueren Minecraft Version etwas an der dieser Klasse geändert wird.

Ein Beispiel: Die Klasse XYZ verfügt über die Methode abc(). Ich füge nun in meinem Mod eine weitere Methode hinzu: def(). Eine neue Minecraft Version wird eingeführt: Die Methode abc() wird von Mojang umbenannt und heißt nun xyz(). Wenn nun jemand meinen Mod installiert, wird diese Klasse XYZ mit der Methode xyz() von meiner modifizierten Klasse XYZ mit der Methode abc() und def() überschrieben. Somit verfügt die Klasse nicht mehr über die Methode xyz(), die von anderen Klassen benötigt wird. Das resultiert in einem Crash des Spiels und hat zur Folge, dass der Mod vom Nutzer deinstalliert wird. Genau das gleiche Problem entsteht übrigens, wenn zwei Mods die gleiche Klasse modifizieren müssen.

Intelligente Menschen haben sich etwas ausgedacht, um diese Komplikationen zu umgehen: Modloader. Es gibt zwei populäre Modloader. Einmal den Modloader mit dem kreativen Namen „Modloader“ und den „Forge Modloader“. Es gibt ein paar kleinere Unterschiede zwischen den beiden, diese möchte ich aber hier nicht erläutern sondern auf die entsprechende Diskussion im MinecraftForum verweisen. Trotzdem kann ich euch auf jeden Fall den Forge-Modloader empfehlen. Er bietet mehr Möglichkeiten, ist dafür aber auch komplexer. Ich selber arbeite auch mit Forge.

Das Prinzip beider Modloader funktioniert gleich. Eine kurze Erklärung: Der Modloader ändert eine beliebe Klasse des Spiels fügt eine Methode ein. Diese Methode ruft jeden installierten Mod auf und übernimmt alle Funktionen, die der jeweilige Mod der jeweiligen Klasse hinzufügen möchte. Somit programmiert man selber nicht im Code des Spieles, sondern erstellt neue Dateien, die vom Modloader dann aufgerufen und ins Spiel eingearbeitet werden. Das einzige Problem ist dann, dass, wenn eine neue Minecraft Version herauskommt, zuallererst der Modloader aktualisiert werden muss. Mit etwas Glück fügt er dann euren Mod wieder genauso in Spiele ein, ohne dass ihr ihn auf die neue Minecraft Version anpassen müsst.

Damit ist man natürlich auch eingeschränkt, da der Modloader nicht jede einzelne Klasse modifiziert. Trotzdem ist er die ideale Lösung, mehrere Mods gleichzeitig zu benutzen. Ohne ihn würde das nämlich nur sehr begrenzt funktionieren. Ich kann euch außerdem nur ans Herz legen, für die Entwicklung mit Java die Entwicklungsumgebung Eclipse zu benutzen, da sie vieles vereinfacht und dem Programmierer ungemein die Arbeit erleichtert.

Die Tage folgt ein noch Post über meine beiden, bisher noch unveröffentlichten Minecraft Mods.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.