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 2121import net .minecraftforge .registries .ForgeRegistries ;
2222import org .apache .commons .lang3 .tuple .Pair ;
2323import org .embeddedt .modernfix .ModernFix ;
24+ import org .embeddedt .modernfix .forge .classloading .ClassLoadHack ;
2425import org .embeddedt .modernfix .forge .classloading .ModFileScanDataDeduplicator ;
2526import org .embeddedt .modernfix .forge .ModernFixConfig ;
2627import org .embeddedt .modernfix .entity .EntityDataIDSyncHandler ;
@@ -46,6 +47,7 @@ public ModernFixForge() {
4647 MinecraftForge .EVENT_BUS .register (KubeUtil .class );
4748 PacketHandler .register ();
4849 ModFileScanDataDeduplicator .deduplicate ();
50+ ClassLoadHack .loadModClasses ();
4951 }
5052
5153 @ SubscribeEvent
You can’t perform that action at this time.
0 commit comments