Mods für Minecraft Server - wie funktioniert das?


9

Minecraft Server wird als einzelnes Glas geliefert. Wie werden Mods entwickelt? Wie interagieren sie mit dem Originalglas? Was gibt es unter der Haube?

Welche Technologien sind dort beteiligt? Ich bin meistens ein C ++ / Python-Typ, aber ich würde gerne etwas über die Mods-Entwicklung lernen.

Antworten:


11

Eine JAR ist einfach eine ZIP-Datei, die die verschiedenen verwendeten Klassendateien und anderen Metadaten enthält - es ist ein vollständig standardisiertes Format.

ZIP-Dateien können extrahiert und die Klassendateien nach Bedarf für die Änderung bearbeitet werden. Die geänderten Dateien werden dann wieder in das Archiv eingefügt, wodurch der Server die geänderten Dateien anstelle der Originaldateien verwendet.

Technisch gesehen sind Minecraft-Mods wirklich "gehackte" Versionen des Originalcodes: Die eigentlichen Binärklassendateien müssen geändert werden, um das Spiel über die neuen Dinge zu informieren. Es gibt noch keine offizielle Mod-Unterstützung (obwohl Notch erklärt hat, dass sie während der Beta daran arbeiten werden).

Natürlich ist das keine sehr gute Art, Dinge zu tun, wenn man aktiv für Mods entwirft. Stattdessen würden Sie eine Art Plugin-Architektur entwerfen, mit der gegebenenfalls benutzerdefinierter Code ausgeführt werden kann. Wie Sie genau vorgehen würden, hängt davon ab, was Ihre Mods können sollen. Wenn beispielsweise die Sicherheit ein Problem darstellt, möchten Sie die Mod-Oberfläche wahrscheinlich so gestalten, dass sie eine Art Skripterstellung verwendet, damit Sie die Mods daran hindern können alle möglichen Dinge auf den Computer des Benutzers.


Dies ist nicht ganz richtig - McAdmin zum Beispiel wurde in C #
BlueRaja - Danny Pflughoeft

@BlueRaja: MCAdmin ist meiner Meinung nach kein Mod - es ist ein benutzerdefinierter, eigenständiger Server. Während es dem Client ermöglichen kann, neue Dinge über Befehle zu tun, halte ich die beiden Dinge für unterschiedlich.
Michael Madsen

Huh? Nein, es war definitiv ein Mod; Es war ein Wrapper um den Minecraft-Server. Der Minecraft-Server musste ausgeführt werden, sodass er nicht eigenständig war. Ich schaute kurz auf die Quelle und sie schien Netzwerknachrichten abzufangen und sie auf ihrem Weg hinein / heraus zu ändern.
BlueRaja - Danny Pflughoeft

3
@BlueRaja: Huh - hätte schwören können, dass es sich um einen eigenständigen Server handelt, aber andererseits gebe ich zu, dass ich ihn nie wirklich benutzt habe. Dies ist eine Art Sonderfall, da es anscheinend als Proxyserver zwischen dem Player und dem Server fungiert. Ich würde es immer noch nicht als Mod bezeichnen, aber das könnte nur ich sein.
Michael Madsen

6

Einzelspieler-Mods sind gehackte Versionen des Originalcodes. Multiplayer-Mods sind momentan anders. Sie alle verwenden fast den Server-Wrapper von hey0, der in der Datei minecraft_server.jar (oder wie auch immer der Begriff in Java land lautet) verknüpft, aber eigene Funktionsklassen definiert, einige der Kernfunktionen überlastet und eine eigene main () ausführt.

Hey0 bietet eine Mod- API . Sehen


1

Zu Ihrer Information, Mojang wird in naher Zukunft eine "Mod API" veröffentlichen (während der Beta, also vor der offiziellen Veröffentlichung, die im November 2011 sein wird).

Tatsächlich wird es der vollständige Quellcode sein, wie in Notchs Blog erwähnt

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

Im Moment müssen Sie die Jars jedoch "dekompilieren", um einen teilweise verschleierten Code zu sehen und ihn für die spätere Verwendung / das Debuggen neu zu kompilieren.

Zu diesem Zweck empfehle ich das Minecraft Coder's Pack http://mcp.ocean-labs.de/index.php/MCP_Releases

Es gibt auch ein paar Modding-Tutorials in den Foren, wie dieses: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.