Learn · concepts
O que é um Intermediário? Mapeamentos do Minecraft Explicados
Intermediário é a camada de nomenclatura estável do Fabric para código do Minecraft ofuscado. As mods continuam funcionando entre as versões sem quebrar quando os campos são renomeados.
O que é Intermediário?
Intermediário é a camada de nomenclatura estável que o Fabric coloca sobre o código ofuscado do Minecraft. A Mojang envia o jogo com nomes de classe, campos e métodos embaralhados que mudam a cada lançamento. O Intermediário atribui a cada um desses um nome fixo que permanece o mesmo em todas as versões, para que um mod compilado continue encontrando o código que ele corrige mesmo após o jogo ser atualizado por baixo.
Pense nisso como um contrato: o Fabric promete que, se algo existir no jogo, ele terá o mesmo nome de Intermediário em todas as versões. Esse contrato é o que permite que um mod enviado como um jar compilado continue funcionando em novas versões sem precisar ser recompilado.
O que o Intermediário realmente é
O Intermediário é um conjunto de mapeamentos: uma tabela de consulta que associa cada símbolo do Minecraft ofuscado a um nome estável e gerado por máquina. Uma classe que o jogo chama de a pode se tornar class_1234 no Intermediário. O nome é feio, mas é permanente para aquele símbolo em todas as versões.
A Mojang ofusca o jogo em cada build. Os nomes, caso contrário, mudariam de lançamento para lançamento, razão pela qual um mod compilado contra nomes ofuscados brutos falha no momento em que o jogo é atualizado. O Intermediário congela esses nomes para que o mapeamento, e não o mod, absorva a mudança.
Por que os mods do Fabric precisam disso
Os mods são distribuídos compilados contra nomes intermediários, e não os nomes legíveis que um desenvolvedor escreve. Essa única decisão é o motivo pelo qual um mod do Fabric pode continuar rodando em uma nova versão do jogo sem precisar ser recompilado em muitos casos.
Quando o jogo é iniciado, o Fabric carrega o mapeamento intermediário para aquela versão e remapeia as classes do jogo ofuscadas para os nomes estáveis que o mod espera. O mod e o jogo se encontram no meio em um conjunto de nomes que nenhum deles envia bruto.
Mapeamentos intermediários vs. mapeamentos do desenvolvedor
Os desenvolvedores não leem ou escrevem class_1234. Eles trabalham contra um mapeamento legível como Yarn ou Mojmap, que fornecem nomes descritivos aos símbolos. No momento da compilação, esses nomes legíveis são compilados para Intermediário para distribuição.
| Camada | Exemplo de nome | Quem usa | Estável em versões |
|---|---|---|---|
| Ofuscado | a, field_5678 | Ninguém manualmente | Não |
| Intermediário | class_1234, method_5678 | Binários de mod enviados | Sim |
| Yarn / Mojmap | MinecraftClient, isPlayerSpawned() | Desenvolvedores no momento da compilação | Legível, rastreado por versão |
A divisão permite que os desenvolvedores codifiquem contra nomes amigáveis, enquanto a coisa que realmente é enviada permanece estável em relação à versão. Mapeamentos legíveis podem ser trocados; o Intermediário é o piso comum com o qual todos concordam.
Como se encaixa no ciclo de vida de um mod
- Um desenvolvedor escreve código com base em um mapeamento legível, como Yarn ou Mojmap.
- A compilação converte esses nomes para nomes intermediários.
- O mod é distribuído como um jar que referencia símbolos intermediários.
- Na inicialização, o Fabric remapeia o jogo em execução de seus nomes ofuscados para intermediários, para que o mod e o jogo estejam alinhados.
É por isso que os mapeamentos são uma parte silenciosa, mas essencial, da modding do Fabric: eles são o contrato que garante que os mods apontem para o código correto após cada atualização.
Perguntas Frequentes
Não. Yarn é um mapeamento legível do código dos desenvolvedores. Intermediário é a camada estável e gerada por máquina contra a qual os mods compilados são realmente enviados. Yarn nomeia compilações para Intermediário em tempo de compilação.
São gerados, não escritos. Nomes como class_1234 precisam apenas ser únicos e permanentes, não bonitos. A legibilidade é tratada pelo Yarn ou Mojmap por cima.
Não. O intermediário mantém os nomes estáveis, mas se a Mojang remover ou reescrever um método, o código subjacente desaparece, independentemente do nome. Isso reduz a quebra, mas não a elimina.
Não realmente. Ele funciona nos bastidores, dentro do Fabric. Você só o encontra como desenvolvedor ou ao ler um log de falha que menciona um símbolo intermediário.