Wie die meisten Computeranwendungen, so besteht auch das Spiel Minecraft aus Programm und Daten. Diese Seite befasst sich mit der Java Edition von Minecraft:
- Die Daten (z.B. alle Einzelspielerwelten, die Screenshots und ein Teil der Standard-Ressourcen) sind im Ordner .minecraft abgelegt.
- Das Programm steckt dagegen in der Archivdatei minecraft.jar, die nebenbei auch den anderen Teil der Standard-Ressourcen enthält.
Die Datei minecraft.jar heißt nicht wirklich so, sondern trägt die jeweilige Versionsnummer als Namen, z.B. 1.20.2.jar. Der Begriff minecraft.jar wird als Sammelbegriff für alle Versionen des ausführbaren Programms verwendet. Der Dateityp ".jar" steht für ein Java-Archiv.
Java-Technologie[]
Die Java-Technologie besteht aus:
- der Programmiersprache Java, mit der Computerprogramme erstellt werden können,
- einem Werkzeug für Programmierer (JDK = Java Development Kit), das es ermöglicht, Programme in Java zu schreiben,
- der Java-Laufzeitumgebung (JRE = Java Runtime Environment oder JVM = Java Virtual Machine genannt), die es ermöglicht, Java-Programme laufen zu lassen.
Das Besondere an Java ist die Laufzeitumgebung. Sie kann kostenlos für jedes Betriebssystem und alle aktuellen Betriebssystem-Versionen aus dem Internet auf den eigenen Rechner geladen und dort installiert werden. Mithilfe dieser Laufzeitumgebung können Programme völlig unabhängig von einem Betriebssystem entwickelt werden. Die Programmierer können sich darauf verlassen, dass ihr Programm auf allen Computern einsetzbar ist, auf denen die Java-Laufzeitumgebung installiert ist. Das ist natürlich ein gewaltiger Vorteil, denn es wäre sehr aufwändig, ein Programm in vielen Varianten für die unterschiedlichsten Betriebssystem entwickeln zu müssen. Doch es gibt auch einen Nachteil: durch die Trennung zwischen Programm und Laufzeitumgebung wird das Programm langsamer. Gerade bei Spielprogrammem ist die Geschwindigkeit der Darstellung aber ein sehr wichtiges Kriterium.
Markus Persson, der Erfinder von Minecraft und ein erfahrener Spieleentwickler, hat die Vor- und Nachteile gegeneinander abgewogen und sich für die Java-Technologie entschieden. Daher heißt das Programm minecraft.jar (jar = Java Archiv).
Jens Bergensten, der Nachfolger von Markus Persson, wurde gefragt, was er von Java als Programmiersprache für ein Spiel wie Minecraft hält, unter Berücksichtigung von Spielgeschwindigkeit, Einsatz unter verschiedenen Betriebssystemen und Übersichtlichkeit des Programmcodes und ob Minecraft nicht viel besser wäre, wenn es in z.B. C++ programmiert worden wäre. Jens antwortete, dass er die meiste Zeit seines Lebens in C++ programmiert habe und sehr glücklich ist, dass Minecraft in Java programmiert ist, denn das Programmieren mit C++ sei deutlich aufwändiger, als mit Java[1].
In der Vergangenheit hat sich ein weiteres Problem durch den Einsatz der Java-Technologie gezeigt: Jeder Spieler musste selbst dafür sorgen, dass auf seinem Rechner eine aktuelle, zum Minecraft-Spiel passende Java-Version installiert ist. Naturgemäß war das häufig nicht der Fall, was zu vielen vermeidbaren Problemberichten an die Firma Mojang geführt hatte. Daraufhin wurde der Launcher geändert, mit dem das Spiel gestartet wird: Der lädt jetzt selbstständig die passende Java-Version herunter und benutzt sie, um das Spiel zu starten (Details siehe Launcher).
Speicherort[]
Die minecraft.jar der entsprechenden Version findet man über den Launcher. Dort geht man auf den Reiter Profile, wählt die "neueste Version" aus und klickt unter "Spielordner" auf den kleinen grünen Pfeil, woraufhin der Ordner .minecraft geöffnet wird. Dort geht man in den Unterordner versions und sieht alle Versionsordner. In jedem Versionsordner befindet sich eine minecraft.jar, die die entsprechende Versionsnummer trägt, z.B. 1.12.2.jar.
Das Programm starten[]
Das Programm minecraft.jar wird über den Launcher gestartet, in welchem man über das Anlegen unterschiedlicher Profile die Möglichkeit hat, unterschiedliche Minecraft-Versionen zu starten.
Alternativ dazu könnte man die minecraft.jar auch mit dem java-Kommando über eine Batch-Datei selbst starten. Dies ist jedoch nicht zu empfehlen, denn das Kommando müsste an jede Minecraft-Version speziell angepasst und würde außerdem sehr lang werden, denn es müsste neben weiteren Parametern die Pfade sämtlicher Programmbibliotheken enthalten, die Minecraft benötigt. Die Zusammenstellung des umfangreichen minecraft.jar-Startkommandos mit allen Parametern und Bibliotheken übernimmt der Launcher (siehe dort).
Manchmal möchte man jedoch beim Start der minecraft.jar spezielle Java-Einstellungen verwenden. Selbst dann ist es nicht nötig, das Startkommando selbst zusammenzustellen, denn man kann sie im Launcher hinterlegen, der sie dann verwendet. Dazu gibt man sie im jeweiligen Launcher-Profil unter JVM Argumente.
Die Informationen, die der Launcher benötigt, um das umfangreiche minecraft.jar-Startkommando zusammenzustellen, stehen in der json-Datei, die sich neben der minecraft.jar im Versionsordner befindet. Zu 1.12.2.jar gehört beispielsweise die Datei 1.12.2.json. Die json-Datei ist eine lesbare Textdatei in JSON.
Inhalt[]
Eine jar-Datei ist ein komprimiertes Java-Archiv. Man kann den Inhalt mit einem Dekomprimierungsprogramm wie z.B. der Freeware 7zip ansehen.
- minecraft.jar: Das Java-Archiv, das die jeweilige Versionsnummer im Namen trägt, z.B. 1.12.2.jar.
- assets: Ein Teil der Standard-Ressourcen von Minecraft (siehe dort).
- data: Die Standard-Weltdaten von Minecraft (siehe dort).
- META-INF: Dieser Ordner ist von Java für die Speicherung von Meta-Informationen über den Inhalt des Java-Archivs vorgesehen. Bei Minecraft handelt es sich dabei vor allem um Prüfsummen, anhand derer das Programm feststellen kann, ob eine Datei des Archivs verändert wurde. Das Ändern der Standard-Ressourcen und Standard-Weltdaten ist durchaus vorgesehen, erfolgt aber nicht durch eine Änderung in der minecraft.jar, sondern über ein Ressourcenpaket oder Datenpaket. Das Modding von Minecraft ist weit verbreitet und fügt dem Spiel viele neue Komponenten hinzu. Modding ist nur möglich, wenn der Ordner META-INF komplett gelöscht wird. Obwohl das Programm danach trotzdem noch funktioniert, wird dadurch das digitale Zertifikat entfernt, das sicherstellen soll, dass das Programm keinen schlecht programmierten Code oder sogar Schadcode von schlecht oder böswillig geschriebenen Mods enthält. Daher sollte man bei der Verwendung von Mods immer vorsichtig sein (siehe Mod).
- MANIFEST.MF: Diese Datei (deren Name aus der engl. Seefahrt stammt und Ladungsliste bedeutet) ist das von Java vorgesehene Inhaltsverzeichnis des Java-Archivs. Es ist eine lesbare Textdatei, die für jede Datei des Archivs eine Prüfumme enthält ("SHA1-Digest").
- MOJANGCS.SF: Diese Datei ist wie das MANIFEST.MF eine lesbare Textdatei. Sie enthält für jede Datei des Java-Archivs eine Signatur (SF = signature file) von Mojang (CS = certificates). In Verbindung mit der MOJANGCS.RSA kann der Launcher prüfen, ob die Dateien im Archiv wirklich von Mojang stammen.
- MOJANGCS.RSA: Zu einem signature file gehört immer eine binäre Datei mit der digitalen Signatur des Herstellers. Mojang verwendet dafür das RSA-Kryptosystem.
- net
- minecraft
- client
- ClientBrandRetriever.class: Diese Java-Klasse enthält nur eine Funktion, die als Mod-Name "vanilla" (d. h. "unmodifiziert") zurückliefert. Dieser Mod-Name wird verwendet, um dem Server bzw. einem Client mitzuteilen, ob der Client bzw. Server modifiziert wurde. So sendet Forge z.b. "forge" als Mod-Name. Siehe Wiki.vg für die technische Dokumentation.
- main
- Main.class: Mit dem Aufruf dieser Java-Klasse wird der Minecraft-Client gestartet.
- data
- Main.class: Diese Datei wird verwendet, um den Datengenerator zu starten.
- realms: Dieser Ordner enthält alle Realms-Klassen, die mit der Serververbindung zu tun haben. Die restlichen Realms-Klassen sind als Bibliothek ausgelagert und stehen unter .minecraft/libraries/com/mojang/realms.
- server
- MinecraftServer.class: Mit dem Aufruf dieser Java-Klasse wird der integrierte Server gestartet.
- client
- minecraft
- class-Dateien: Die ca. 4000 class-Dateien enthalten alle Programmfunktionen für den Minecraft-Client und den integrierten Server. Die Dateien sind obfuscated, d. h. der originale Programmcode wurde verschleiert, indem sämtliche Klassen- und Variablennamen von A bis Z durchnummeriert sind. Daher lauten die Klassennamen jetzt a.class bis zz.class. Durch dieses Verfahren soll verhindert werden, dass die Programmlogik allzuleicht kopiert wird. Manche Klassen sind auch in mehrere Dateien unterteilt. Diese sind dann mit NAME.class, NAME$1.class, NAME$2.class oder NAME.class, NAME$a.class, NAME$b.class etc. benannt.
Einzelnachweise[]
Geschichte[]
Versionsgeschichte der Java Edition | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Standard-Ressourcen |
| ||||
---|---|---|---|---|---|
Standard-Weltdaten |
| ||||
Spielwelt | |||||
Software | |||||
Speicherformate | |||||
Einstellungen | |||||
Mehrspieler | |||||
Historisch |