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.

TRtrolPublished 4 min read

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.

CamadaExemplo de nomeQuem usaEstável em versões
Ofuscadoa, field_5678Ninguém manualmenteNão
Intermediárioclass_1234, method_5678Binários de mod enviadosSim
Yarn / MojmapMinecraftClient, isPlayerSpawned()Desenvolvedores no momento da compilaçãoLegí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

  1. Um desenvolvedor escreve código com base em um mapeamento legível, como Yarn ou Mojmap.
  2. A compilação converte esses nomes para nomes intermediários.
  3. O mod é distribuído como um jar que referencia símbolos intermediários.
  4. 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