Editor NBT per Java Edition

Supporta Minecraft Bedrock Edition e Java Edition e ogni core server per entrambe, diffuso o meno: Vanilla, Paper, Spigot, Purpur, Folia, Fabric, Forge, NeoForge, Mohist, Sponge, Bedrock Dedicated Server, PocketMine-MP, Nukkit, PowerNukkitX, Cloudburst, Dragonfly, Endstone, LeviLamina e gli altri. Elenco completo.

Minecraft Java Edition memorizza i dati come NBT big-endian, quasi sempre compresso con gzip. Trascina qui sotto un file Java, come level.dat, un file UUID di playerdata, servers.dat, una struttura .nbt o uno schematic WorldEdit: l'editor lo decomprime, lo analizza come big-endian e lo riscrive compresso con gzip, così il gioco lo accetta senza modifiche di formato.

VanillaPaperSpigotPurpurFoliaFabricQuiltForgeNeoForgeSponge

Trascina un file NBT Java qui

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · dump di chunk

Da quali file è composto un mondo Java

Tutti i file elencati qui sotto si aprono nell'editor. I file regione (.mca) sono contenitori di molti chunk compressi, non singoli documenti NBT: estrai prima il payload di un chunk. L'editor leggerà l'NBT del chunk compresso con zlib.

PercorsoContenutoCompressione
world/level.datNome del mondo, modalità di gioco, regole, spawn, DataVersiongzip
world/level.dat_oldSalvataggio precedente dello stesso filegzip
world/playerdata/<uuid>.datInventario, ender chest, posizione, salute, XP, attributigzip
world/data/raids.dat, idcounts.dat, map_*.datStato dei raid, contatori degli id delle entità, mappegzip
world/data/scoreboard.datObiettivi, squadre, punteggigzip
world/region/*.mcaNBT dei chunk in un contenitore regionezlib per ogni chunk
servers.datElenco dei server multigiocatore del clientnessuna
hotbar.nbtBarre rapide salvate della modalità creativanessuna
*.nbt nei datapackStrutture collocate da blocchi struttura e jigsawgzip

Come Java codifica NBT

  • Big-endian. Ogni intero e numero in virgola mobile viene memorizzato partendo dal byte più significativo, come in DataOutputStream di Java.
  • Radice con nome. Il file inizia con il tipo di tag 0x0A, seguito dal nome della radice in UTF-8 preceduto dalla lunghezza; storicamente è vuoto in level.dat.
  • UTF-8 modificato. Le stringhe usano la codifica writeUTF di Java: lunghezza di due byte, NUL scritto come C0 80 e caratteri fuori dal piano di base divisi in due metà da tre byte (CESU-8). Uno strumento che la tratta come normale UTF-8 altera gli emoji nei nomi dei mondi; questo editor la codifica correttamente.
  • gzip per impostazione predefinita. NbtIo.readCompressed richiede un flusso gzip. I file scritti senza compressione si aprono in alcuni strumenti, ma non nel gioco.
  • Radice senza nome sulla rete. Dalla 1.20.2 il protocollo invia NBT senza il nome della radice. I dump di pacchetti con questa struttura vengono rilevati qui come formato Java di rete.

Paper, Spigot, Fabric, Forge: gli stessi file

I fork e i mod loader cambiano il funzionamento del server, non la scrittura del mondo. Paper, Purpur, Pufferfish, Folia, Fabric, Quilt, Forge, NeoForge, Mohist, Arclight e Sponge usano tutti la struttura NBT di Vanilla, quindi quanto descritto in questa pagina si applica senza modifiche. I fork aggiungono file accanto al mondo, come paper-world.yml e le configurazioni delle mod, ma sono YAML o TOML e non riguardano NBT.

Mod e plugin possono aggiungere composti propri in level.dat o playerdata. Questi tag si aprono come tutti gli altri; non modificarli se non sai come vengono usati dalla mod.

DataVersion e migrazione della versione

I mondi Java contengono un intero DataVersion che identifica il formato del mondo e aumenta a ogni snapshot. Alcuni riferimenti utili: 1.16.5 è 2586, 1.17.1 è 2730, 1.18.2 è 2975, 1.19.4 è 3337, 1.20.4 è 3700, 1.21 è 3953. Un client più vecchio di quello che ha scritto il mondo rifiuta di aprirlo proprio a causa di questo tag; ridurlo manualmente non converte i dati dei chunk, ma elimina soltanto la protezione. Leggilo per capire quale versione ha scritto un mondo; non modificarlo per forzare un downgrade.

Domande frequenti

Posso aprire un level.dat Java che non si carica nel gioco?

In genere sì. L'editor tollera i byte finali più del gioco e, se il file è troncato, indica esattamente dove si è interrotta l'analisi. Se anche l'editor lo rifiuta, prova level.dat_old, cioè il salvataggio automatico precedente.

Supporta NBT di rete dalla 1.20.2 in poi?

Sì. Dalla 1.20.2 il protocollo omette il nome della radice. Un dump con questa struttura viene rilevato come formato Java di rete e può essere salvato di nuovo come NBT di rete o come normale file con radice dotata di nome.

Posso modificare un chunk di un file regione .mca?

Puoi modificare l'NBT di un chunk dopo averlo estratto dal contenitore regione. Il file .mca è formato da un indice e molti payload di chunk compressi con zlib; questo editor opera su un singolo documento NBT, non sul contenitore.

La modifica di playerdata può danneggiare il giocatore?

Solo se il server è in esecuzione durante la modifica: conserva lo stato del giocatore in memoria e lo scrive alla disconnessione, sovrascrivendo il file. Disconnetti il giocatore, modifica il file e fallo rientrare. Consulta l'editor playerdata.

level.dat deve essere compresso con gzip?

Il loader Vanilla legge gzip. Salva con la compressione impostata su gzip, che è il valore predefinito quando il file è stato ricevuto in quel formato, e il gioco lo accetterà.

Strumenti correlati