Learn · mappings
O que são mapas do Minecraft? Explicado
Mapas do Minecraft são tabelas de nomes que transformam código ofuscado como a.b.c em nomes legíveis para que mods e clientes possam ler e interceptar o jogo.
O que são os mapas de Minecraft?
Os mapas de Minecraft são tabelas de tradução que associam os símbolos ofuscados do jogo a nomes legíveis por humanos. A versão comercial é enviada com classes, métodos e campos renomeados para strings minúsculas e sem sentido, como a, bk ou c.d.e. Um conjunto de mapas como MCP, Yarn ou os mapas da Mojang sobrepõe nomes reais sobre essa bagunça para que um desenvolvedor possa ler o código e se conectar a ele.
Sem um mapa, o jogo é tecnicamente aberto, mas praticamente ilegível. Aplique um e um campo rotulado como field_71090_bL é lido como algo como experienceLevel, e todo o código-fonte de repente parece software normal.
Por que o Minecraft precisa de mapas?
Os mapas existem porque a Mojang ofusca o Minecraft antes de cada lançamento. A etapa de compilação reescreve cada classe e membro para tokens curtos. Isso reduz um pouco o tamanho do jar, mas principalmente dificulta o acompanhamento do código. Essa é a barreira que todo mod e cliente precisa superar.
Um mapa é a chave para essa barreira. É uma lista um-para-um: nome ofuscado à esquerda, nome legível à direita. Aplique-o em todo o jogo e o jar embaralhado se transforma de volta em uma árvore de origem utilizável.
Os três conjuntos de mapeamento sobre os quais você ouvirá
Existem muitos projetos de mapeamento, mas três dominam a conversa. Cada um pertence a uma era diferente e a um proprietário diferente.
MCP (Mod Coder Pack)
O MCP é o mapeamento comunitário que impulsionou a modificação antes da versão 1.14. Ele funcionava em duas camadas. O projeto Searge gerava nomes intermediários estáveis, mas pouco atraentes, como func_70071_h_, e o MCP então os vestia com nomes amigáveis, como onUpdate. A maioria dos clientes autônomos mais antigos da versão 1.8.9 ainda compilam contra uma árvore mapeada pelo MCP e direcionam sua reflexão para os nomes do MCP ou Searge.
Yarn
O Yarn é o mapeamento aberto mantido pela FabricMC para o ecossistema Fabric. É escrito pela comunidade, licenciamento livre e tende a ser atualizado rapidamente quando uma nova versão do Minecraft é lançada. Essa rápida atualização é uma grande parte do motivo pelo qual os mods Fabric alcançam novas versões antecipadamente.
Mapeamentos da Mojang
Os mapeamentos da Mojang, frequentemente abreviados para Mojmap, são os próprios nomes oficiais da Mojang, publicados junto com cada lançamento desde a versão 1.14.4. Como eles vêm diretamente da fonte, os nomes correspondem ao que os desenvolvedores da Mojang realmente chamam as coisas. Eles efetivamente substituíram o MCP e o Searge como o ponto de partida padrão para qualquer cliente moderno.
MCP vs Yarn vs mapeamentos da Mojang
A versão rápida: o MCP é a cadeia de ferramentas legada, os mappings da Mojang são a substituição oficial e o Yarn fica entre eles como o conjunto da comunidade aberta que a maioria dos projetos Fabric usa. Aqui está como os três se comparam nos pontos que importam.
| MCP | Yarn | Mappings da Mojang | |
|---|---|---|---|
| Mantido por | Comunidade (Searge + MCP) | FabricMC | Mojang |
| Era | Pré-1.14 (1.7 a 1.12) | 1.14 em diante | 1.14.4 em diante |
| Origem | Derivado da comunidade | Derivado da comunidade | Oficial de primeira mão |
| Uso típico | Clientes legados, modding antigo | Fabric | Fabric, Forge, NeoForge |
| Status | Descontinuado em favor do Mojmap | Ativo | Ativo padrão |
Como os mappings se encaixam em uma cadeia de ferramentas de modding
Os mappings fazem seu trabalho em tempo de compilação, nunca em tempo de execução. A ferramenta de build pega o jogo ofuscado, executa o mapping sobre ele e entrega ao desenvolvedor uma cópia legível para escrever. Quando o mod está finalizado, a cadeia de ferramentas o remapeia de volta para que suas referências se alinhem com os nomes ofuscados que estão no jar real do jogador.
Os loaders abordam isso de forma diferente. O Fabric constrói com base no Yarn ou em uma base mapeada pela Mojang, dependendo do projeto. Historicamente, o Forge dividia o trabalho, lendo o código por meio de um mapping enquanto executava com outro. A licença dos mappings da Mojang é permissiva o suficiente para usar em tempo de build, razão pela qual a maioria das cadeias de ferramentas atuais se apoia neles.
Intermediário: a camada que mantém os mods estáveis
Existe um quarto nome que vale a pena conhecer. Intermediário é uma camada estável que o Fabric utiliza para que um mod compilado continue funcionando mesmo quando os mappings legíveis mudam. Os nomes legíveis (Yarn ou Mojmap) ficam por cima para os humanos, enquanto o Intermediário permanece constante por baixo para o jogo em execução. O Searge desempenhou o mesmo papel no mundo do MCP. A ideia é simples: uma camada fixa para o binário, uma camada amigável para o desenvolvedor.
Perguntas Frequentes
Não. Um mapeamento apenas renomeia as coisas para a pessoa que está escrevendo o código. O mod final é remapeado de volta para os nomes ofuscados, então os nomes legíveis com os quais você trabalha nunca chegam ao jogo do jogador.
História e propriedade. O MCP surgiu primeiro e manteve a modificação durante a era pré-1.14. O Yarn cresceu junto com o Fabric como um conjunto comunitário aberto, e os mapeamentos da Mojang chegaram quando a Mojang começou a enviar nomes oficiais em 1.14.4.
Para o Minecraft atual, os mapeamentos da Mojang ou o Yarn são as opções padrão. O MCP é relevante principalmente para trabalhos da era legada 1.8.9, onde o antigo conjunto de ferramentas ainda está em uso.
Não. Um mapeamento é uma tabela de nomes. Um carregador de mods como o Fabric é o ambiente de execução que injeta mods no jogo. Eles cooperam, mas resolvem problemas completamente diferentes.
Obtenha Terminus
Built to track Minecraft's mappings so its modules keep working across versions.