Learn · concepts

Cosa sono gli intermediari? Spiegazione delle mappe di Minecraft

Fabric offre un livello di denominazione stabile per il codice Minecraft offuscato. I mod continuano a funzionare tra le versioni senza interrompersi quando i campi vengono rinominati.

TRtrolPublished 4 min read

Cos'è Intermediary?

Intermediary è lo strato di denominazione stabile che Fabric sovrappone al codice offuscato di Minecraft. Mojang distribuisce il gioco con nomi di classi, campi e metodi offuscati che cambiano ad ogni rilascio. Intermediary assegna a ciascuno di questi un nome fisso che rimane lo stesso tra le versioni, in modo che un mod compilato continui a trovare il codice che modifica anche dopo che il gioco viene aggiornato sottostante.

Consideralo come un contratto: Fabric promette che se qualcosa esiste nel gioco, avrà lo stesso nome Intermediary in tutte le versioni. È questo contratto che permette a un mod distribuito come jar compilato di continuare a funzionare su nuove versioni senza dover essere ricompilato.

Cos'è effettivamente Intermediary

Intermediary è un insieme di mappature: una tabella di ricerca che associa ogni simbolo di Minecraft offuscato a un nome stabile, generato automaticamente. Una classe che il gioco chiama a potrebbe diventare class_1234 in Intermediary. Il nome è brutto, ma è permanente per quel simbolo in tutte le versioni.

Mojang offusca il gioco in ogni build. Altrimenti, i nomi cambierebbero da una versione all'altra, motivo per cui un mod compilato con nomi offuscati grezzi si interrompe non appena il gioco viene aggiornato. Intermediary fissa quei nomi in modo che sia la mappatura, e non il mod, assorba i cambiamenti.

Perché i mod di Fabric ne hanno bisogno

I mod vengono distribuiti compilati rispetto ai nomi intermediari, non ai nomi leggibili a cui uno sviluppatore scrive. Questa singola decisione è il motivo per cui un mod di Fabric può continuare a funzionare su una nuova build di gioco senza una ricompilazione in molti casi.

Quando il gioco viene avviato, Fabric carica la mappatura intermediaria per quella versione e rimappa le classi di gioco offuscate ai nomi stabili che il mod si aspetta. Il mod e il gioco si incontrano a metà su un set di nomi che nessuno dei due distribuisce direttamente.

Mappature intermediarie rispetto alle mappature degli sviluppatori

Gli sviluppatori non leggono né scrivono class_1234. Lavorano rispetto a una mappatura leggibile come Yarn o Mojmap, che forniscono nomi descrittivi ai simboli. Al momento della compilazione, questi nomi leggibili vengono compilati in Intermediario per la distribuzione.

LivelloEsempio di nomeChi lo usaStabile tra le versioni
Offuscatoa, field_5678Nessuno manualmenteNo
Intermediarioclass_1234, method_5678Binari dei mod distribuiti
Yarn / MojmapMinecraftClient, isPlayerSpawned()Sviluppatori al momento della compilazioneLeggibile, tracciato per versione

La suddivisione consente agli sviluppatori di codificare con nomi amichevoli mentre la cosa che viene effettivamente distribuita rimane stabile per la versione. Le mappature leggibili possono essere sostituite; Intermediario è il denominatore comune su cui tutti concordano.

Come si inserisce nel ciclo di vita di un mod

  1. Uno sviluppatore scrive codice basandosi su una mappatura leggibile come Yarn o Mojmap.
  2. La build compila quei nomi in nomi intermedi.
  3. Il mod viene distribuito come un jar che fa riferimento a simboli intermedi.
  4. Al lancio, Fabric rimappa il gioco in esecuzione dai suoi nomi offuscati agli intermedi, in modo che il mod e il gioco siano allineati.

Questo è il motivo per cui le mappature sono una parte silenziosa ma fondamentale del modding di Fabric: sono il contratto che mantiene i mod puntati al codice corretto dopo ogni aggiornamento.

DOMANDE FREQUENTI