O formato de mapa .mclevel é um formato de mapa antigo criado por Notch. É baseado no formato NBT.
O formato do mapa estava em uso desde Indev 0.31 20100122 até a Infdev 20100325.
Embora os níveis Alpha (e Infdev) usem arquivos NBT, eles têm um formato de arquivo muito diferente.
Para obter detalhes sobre o formato de mapa infinito, consulte Formato de nível da Edição Java Alpha.
Estrutura NBT[]
- MinecraftLevel:A marca raiz.
- About: Informações sobre o nível.
- CreatedOn: A hora do Unix quando o nível foi criado.
- Name: O nome do nível, sempre "A Nice World".
- Autor: O nome do usuário que criou o nível.
- Environment: Informação sobre o ambiente do nível, que varia de acordo com as configurações de geração do mapa.
- TimeOfDay: O tempo em tiques que afeta o ciclo de luz do dia. Faixa 0 - 24000.
- SkyBrightness: O nível de luz do céu, 0 a 15.
- SkyColor: A cor RGB do céu, 24 bits. Vermelho é SkyColor >> 16 & 255, verde é SkyColor >> 8 & 255, azul é SkyColor & 255.
- FogColor: A cor RGB da névoa, 24 bits. Vermelho é FogColor >> 16 & 255, verde é FogColor >> 8 & 255, azul é FogColor & 255.
- CloudColor: A cor RGB das nuvens, 24 bits. Vermelho é CloudColor >> 16 & 255, verde é CloudColor >> 8 & 255, azul é CloudColor & 255.
- CloudHeight: A altura das nuvens (coordenada Y).
- SurroundingGroundType: O ID do bloco do "terreno circundante".
- SurroundingGroundHeight: A altura do "terreno circundante".
- SurroundingWaterType: O ID do bloco da "água circundante".
- SurroundingWaterHeight: A altura da "água circundante".
- Map: Os dados reais do mapa.
- Width: A largura do nível.
- Length: O comprimento do nível.
- Height: A altura do nível.
- Spawn: Lista de 3 TAG_Shorts para as coordenadas de geração X, Y e Z.
- Blocks: Largura*Comprimento*Altura bytes de IDs de bloco. (8 bits)
- Data: Largura*Comprimento*Altura bytes de dados de bloco (4 bits) e valor de luz (próximos 4 bits).
- Entities: Lista de TAG_Compounds para as entidades do nível.
- Uma entidade. O jogador tem sua própria entidade, mostrada abaixo como exemplo.
- id: O ID da entidade. Neste caso, "LocalPlayer".
- Pos: Lista de 3 TAG_Floats para a posição X, Y e Z do jogador.
- Rotation: Lista de 2 TAG_Floats para o Yaw e Pitch da visão do jogador.
- Motion: Lista de 3 TAG_Floats para o movimento X, Y e Z em metros por tick.
- FallDistance: Até onde o jogador caiu.
- Health: O número de pontos de vida que o jogador tem. 20 são 10 corações.
- AttackTime: Número de ticks que o jogador fica imune a ataques.
- HurtTime: Número de ticks que o jogador está vermelho por ser atacado.
- DeathTime: Número de ticks pelos quais o jogador esteve morto - usado para controlar a animação da morte.
- Air: O número de ticks antes que o jogador comece a se afogar. Começa em 300.
- Fire: Quando negativo, o número de ticks antes que o jogador possa pegar fogo. Quando positivo, o número de ticks antes do fogo se extinguir.
- Score: A pontuação do jogador.
- Inventory: Lista de TAG_Compounds representando itens no inventário do jogador.
- Uma entidade. O jogador tem sua própria entidade, mostrada abaixo como exemplo.
- TileEntities: Lista de TAG_Compounds para as entidades de tile no nível.
- Uma entidade tile.
- id: ID da entidade do bloco. Neste caso, "Chest".
- Pos: Posição da entidade tile, explicada posteriormente.
- Items: Lista de TAG_Compounds representando itens no baú.
- Uma entidade tile.
- About: Informações sobre o nível.
Calculando a tag "Pos" da entidade tile:
posição = x + (y << 10) + (z << 20)
Calculando X, Y e Z da tag "Pos":
x = pos % 1024
y = (pos >> 10) % 1024
z = (pos >> 20) % 1024
Blocos[]
O array de bytes de bloco é usado para definir os tipos de blocos que ocupam um mapa. O número de bytes na matriz pode ser calculado multiplicando as dimensões do mapa. Y sendo a direção para cima em vez de Z. Para valores hexadecimais veja IDs de Bloco.
Para acessar um bloco específico do bloco ou da matriz de dados das coordenadas XYZ, use a seguinte fórmula:
array index = (y * height + z) * width + x;
Dados[]
A matriz de bytes de dados é usada para iluminação e dados de bloco extras.
Para obter informações estendidas sobre metadados de bloco, consulte Valor de dados da Edição Java/Indev.
Iluminação[]
Existem 16 níveis de iluminação para um bloco que variam de 0x0 (0, sem luz) a 0xF (15, luz total).