Skip to content

Commit 254430e

Browse files
authored
Merge pull request #1033 from TheWakz/feature/improve-minecraft-entrypoints
Feature/improve minecraft entrypoints
2 parents f33652a + bb485a4 commit 254430e

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

recaf-core/src/main/java/software/coley/recaf/services/analysis/entry/FabricModEntryPointDiscovery.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ public List<EntryPoint> findEntryPoints(@Nonnull Workspace workspace, @Nonnull W
4545
ClassPathNode classPath = null;
4646
Boolean isModInitializer = null;
4747
for (MethodMember method : cls.getMethods()) {
48-
// Must be a common or client initializer method name.
48+
// Must be a common, client, or server initializer method name.
4949
String methodName = method.getName();
50-
if (!methodName.equals("onInitialize") && !methodName.equals("onInitializeClient"))
50+
if (!methodName.equals("onInitialize") && !methodName.equals("onInitializeClient") && !methodName.equals("onInitializeServer"))
5151
continue;
5252

5353
// Lazily check if this class is a mod-initializer subtype.
@@ -70,6 +70,7 @@ public List<EntryPoint> findEntryPoints(@Nonnull Workspace workspace, @Nonnull W
7070
private static boolean isInitializer(@Nonnull InheritanceGraph graph, @Nonnull String className) {
7171
// Fabric and Quilt (lol) both use the same interface names
7272
return graph.isAssignableFrom("net/fabricmc/api/ClientModInitializer", className)
73-
|| graph.isAssignableFrom("net/fabricmc/api/ModInitializer", className);
73+
|| graph.isAssignableFrom("net/fabricmc/api/ModInitializer", className)
74+
|| graph.isAssignableFrom("net/fabricmc/api/DedicatedServerModInitializer", className);
7475
}
7576
}

recaf-core/src/main/java/software/coley/recaf/services/analysis/entry/ForgeModEntryPointDiscovery.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public List<EntryPoint> findEntryPoints(@Nonnull Workspace workspace, @Nonnull W
5757
);
5858
for (String annotation : annotations) {
5959
if ("Lnet/minecraftforge/fml/common/Mod;".equals(annotation)
60-
|| "Lnet/neoforged/fml/common/Mod;".equals(annotation)) {
60+
|| "Lnet/neoforged/fml/common/Mod;".equals(annotation)
61+
|| "Lcpw/mods/fml/common/Mod;".equals(annotation)) {
6162
classPath = PathNodes.classPath(workspace, resource, bundle, cls);
6263
classEntry = new EntryPoint(kind(), classPath, null);
6364
break;
@@ -74,6 +75,14 @@ public List<EntryPoint> findEntryPoints(@Nonnull Workspace workspace, @Nonnull W
7475
|| "(Lnet/neoforged/fml/event/lifecycle/FMLClientSetupEvent;)V".equals(desc)
7576
|| "(Lnet/neoforged/fml/event/lifecycle/FMLCommonSetupEvent;)V".equals(desc)
7677
|| "(Lnet/neoforged/fml/event/lifecycle/FMLDedicatedServerSetupEvent;)V".equals(desc)
78+
// Legacy Forge 1.8 - 1.12.2 lifecycle events
79+
|| "(Lnet/minecraftforge/fml/common/event/FMLPreInitializationEvent;)V".equals(desc)
80+
|| "(Lnet/minecraftforge/fml/common/event/FMLInitializationEvent;)V".equals(desc)
81+
|| "(Lnet/minecraftforge/fml/common/event/FMLPostInitializationEvent;)V".equals(desc)
82+
// Legacy Forge 1.6.4 - 1.7.10 lifecycle events
83+
|| "(Lcpw/mods/fml/common/event/FMLPreInitializationEvent;)V".equals(desc)
84+
|| "(Lcpw/mods/fml/common/event/FMLInitializationEvent;)V".equals(desc)
85+
|| "(Lcpw/mods/fml/common/event/FMLPostInitializationEvent;)V".equals(desc)
7786
// Not sure if we should consider events like this as entry points...
7887
// || "(Lnet/minecraftforge/event/server/ServerAboutToStartEvent;)V".equals(desc)
7988
// || "(Lnet/minecraftforge/event/server/ServerStartingEvent;)V".equals(desc)

0 commit comments

Comments
 (0)