Minecraft Wiki
Iscriviti
Advertisement

Il formato livello Classic è usato in tutte le varietà di Minecraft Classic. È compresso con gzip e contiene un header corto seguito da oggetti Java serializzati. I livelli del giocatore singolo hanno l'estensione ".mine". I livelli usati nei server in modalità creativa della Classic sono chiamati "server_level.dat". Il file può essere salvato per salvare i contenuti che aiutano nel proteggere le costruzioni contro i distruttori o per usare il file di modifica delle mappe.

Siccome il formato di questo livello dipende dal modo in cui Java serializza gli oggetti, la maniera più facile per lavorarci è attraverso il server Classic in sé, minecraft-server.jar. Un semplice codice è fornito per mostrare come costruire un modificatore con il file minecraft-server.jar.

Formato del file[]

Quando decompresso, il formato del file è come segue:

Posizione Dimensione (byte) Nome Descrizione
0 4 ID Magico L'ID magico è un numero costante usato per identificare il formato di file di Minecraft. Il valore attuale è 0x271bb788.
4 1 Numero della versione Il numero della versione rappresenta il formato attuale usato per salvare il livello. Il valore attuale è 2.
5 Variabile Classe Java serializzata com.mojang.minecraft.level.Level Più informazioni riguardo il formato di serializzazione usato in Java sono disponibili nel manuale, tuttavia, il modo più facile per modificare questo file è usare le classi date nel minecraft-server.jar file ufficiale.

Accedere all'array di byte[]

La parte più interessante di un livello è l'array del blocco. Ogni byte in questo array definisce un tipo di blocco nella posizioni corrispondente nel mondo. Uno generalmente ha due opzioni per accedere all'array di byte dei blocchi:

Puoi de-serializzare il file .dat compresso direttamente in un istanza di un oggetto di Livello dentro Java, avendo accesso all'istanza all'oggetto del Livello nella maniera esatta di come il server di Minecraft fa. Questo ti permette di impostare i blocchi, le dimensioni, il punto di generazione ed altri aspetti della mappa direttamente chiamando i metodi nell'oggetto del livello inizializzato. La decompressione manuale non è necessaria prima del caricamento, perché Java può comprimere e decomprimere file .gzip al volo. Per caricare il file dei dati ad una istanza di una classe di livello, hai bisogno della definizione per la classe del livello. Questo è incluso con il file minecraft-server.jar. Un esempio di questo può essere visto nella creazione e salvataggio di classi.

Altri leggono e modificando i dati della mappa semplicemente accedendo ai dati puri nel file dei dati. Per fare questo, devi decomprimerlo, fare i cambiamenti ai byte dove l'array dei byte è immagazzinato, e poi comprimerlo di nuovo. Siccome modifichi i dati puri, devi tenere i primi 344 (14E in HEX) byte intatti. I successivi 256x256x64 byte sono dove l'array dei byte è immagazzinato. In aggiunta, è anche possibile alterare le coordinate del punto di generazione in questo modo se sai dove guardare, ci sono tre valori integer che incominciano al byte 284 e sovrascrivere i 12 byte successivi (3 integer) ti permetterà di cambiare la località di generazione.

(Disclaimer: Questo può cambiare quando Java cambia)

Advertisement