Skip to content

Projektstruktur

Auf dieser Seite wird die Struktur eines Fabric-Mod-Projekts und der Zweck der einzelnen Dateien und Ordner im Projekt erläutert.

fabric.mod.json

Die Datei fabric.mod.json ist die Hauptdatei, die deinen Mod für den Fabric Loader beschreibt. Sie enthält Informationen wie die ID des Mods, die Version und die Abhängigkeiten.

Die wichtigsten Felder in der Datei fabric.mod.json sind:

  • id: Die Mod-ID, Welche einzigartig sein sollte.
  • name: Der Name des Mods.
  • environment: Die Umgebung in der dein Mod läuft, wie beispielsweise client, server, oder * für beide.
  • entrypoints: Die Einstiegspunkte, die dein Mod bereitstellt, wie beispielsweise main oder client.
  • depends: Die Mods, von denen dein Mod abhängt.
  • mixins: Die Mixins, die dein Mod bereitstellt.

Nachfolgend siehst du eine Beispieldatei fabric.mod.json - dies ist die Datei fabric.mod.json für das Referenzprojekt, das diese Dokumentationsseite betreibt.

Referenzprojekt fabric.mod.json
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": "*"
	}
}

Einstiegspunkte

Wie bereits erwähnt, enthält die Datei fabric.mod.json ein Feld namens entrypoints - dieses Feld wird verwendet, um die Einstiegspunkte anzugeben, die dein Mod bereitstellt.

Der Vorlagen-Mod-Generator erstellt standardmäßig sowohl einen main- als auch einen client-Einstiegspunkt - der main-Einstiegspunkt wird für allgemeinen Code verwendet, der client-Einstiegspunkt für Client-spezifischen Code. Diese Einstiegspunkte werden jeweils aufgerufen, wenn das Spiel beginnt.

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!");
	}
}

Das obige ist ein Beispiel für einen einfachen main-Einstiegspunkt, der eine Nachricht an die Konsole ausgibt, wenn das Spiel startet.

src/main/resources

Der Ordner src/main/resources wird verwendet, um die Ressourcen zu speichern, die dein Mod verwendet, wie Texturen, Modelle und Sounds.

Es ist auch der Ort, an dem sich die Datei fabric.mod.json und alle Mixin-Konfigurationsdateien befinden, die dein Mod verwendet.

Assets werden in einer Struktur gespeichert, die die Struktur von Ressourcenpaketen widerspiegelt - eine Textur für einen Block würde zum Beispiel in assets/modid/textures/block/block.png gespeichert werden.

src/client/resources

Der Ordner src/client/resources wird verwendet, um Client-spezifische Ressourcen zu speichern, wie Texturen, Modelle und Sounds, die nur auf der Client-Seite verwendet werden.

src/main/java

Der Ordner src/main/java wird verwendet, um den Java-Quellcode für deinen Mod zu speichern - er existiert sowohl auf der Client- als auch auf der Serverumgebung.

src/client/java

Der Ordner src/client/java wird verwendet, um clientspezifischen Java-Quellcode zu speichern, wie zum Beispiel Rendering-Code oder clientseitige Logik - wie zum Beispiel Blockfarbenprovider.