Skip to content

Struttura del Progetto

Questa pagina analizzerà la struttura di un progetto per una mod Fabric, e l'utilità di ogni file e cartella nel progetto.

fabric.mod.json

Il file fabric.mod.json è il file principale che descrive la tua mod al Loader di Fabric. Contiene informazioni come l'ID della mod, la versione, e le dipendenze.

Gli attributi più importanti nel file fabric.mod.json sono:

  • id: L'ID della mod, che dovrebbe essere unico.
  • name: Il nome della mod.
  • environment: L'ambiente in cui la tua mod viene eseguita, come client, server, o * per entrambi.
  • entrypoints: Gli entrypoint che la tua mod fornisce, come main o client.
  • depends: Le mod da cui la tua mod dipende.
  • mixins: I mixin che la tua mod fornisce.

Puoi trovare un esempio del file fabric.mod.json sotto - questo è il file fabric.mod.json per il progetto di riferimento su cui è basato questo sito di documentazione.

fabric.mod.json del Progetto di Riferimento
json
{
	"schemaVersion": 1,
	"id": "fabric-docs-reference",
	"version": "1.0.0",
	"name": "Fabric docs reference",
	"icon": "assets/fabric-docs-reference/icon.png",
	"environment": "*",
	"entrypoints": {
		"main": [
			"com.example.docs.FabricDocsReference",
			"com.example.docs.event.FabricDocsReferenceEvents",
			"com.example.docs.command.FabricDocsReferenceCommands",
			"com.example.docs.effect.FabricDocsReferenceEffects",
			"com.example.docs.potion.FabricDocsReferencePotions",
			"com.example.docs.sound.FabricDocsReferenceSounds",
			"com.example.docs.damage.FabricDocsReferenceDamageTypes"
		],
		"client": [
			"com.example.docs.FabricDocsReferenceClient",
			"com.example.docs.rendering.RenderingConceptsEntrypoint",
			"com.example.docs.rendering.HudRenderingEntrypoint",
			"com.example.docs.client.command.FabricDocsReferenceClientCommands"
		],
		"fabric-datagen": [
			"com.example.docs.FabricDocsReferenceDataGenerator",
			"com.example.docs.damage.FabricDocsReferenceDamageTypesDataGenerator"
		]
	},
	"mixins": [
		"fabric-docs-reference.mixins.json",
		{
			"config": "fabric-docs-reference.client.mixins.json",
			"environment": "client"
		}
	],
	"depends": {
		"fabricloader": ">=0.15.3",
		"minecraft": "~1.20.4",
		"java": ">=17",
		"fabric-api": "*"
	}
}

Entrypoint

Come detto in precedenza, il file fabric.mod.json contiene un attributo entrypoints - questo attributo è utilizzato per specificare gli entrypoint che la tua mod fornisce.

Il generatore di mod modello crea sia un entrypoint main che client predefiniti - l'entrypoint main è utilizzato per codice comune, mentre l'entrypoint client è utilizzato per codice client specifico. Questi entrypoint vengono chiamati rispettivamente quando il gioco viene avviato.

java
public class FabricDocsReference implements ModInitializer {
	// This logger is used to write text to the console and the log file.
	// It is considered best practice to use your mod id as the logger's name.
	// That way, it's clear which mod wrote info, warnings, and errors.
	public static final String MOD_ID = "fabric-docs-reference";
	public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);

	@Override
	public void onInitialize() {
		// This code runs as soon as Minecraft is in a mod-load-ready state.
		// However, some things (like resources) may still be uninitialized.
		// Proceed with mild caution.

		LOGGER.info("Hello Fabric world!");
	}
}

Quello sopra è un esempio di un semplice entrypoint main che logga un messaggio alla console quando il gioco si avvia.

src/main/resources

La cartella src/main/resources è utilizzata per memorizzare le risorse che la tua mod utilizza, come texture, modelli, e suoni.

È anche la posizione di fabric.mod.json e di qualsiasi file di configurazione mixin che la tua mod utilizza.

Le risorse sono memorizzate in una struttura che rispecchia la struttura dei pacchetti risorse - per esempio, una texture per un blocco verrebbe memorizzata in assets/modid/textures/block/block.png.

src/client/resources

La cartella src/client/resources è utilizzata per memorizzare risorse client specifiche, come texture, modelli, e suoni che sono solo utilizzati dal lato client.

src/main/java

La cartella src/main/java è utilizzata per memorizzare il codice sorgente Java per la tua mod - esiste sia su ambienti client e server.

src/client/java

La cartella src/client/java è utilizzata per memorizzare codice sorgente Java client specifico, come codice per il rendering o logica del lato client - come provider per il colore dei blocchi.