Diferencia entre revisiones de «Formato clásico»
Línea 26: | Línea 26: | ||
| Variable | | Variable | ||
| Java Seriado ''com.mojang.minecraft.level.'' Clase de Nivel | | Java Seriado ''com.mojang.minecraft.level.'' Clase de Nivel | ||
− | | Mas información sobre el formato de serializacion de java esta disponible en [http://java.sun.com/developer/technicalArticles/Programming/serialization/ manual],la forma mas fácil de editar el archivo es usando las [[Creation and saving class|clases]] provistas aquí en el <span class="plainlinks">[http://minecraft.net/servers.jsp minecraft-server.jar file]</span> | + | | Mas información sobre el formato de serializacion de java esta disponible en [http://java.sun.com/developer/technicalArticles/Programming/serialization/ manual],la forma mas fácil de editar el archivo es usando las [[Creation and saving class|clases]] provistas aquí en el <span class="plainlinks">[http://minecraft.net/servers.jsp minecraft-server.jar file]</span> oficial. |
|} | |} | ||
Revisión actual del 17:33 22 oct 2014
El Formado de nivel clásico es usado en todas las versiones deMinecraftClassic. Esta comprimido en gzip y contiene una cabecera corta seguida de objetos java seriados. Mundos de un solo jugador (SinglePlayer) tienen la extensión “.mine”. Mundos usados en los servidores de Minecraft Classic usaban “server_level.dat” . Estos archivos podrían ser respaldados lo cual ayudaba a mantener cierta protección en las construcciones contra griefers o para poder ser usados en editores de mapas.
Debido a que este formato depende de la forma en como java serializa los objetos, la forma más fácil de trabajar en el propio archivo de servidor de Minecraft Classic, minecraft-server.jar . Códigos de ejemplo eran provistos para mostrar como ensamblar un editor dentro de minecraft-server.jar
Formato de archivo
Al ser descomprimido, el formato de archivo muestra lo siguiente:
Posición | Tamaño(bytes) | Nombre | Descripción |
---|---|---|---|
0 | 4 | Magic ID (ID Magica) | Una ID mágica es un numero constante usado para identificar el formato de archivo de Minecraft. El valor actual es 0x271bb788. |
4 | 1 | Numero de Versión | El numero de version representa el formato actual usado para salvar el nivel. El valor actual es 2. |
5 | Variable | Java Seriado com.mojang.minecraft.level. Clase de Nivel | Mas información sobre el formato de serializacion de java esta disponible en manual,la forma mas fácil de editar el archivo es usando las clases provistas aquí en el minecraft-server.jar file oficial. |
Acceder el orden de bytes
La parte más interesante del nivel es el orden de los bloques. Cada byte es una organización que define el Tipo de bloque en su lugar correspondiente en el Mundo. Se tiene dos formas de poder acceder el orden de bytes de los bloques:
Puedes deserializar el archivo comprimido .dat directamente dentro de Java en forma de objeto de nivel, de la misma forma que Minecraft server lo hace. Esto permite modificar bloques, dimensiones, punto de inicio (spawn point) y otros aspectos del mapa directamente al llamar la instancia del objeto de nivel. La descompresión manual no es necesaria antes de cargarlo, debido a que java puede comprimir y descomprimir archivos gzip mientras está funcionando. Para cargar la data de vuelta a la instancia de la clase del nivel. Necesitas la definición de clase de la clase del nivel. Esto es incluido en el archivo de minecraft-server.jar.
Otros han leído y modificado los datos del mapa simplemente al acceder al orden de bytes crudo en el archivo de datos. Para hacer esto, puedes descomprimir el archivo, hacer cambios en la parte donde el orden de bloques está localizado, y volver a comprimirlo. Debido a que estarías editando el archivo de bytes crudo, debes dejar los primeros 344 bytes (14E en HEX) intactos. Los siguientes 256X256X64 bytes son donde el orden de bloques es guardado. De forma adicional, también es posible alterar la localización del punto de las coordenadas de inicio del mundo (spawn).