Skip to content

Estructura de Proyecto

Esta página cubrirá la estructura de un proyecto de mod de Fabric, y el propósito de cada archivo y folder en el proyecto.

fabric.mod.json

El archivo fabric.mod.json es el archivo principal que describe tu mod al Lanzador de Fabric. Contiene información como el ID del mod, versión, y dependencias.

Los campos más importantes en el archivo fabric.mod.json son:

  • id: El ID del mod, el cual debería ser único.
  • name: El nombre del mod.
  • enviornment: El entorno en el que tu mod será corrido en, como client, server o * para ambos.
  • entrypoints: Los puntos de entrada que tu mod provee, como main o client.
  • depends: Los mods en los que tu mod depende en.
  • mixins: Los mixins que tu mod provee.

Puedes ver un ejemplo del archivo fabric.mod.json abajo - este es el archivo fabric.mod.json del proyecto de referencia que este sitio de documentación utiliza.

Proyecto de Referencia 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": "*"
	}
}

Puntos de Entrada

Como ya fue mencionado, el archivo fabric.mod.json contiene un campo llamado entrypoints - este campo es usado para especificar los puntos de entrada que tu mod usa.

El generador de plantillas de mods crea los puntos de entrada main y client por defecto - el punto de entrada de main es usado para código común, mientras que el punto de entrada de client es usado para código exclusivo o específico para el cliente. Estos puntos de entrada son llamados respectivamente cuando el juego comienza.

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

Lo anterior es un ejemplo de un punto de entrada de main simple, el cual manda un mensaje a la consola cuando el juego empieza.

src/main/resources

El folder src/main/resources es usado para guardar los recursos que tu mod usa, como las texturas, modelos, y sonidos.

Aquí también se puede encontrar el archivo fabric.mod.json y cualquier archivo de configuración de mixin que tu mod use.

Los assets o recursos son guardados en una estructura que es similar a la estructura de los paquetes de recursos - por ejemplo, una textura para un bloque sería guardada en assets/modid/textures/block/block.png.

src/client/resources

El folder de src/client/resources es usado para guardar recursos específicos al cliente, como las texturas, modelos, y sonidos que solo son usados en el lado del cliente.

src/main/java

El folder de src/main/java es usado para guardar el código fuente de Java para tu mod - existe tanto los entornos del cliente y el servidor.

src/client/java

El folder de src/client/java es usado para guardar el código fuente de Java exclusivo del cliente, como código para renderización o lógica para el lado del cliente - como proveedores de colores de bloque.