Formato de archivo de región

Quien soy
Aina Prat
@ainaprat
Autor y referencias
Este artículo necesita una limpieza para cumplir con la guía de estilo. [discutir] Por favor ayude a mejorar esta página. La página de discusión puede contener sugerencias. Esta función es exclusiva de Java Edition. 

Al Formato de archivo de región es un formato de almacenamiento para trozos de Minecraft introducido en Beta 1.3, en el que grupos de 32 × 32 trozos (512 × 256 × 512 bloques, 67,108,864 en total) se almacenan en un archivo de región. Este formato de archivo reemplazó al formato de nivel Alpha, que se había utilizado desde la fase de desarrollo de Infdev, en el que los fragmentos se almacenaban en archivos individuales. Se podría decir que una región es parte de un sistema de archivos donde el encabezado muestra las posiciones del reproductor para cada archivo y el sector es el tamaño de asignación.



El sistema está basado en McRegion, [1] un mod de Scaevolus, también conocido por su desarrollo del proyecto Optimine. El formato McRegion se adoptó casi sin cambios, excepto por la adición de una tabla de marcas de tiempo de actualización de fragmentos. JahKob ha afirmado que este formato es hasta 7 veces más rápido que el sistema anterior. [2] La diferencia en el tamaño de archivo total de un mundo entre el formato de archivo Región y el formato de nivel Alfa es insignificante.


El formato ha sido reemplazado por el formato de archivo Anvil; sin embargo, el formato de archivo Anvil realizó cambios solo en el formato Chunk y cambió solo las extensiones de archivo de la región de ".mcr" a ".mca".


Contenido

  • 1 archivos de región
    • 1.1 Ubicación del archivo de región
    • Estructura 1.2
    • 1.3 Ubicación de fragmentos
    • 1.4 Marcas de tiempo de fragmentos
    • 1.5 fragmentos de datos
  • 2 Migración y level.dat
  • 3
  • Enlaces 4 externos
  • 5
  • Software 6

Archivos de región

Ubicación del archivo de región

Los archivos de región se encuentran en una subcarpeta del directorio mundial llamada "región" y tienen nombres en el formato rxzmcr, donde xyz son las coordenadas de la región. Las coordenadas de la región a la que pertenece un fragmento se pueden encontrar tomando el piso de las coordenadas del fragmento dividido por 32.

En Java Edition:

int regionX = (int) piso (chunkX / 32.0); int regionZ = (int) piso (chunkZ / 32.0);

O en operación de bits (desplazamiento de bits):

int regionX = chunkX >> 5 int regionZ = chunkZ >> 5

Por ejemplo, un fragmento en (30, -3) estaría en la región (0, -1) y uno en (1500, -600) estaría en (2, -2).

curso en línea

Los archivos de región comienzan con un encabezado de 8kB que contiene información sobre qué fragmentos están presentes en el archivo de región, cuándo se actualizaron por última vez y dónde se pueden encontrar. La ubicación en el archivo de región de un fragmento en (x, z) (en coordenadas de fragmento) se debe encontrar en el byte offset 4 * ((x mod 32) + (z mod 32) * 32) en su archivo de región. En caso de que los valores de x mod 32 oz mod 32 sean negativos (lo que sucede cuando se usa el operador% en Java / C / C ++), simplemente agregue 32 o el jugador puede reemplazar mod con & (operador AND). El cálculo de compensación se ve así: 4 * ((x & 31) + (z & 31) * 32). Su marca de tiempo se puede encontrar 4096 bytes más adelante en el archivo. El resto del archivo consta de datos de hasta 1024 fragmentos, intercalados con espacio no utilizado.



byte 0 - 4095 4096 - 8191 8192 ...
descripción ubicaciones (1024 entradas) marcas de tiempo (1024 entradas) trozos y espacio no utilizado

Ubicación del fragmento

La información de ubicación de un fragmento consta de cuatro bytes divididos en dos campos: los primeros tres bytes son un desplazamiento (big-endian) en sectores de 4 KB desde el inicio del archivo, y un byte restante que da la longitud del fragmento (también en Sectores de 4 KB, redondeados). Los trozos siempre tienen un tamaño inferior a 1 MiB. Si un fragmento no está presente en el archivo de región (por ejemplo, porque aún no se ha generado o migrado), ambos campos son cero.

byte 0 1 2 3
descripción compensar recuento del sector

Un fragmento con un desplazamiento de 2 comienza justo después de la tabla de marcas de tiempo.

Marcas de tiempo de fragmentos

Las entradas en la tabla de marca de tiempo son enteros big-endian individuales de cuatro bytes, que representan el tiempo de la última modificación de un fragmento en segundos de época.

byte 0 1 2 3
descripción fecha y hora

Fragmentos de datos

Los datos del fragmento comienzan con un campo de longitud de cuatro bytes (big-endian) que indica la longitud exacta del fragmento de datos restante en bytes. El siguiente byte indica el esquema de compresión utilizado para los datos de fragmentos, y los bytes restantes (longitud-1) son los datos de fragmentos comprimidos.



Minecraft siempre rellena los datos del último fragmento para que tengan una longitud de múltiplo de 4096B (de modo que todo el archivo tenga un tamaño que sea múltiplo de 4 KB). Minecraft no acepta archivos en los que el último fragmento no esté relleno. Tenga en cuenta que este relleno no se incluye en el campo de longitud.

byte 0 1 2 3 4 5 ...
descripción longitud (en bytes) tipo de compresión datos comprimidos (longitud-1 bytes)

Actualmente hay tres esquemas de compresión definidos:

VALORAMOS Método
1 GZip (RFC1952) (no utilizado en la práctica)
2 Zlib (RFC1950)
3desde una versión anterior a la 1.15.1 [manténgalo descomprimido] (sin usar en la práctica)

Los datos sin comprimir están en formato NBT y siguen la información detallada en el artículo en formato fragmentado; si se comprime con el esquema de compresión 1, los datos comprimidos serían los mismos que el contenido en disco de un archivo de fragmentos Alpha. Tenga en cuenta que los fragmentos siempre se guardan mediante el esquema de compresión 2 por parte del cliente oficial.

Si el valor del esquema de compresión aumenta en 128, los datos comprimidos se guardan en un archivo llamado cxzmcc, donde xyz son las coordenadas del fragmento, en lugar de la posición habitual.

Migración y level.dat

Cómo se ve Minecraft al convertir al nuevo formato.

Beta 1.3 convierte cualquier fragmento "antiguo" en archivos de región antes de cargar el mundo, en lugar de hacerlo de forma incremental a medida que se cargan durante la reproducción. Como parte de la conversión, level.dat se actualiza con TAG_Int ("versión") (note case) establecido en 19132. Beta 1.3 también introduce un nuevo campo de nombre de nivel, TAG_String ("LevelName"). También se introdujo un nuevo TAG_Byte ("Durmiendo") en el jugador TAG_Compounds - level.dat en un jugador, [nombre del jugador] .dat en el modo multijugador que indica si hay un jugador en la cama. Tiene valor 1 (verdadero) o 0 (falso). Para la versión beta 1.8, se agregó TAG_Int ("GameType"). En beta 1.9, se agregó TAG_byte ("hardcore").

Por lo demás, el formato de level.dat no se modifica.

  • Formato de nivel de Java Edition
  • Formato de fragmentos
  • Formato de archivo de yunque

Enlaces externos

  • Anuncio de Mojang del nuevo formato de región; Jeb ayudando a los fabricantes de herramientas
  • McRegion
  • RegionFile en Java
  • RegionFileCache en Java
  • Buscar archivo de región a partir de coordenadas

  1. ↑ http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/mods-discussion/1346703-mod-mcregion-v5-optimized-saves-1-2_02#p2619453
  2. ↑ http://www.pcgamer.com/minecraft-dev-diary-new-block-magic-fiddles/

Software

La comunidad ha desarrollado programas para trabajar con archivos regionales:

Nombre Descripción Captura de pantalla
McRegion Este mod optimiza la forma en que los fragmentos se almacenan en el disco, lo que significa que las pausas para cargar o guardar un fragmento a medida que el jugador se mueve por un mundo se vuelven mucho más cortas y menos perceptibles.
Reparador de la región de Minecraft Esta herramienta es una secuencia de comandos de Python que intenta solucionar problemas en archivos de región. Puede encontrar algunos errores típicos (fragmentos dañados, fragmentos mal ubicados, demasiados problemas de entidades) y puede corregir estos errores de varias formas (eliminando fragmentos, reemplazándolos con una copia de seguridad o reubicando el fragmento). Esta es una aplicación de línea de comandos.
MCA2NBT Una sencilla utilidad de línea de comandos de Unix para convertir un archivo de región .mca de Minecraft (en formato yunque) en un directorio con el mismo nombre de base que contiene un archivo NBT sin comprimir para cada uno de sus fragmentos.
Escáner de región Una utilidad de línea de comandos Java de Java Edition 1.7.10 (solo) para analizar y editar archivos de región en masa
Edición Java
versiones
  • Demo
    • Localizaciones
  • Demostración de jugador de PC (Beta 1.3)
Desarrollo
Historial de versiones
  • Preclásico
  • Clásico
    • Creatividad clásica temprana
    • Prueba multijugador
    • Prueba de supervivencia
    • Creativo del Clásico Tardío
  • Indev
  • Infdev
  • Alpha
  • Beta
  • Versión completa
  • Versiones de desarrollo
  • Funciones eliminadas
    • Bloques
    • artículos
  • Funciones no utilizadas
  • Características exclusivas
  • Funciones mencionadas
    • Dimensión del cielo
  • Versiones planificadas
Apoyo técnico
  • Errores conocidos
    • Plataforma de Minecraft
  • Requisitos de hardware
  • al_version
  • Entidad de bloque
  • Comandos
    • Las funciones clave
  • Accidentes
  • Valores de datos
    • Clásico
    • Indev
    • Pre-aplanamiento
  • Versión de datos
  • Pantalla de depuración
  • Formatear códigos
  • Códigos clave
  • Plataforma de Minecraft
  • Versión del protocolo
  • Ubicación del recurso
  • Captura de pantalla
  • Semilla
  • Estadística
  • garrapata
  • Fragmento de desove
  • Coordenadas
.Minecraft
  • client.jar
  • client.json
  • launcher_profiles.json
  • options.txt
Recursos de desarrollo
  • Formato de archivo de yunque
  • Formato de fragmentos
  • Formato de almacenamiento de comandos
  • Formato de estructuras generadas
  • Formato de nivel
  • Tablas de botín
  • Formato de elemento de mapa
  • Modelo
  • Formato NBT
  • Mapa de ofuscación
  • Formato del reproductor
  • formato raids.dat
  • Formato de texto JSON sin procesar
  • Formato de archivo de región
  • Formato de archivo de bloque de estructura
    • Formato de archivo esquemático
  • Formato de marcador
  • Formato de lista de servidores
  • sonidos.json
  • Subtítulos
  • formato village.dat
Recursos de desarrollo heredados
  • Formato de nivel clásico
  • Protocolo de servidor clásico
  • Formato de nivel indev
  • Formato de nivel alfa
  • server_level.dat
Multijugador
  • Servidor
  • Minecraft Reinos
  • Lista de servidores
  • server.properties
  • Requisitos del servidor
Personalización del juego
  • Skins
  • Capes
  • Paquetes de recursos
  • Paquetes de datos


Añade un comentario de Formato de archivo de región
¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.