Lifecycle & Entrypoints
Entrypoints
In fabric.mod.json, definisci i punti di ingresso della tua mod. Fabric non cerca una classe “Main” a caso, ma segue specifiche interfacce.
```json “entrypoints”: { “main”: [ “com.example.ExampleMod” ], “client”: [ “com.example.client.ExampleModClient” ], “server”: [ “com.example.server.ExampleModServer” ] } ```
1. Common Initializer (main)
La classe definita qui deve implementare ModInitializer.
Questo codice viene eseguito sia sul Client che sul Server.
Qui registri:
- Blocchi
- Items
- Sounds
- Enchantments
- Eventi comuni
```java public class ExampleMod implements ModInitializer { @Override public void onInitialize() { // Registrazione blocchi, item, ecc. } } ```
2. Client Initializer (client)
Implementa ClientModInitializer.
Eseguito solo se il gioco è un Client fisico.
Qui registri:
- Renderers (Entity, BlockEntity)
- Keybindings
- Particle factories
- HUD/GUI screens
- Color providers (es. erba, foglie)
[!WARNING] Mai riferirsi a classi Client (es.
MinecraftClient,KeyBinding) nel codice Common o Server. Il server crasherà immediatamente (ClassNotFoundException).
3. Server Initializer (server)
Implementa DedicatedServerModInitializer.
Raro da usare, serve per logica esclusiva del server dedicato.