File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed
forge/src/main/java/org/embeddedt/modernfix/forge Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change 1+ package org .embeddedt .modernfix .forge .classloading ;
2+
3+ /**
4+ * Sometimes mods have classes that circularly reference each other. If each of these classes ends up being loaded
5+ * from two mods, a deadlock occurs.
6+ *
7+ * To avoid this problem we maintain a list of classes that should be loaded early and do it via Class.forName.
8+ */
9+ public class ClassLoadHack {
10+ private static final String [] classesToLoadEarly = new String [] {
11+ "team.creative.creativecore.common.config.ConfigTypeConveration" ,
12+ "team.creative.creativecore.common.util.ingredient.CreativeIngredient"
13+ };
14+
15+ public static void loadModClasses () {
16+ for (String clzName : classesToLoadEarly ) {
17+ try {
18+ Class .forName (clzName );
19+ } catch (Throwable e ) {
20+ if (!(e instanceof ClassNotFoundException )) {
21+ e .printStackTrace ();
22+ }
23+ }
24+ }
25+ }
26+ }
Original file line number Diff line number Diff line change 2222import net .minecraftforge .registries .RegisterEvent ;
2323import net .minecraftforge .server .ServerLifecycleHooks ;
2424import org .embeddedt .modernfix .ModernFix ;
25+ import org .embeddedt .modernfix .forge .classloading .ClassLoadHack ;
2526import org .embeddedt .modernfix .forge .classloading .ModFileScanDataDeduplicator ;
2627import org .embeddedt .modernfix .forge .ModernFixConfig ;
2728import org .embeddedt .modernfix .entity .EntityDataIDSyncHandler ;
@@ -44,6 +45,7 @@ public ModernFixForge() {
4445 ModLoadingContext .get ().registerConfig (ModConfig .Type .COMMON , ModernFixConfig .COMMON_CONFIG );
4546 PacketHandler .register ();
4647 ModFileScanDataDeduplicator .deduplicate ();
48+ ClassLoadHack .loadModClasses ();
4749 }
4850
4951 @ SubscribeEvent
You can’t perform that action at this time.
0 commit comments