11package com .github .gtexpert .advancedbackupspatch .mixin ;
22
3+ import java .util .function .Consumer ;
4+
5+ import computer .heather .advancedbackups .AdvancedBackups ;
6+ import computer .heather .advancedbackups .core .ABCore ;
37import computer .heather .advancedbackups .network .NetworkHandler ;
48
59import net .minecraftforge .common .MinecraftForge ;
610import net .minecraftforge .fml .common .event .FMLPreInitializationEvent ;
711import net .minecraftforge .fml .common .eventhandler .EventBus ;
812
913import org .spongepowered .asm .mixin .Mixin ;
14+ import org .spongepowered .asm .mixin .Shadow ;
1015import org .spongepowered .asm .mixin .injection .At ;
1116import org .spongepowered .asm .mixin .injection .Inject ;
1217import org .spongepowered .asm .mixin .injection .Redirect ;
1318import org .spongepowered .asm .mixin .injection .callback .CallbackInfo ;
1419
15- import computer .heather .advancedbackups .AdvancedBackups ;
16-
1720@ Mixin (value = AdvancedBackups .class , remap = false )
1821public abstract class AdvancedBackupsMixin {
1922
23+ @ Shadow
24+ public static Consumer <String > infoLogger ;
25+
26+ @ Shadow
27+ public static Consumer <String > warningLogger ;
28+
29+ @ Shadow
30+ public static Consumer <String > errorLogger ;
31+
2032 /**
2133 * Disable EVENT_BUS.register(this) in the constructor.
2234 * The mod container is not yet established at construction time, so defer to preInit.
@@ -48,4 +60,16 @@ private void onPreInit(FMLPreInitializationEvent event, CallbackInfo ci) {
4860 MinecraftForge .EVENT_BUS .register (this );
4961 NetworkHandler .registerMessages ();
5062 }
51- }
63+
64+ /**
65+ * Set ABCore loggers after preInit sets them on AdvancedBackups.
66+ * Without this, ABCore.infoLogger is null on the client side (only set in onServerStarting),
67+ * causing NPE in ClientConfigManager when receiving PacketToastTest.
68+ */
69+ @ Inject (method = "preInit" , at = @ At ("TAIL" ))
70+ private void onPreInitTail (FMLPreInitializationEvent event , CallbackInfo ci ) {
71+ ABCore .infoLogger = infoLogger ;
72+ ABCore .warningLogger = warningLogger ;
73+ ABCore .errorLogger = errorLogger ;
74+ }
75+ }
0 commit comments