NBT-Editor für Java Edition

Unterstützt Minecraft Bedrock Edition und Java Edition – einschließlich jedes bekannten oder seltenen Serverkerns: Vanilla, Paper, Spigot, Purpur, Folia, Fabric, Forge, NeoForge, Mohist, Sponge, Bedrock Dedicated Server, PocketMine-MP, Nukkit, PowerNukkitX, Cloudburst, Dragonfly, Endstone, LeviLamina und weitere. Vollständige Liste.

Minecraft Java Edition speichert Daten als Big-Endian-NBT und fast immer gzip-komprimiert. Ziehe eine beliebige Java-Datei nach unten – level.dat, eine UUID-Datei aus playerdata, servers.dat, eine Strukturdatei .nbt oder ein WorldEdit-Schematic. Der Editor dekomprimiert und liest sie als Big-Endian und schreibt sie wieder gzip-komprimiert, damit das Spiel sie unverändert akzeptiert.

VanillaPaperSpigotPurpurFoliaFabricQuiltForgeNeoForgeSponge

eine Java-NBT-Datei hier ablegen

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · Chunk-Abbilder

Bestandteile einer Java-Welt

Alle folgenden Dateien lassen sich im Editor oben öffnen. Regionsdateien (.mca) sind Container für viele komprimierte Chunks und keine einzelnen NBT-Dokumente. Extrahiere daher zuerst die Nutzdaten eines Chunks. Der Editor liest das dabei ausgegebene zlib-komprimierte Chunk-NBT.

PfadInhaltKomprimierung
world/level.datWeltname, Spielmodus, Regeln, Spawn, DataVersiongzip
world/level.dat_oldVorheriger Speicherstand derselben Dateigzip
world/playerdata/<uuid>.datInventar, Endertruhe, Position, Gesundheit, XP, Attributegzip
world/data/raids.dat, idcounts.dat, map_*.datRaid-Status, Entity-ID-Zähler, Kartengzip
world/data/scoreboard.datZiele, Teams, Punkteständegzip
world/region/*.mcaChunk-NBT in einem Regionscontainerzlib pro Chunk
servers.datMehrspieler-Serverliste des Clientskeine
hotbar.nbtGespeicherte Kreativ-Schnellzugriffsleistenkeine
*.nbt in DatapacksVon Strukturblöcken und Jigsaws platzierte Strukturengzip

So kodiert Java NBT

  • Big-Endian. Jede Ganzzahl und Gleitkommazahl wird mit dem höchstwertigen Byte zuerst gespeichert, entsprechend Javas DataOutputStream.
  • Benannter Root-Tag. Die Datei beginnt mit dem Tag-Typ 0x0A, gefolgt von einem längenpräfigierten UTF-8-Namen des Root-Tags. In level.dat ist er traditionell leer.
  • Modifiziertes UTF-8. Strings verwenden Javas writeUTF-Kodierung: zwei Bytes Länge, NUL als C0 80 und Zeichen außerhalb der Basisebene als zwei Drei-Byte-Hälften (CESU-8). Ein Werkzeug, das dies als normales UTF-8 behandelt, beschädigt Emojis in Weltnamen. Dieser Editor kodiert sie korrekt.
  • Standardmäßig gzip. NbtIo.readCompressed erwartet einen gzip-Stream. Unkomprimiert geschriebene Dateien lassen sich in manchen Werkzeugen, aber nicht im Spiel laden.
  • Namenloser Root-Tag im Netzwerk. Seit 1.20.2 überträgt das Protokoll NBT ohne Root-Namen. Solche Paket-Dumps werden hier als Java-Netzwerk erkannt.

Paper, Spigot, Fabric, Forge – gleiche Dateien

Forks und Mod-Loader ändern die Serverausführung, nicht das Speicherformat der Welt. Paper, Purpur, Pufferfish, Folia, Fabric, Quilt, Forge, NeoForge, Mohist, Arclight und Sponge nutzen alle die NBT-Struktur von Vanilla. Daher gilt diese Seite unverändert für sie. Forks ergänzen lediglich Dateien neben der Welt, etwa paper-world.yml oder Mod-Konfigurationen. Diese verwenden YAML oder TOML und haben nichts mit NBT zu tun.

Mods und Plugins können eigene Compounds in level.dat oder playerdata ergänzen. Diese Tags lassen sich wie alle anderen öffnen. Ändere sie nur, wenn du weißt, wie der jeweilige Mod sie verwendet.

DataVersion und Versionsmigration

Java-Welten enthalten den Integer DataVersion, der das Weltformat angibt und mit jedem Snapshot erhöht wird. Einige Anhaltspunkte: 1.16.5 entspricht 2586, 1.17.1 entspricht 2730, 1.18.2 entspricht 2975, 1.19.4 entspricht 3337, 1.20.4 entspricht 3700 und 1.21 entspricht 3953. Genau wegen dieses Tags verweigert ein älterer Client das Öffnen einer neueren Welt. Ein manuelles Absenken konvertiert die dahinterliegenden Chunk-Daten nicht, sondern entfernt nur die Schutzprüfung. Lies den Wert, um die schreibende Version zu erkennen; ändere ihn nicht, um ein Downgrade zu erzwingen.

Häufig gestellte Fragen

Kann ich eine Java-level.dat öffnen, die im Spiel nicht lädt?

Meistens ja. Der Editor toleriert nachgestellte Bytes besser als das Spiel und meldet bei einer abgeschnittenen Datei genau, wo das Parsen beendet wurde. Wenn auch er die Datei ablehnt, versuche level.dat_old, den vorherigen automatischen Speicherstand.

Wird Netzwerk-NBT ab 1.20.2 unterstützt?

Ja. Seit 1.20.2 lässt das Protokoll den Root-Namen weg. Ein Dump in dieser Form wird als Format Java-Netzwerk erkannt und kann entweder wieder als Netzwerk-NBT oder als normale Datei mit benanntem Root-Tag gespeichert werden.

Kann ich einen Chunk aus einer .mca-Regionsdatei bearbeiten?

Du kannst Chunk-NBT bearbeiten, nachdem es aus dem Regionscontainer extrahiert wurde. Die Datei .mca besteht aus einem Index und vielen zlib-komprimierten Chunk-Nutzdaten. Dieser Editor verarbeitet ein einzelnes NBT-Dokument, nicht den Container.

Kann die Bearbeitung von playerdata den Spieler beschädigen?

Nur wenn der Server dabei läuft. Er hält den Spielerstatus im Arbeitsspeicher und schreibt ihn beim Abmelden zurück, wodurch deine Datei überschrieben wird. Nimm den Spieler offline, bearbeite die Datei und lasse ihn danach wieder verbinden. Siehe playerdata Editor.

Muss level.dat mit gzip komprimiert sein?

Der Vanilla-Loader liest gzip. Speichere mit der Komprimierung gzip. Wenn die Datei so eingelesen wurde, ist dies bereits die Standardeinstellung, und das Spiel akzeptiert sie.

Verwandte Werkzeuge