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; + }); } }