From f4ae4e2fefbb17d9d399e1c315405c56588721c7 Mon Sep 17 00:00:00 2001 From: MelanX Date: Mon, 22 Dec 2025 17:55:35 +0100 Subject: [PATCH] Fix default @Mod detection for multiple entrypoints closes #89 --- .../processor/modinit/ModInitProcessor.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/ap/java/org/moddingx/libx/annotation/processor/modinit/ModInitProcessor.java b/src/ap/java/org/moddingx/libx/annotation/processor/modinit/ModInitProcessor.java index 0f0de079..082e32d3 100644 --- a/src/ap/java/org/moddingx/libx/annotation/processor/modinit/ModInitProcessor.java +++ b/src/ap/java/org/moddingx/libx/annotation/processor/modinit/ModInitProcessor.java @@ -19,6 +19,7 @@ import javax.lang.model.type.TypeMirror; import javax.tools.Diagnostic; import java.util.*; +import java.util.stream.Collectors; public class ModInitProcessor extends Processor implements ModEnv { @@ -54,14 +55,23 @@ public void run(Set annotations, RoundEnvironment roundEn { TypeElement modAnnotation = this.typeElement(Classes.MOD); + TypeMirror modxType = this.forClass(Classes.MODX); Set elems = roundEnv.getElementsAnnotatedWith(modAnnotation); - if (elems.size() == 1) { - Element elem = elems.iterator().next(); - String modid = this.modidFromAnnotation(elems.iterator().next()); - if (modid != null) { - this.defaultModid = modid; - this.defaultMod = elem; - } + + Set modids = elems.stream() + .map(this::modidFromAnnotation) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + if (modids.size() == 1) { + Optional main = elems.stream() + .filter(e -> this.subTypeErasure(e.asType(), modxType)) + .findFirst(); + + main.ifPresent(element -> { + this.defaultModid = modids.iterator().next(); + this.defaultMod = element; + }); } }