Eventi & Mixins
Events (Fabric API)
Fabric offre molti eventi “sicuri” per interagire con il gioco senza rompere tutto. Usa sempre gli eventi se possibile.
Esempio: Fare qualcosa quando un blocco viene rotto.
```java PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> { if (state.getBlock() == Blocks.DIAMOND_ORE) { player.sendMessage(Text.of(“Hai rotto un diamante!”), false); } }); ```
Mixins
Se non c’è un evento per quello che vuoi fare, devi usare i Mixin. I Mixin ti permettono di iniettare il tuo codice dentro le classi di Minecraft (o di altre mod!) a runtime.
[!CAUTION] I Mixin sono potenti ma pericolosi. Se due mod modificano lo stesso metodo in modi incompatibili, il gioco crasherà.
Esempio: Cambiare il titolo del gioco
Vogliamo modificare la classe TitleScreen.
```java @Mixin(TitleScreen.class) public class TitleScreenMixin {
@Inject(at = @At("HEAD"), method = "init()V")
private void init(CallbackInfo info) {
System.out.println("Mixin attivato! Sono nella schermata dei titoli.");
}
} ```
Struttura Mixin
@Mixin: Quale classe stiamo modificando?@Inject: Dove inseriamo il codice? (HEAD = inizio, RETURN = fine).method: La firma esatta del metodo target.CallbackInfo: Oggetto per controllare il flusso (es. cancellare l’esecuzione originale).