mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-28 04:07:01 -05:00
Remapper extension improvements (#1024)
* Remapper extension improvements * Fix * Fix generics
This commit is contained in:
@@ -225,7 +225,7 @@ public interface LoomGradleExtensionAPI {
|
||||
|
||||
Property<Boolean> getSplitModDependencies();
|
||||
|
||||
<T extends RemapperParameters> void addRemapperExtension(Class<RemapperExtension<T>> remapperExtensionClass, Class<T> parametersClass, Action<T> parameterAction);
|
||||
<T extends RemapperParameters> void addRemapperExtension(Class<? extends RemapperExtension<T>> remapperExtensionClass, Class<T> parametersClass, Action<T> parameterAction);
|
||||
|
||||
/**
|
||||
* @return The minecraft version, as a {@link Provider}.
|
||||
|
||||
@@ -42,8 +42,8 @@ public interface TinyRemapperExtension {
|
||||
* @return A {@link TinyRemapper.AnalyzeVisitorProvider} or {@code null}.
|
||||
*/
|
||||
@Nullable
|
||||
default TinyRemapper.AnalyzeVisitorProvider getAnalyzeVisitorProvider() {
|
||||
return null;
|
||||
default TinyRemapper.AnalyzeVisitorProvider getAnalyzeVisitorProvider(Context context) {
|
||||
return getAnalyzeVisitorProvider();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,8 +52,8 @@ public interface TinyRemapperExtension {
|
||||
* @return A {@link TinyRemapper.ApplyVisitorProvider} or {@code null}.
|
||||
*/
|
||||
@Nullable
|
||||
default TinyRemapper.ApplyVisitorProvider getPreApplyVisitor() {
|
||||
return null;
|
||||
default TinyRemapper.ApplyVisitorProvider getPreApplyVisitor(Context context) {
|
||||
return getPreApplyVisitor();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,6 +62,47 @@ public interface TinyRemapperExtension {
|
||||
* @return A {@link TinyRemapper.ApplyVisitorProvider} or {@code null}.
|
||||
*/
|
||||
@Nullable
|
||||
default TinyRemapper.ApplyVisitorProvider getPostApplyVisitor(Context context) {
|
||||
return getPostApplyVisitor();
|
||||
}
|
||||
|
||||
interface Context {
|
||||
/**
|
||||
* @return The source namespace.
|
||||
*/
|
||||
String sourceNamespace();
|
||||
|
||||
/**
|
||||
* @return The target namespace.
|
||||
*/
|
||||
String targetNamespace();
|
||||
}
|
||||
|
||||
// Deprecated, for removal in Loom 1.6:
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #getAnalyzeVisitorProvider(Context)} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
@Nullable
|
||||
default TinyRemapper.AnalyzeVisitorProvider getAnalyzeVisitorProvider() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #getPreApplyVisitor(Context)} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
@Nullable
|
||||
default TinyRemapper.ApplyVisitorProvider getPreApplyVisitor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #getPostApplyVisitor(Context)} instead.
|
||||
*/
|
||||
@Deprecated(forRemoval = true)
|
||||
@Nullable
|
||||
default TinyRemapper.ApplyVisitorProvider getPostApplyVisitor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -401,7 +401,7 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends RemapperParameters> void addRemapperExtension(Class<RemapperExtension<T>> remapperExtensionClass, Class<T> parametersClass, Action<T> parameterAction) {
|
||||
public <T extends RemapperParameters> void addRemapperExtension(Class<? extends RemapperExtension<T>> remapperExtensionClass, Class<T> parametersClass, Action<T> parameterAction) {
|
||||
final ObjectFactory objectFactory = getProject().getObjects();
|
||||
final RemapperExtensionHolder holder;
|
||||
|
||||
@@ -413,7 +413,7 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
|
||||
holder = objectFactory.newInstance(RemapperExtensionHolder.class, RemapperParameters.None.INSTANCE);
|
||||
}
|
||||
|
||||
holder.getRemapperExtensionClassName().set(remapperExtensionClass.getName());
|
||||
holder.getRemapperExtensionClass().set(remapperExtensionClass);
|
||||
remapperExtensions.add(holder);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public abstract class RemapperExtensionHolder {
|
||||
}
|
||||
|
||||
@Input
|
||||
public abstract Property<String> getRemapperExtensionClassName();
|
||||
public abstract Property<Class<? extends RemapperExtension<?>>> getRemapperExtensionClass();
|
||||
|
||||
@Nested
|
||||
@Optional
|
||||
@@ -66,9 +66,11 @@ public abstract class RemapperExtensionHolder {
|
||||
tinyRemapperBuilder.extraPostApplyVisitor(new RemapperExtensionImpl(remapperExtension, sourceNamespace, targetNamespace));
|
||||
|
||||
if (remapperExtension instanceof TinyRemapperExtension tinyRemapperExtension) {
|
||||
final TinyRemapper.AnalyzeVisitorProvider analyzeVisitorProvider = tinyRemapperExtension.getAnalyzeVisitorProvider();
|
||||
final TinyRemapper.ApplyVisitorProvider preApplyVisitorProvider = tinyRemapperExtension.getPreApplyVisitor();
|
||||
final TinyRemapper.ApplyVisitorProvider postApplyVisitorProvider = tinyRemapperExtension.getPostApplyVisitor();
|
||||
final var context = new TinyRemapperContextImpl(sourceNamespace, targetNamespace);
|
||||
|
||||
final TinyRemapper.AnalyzeVisitorProvider analyzeVisitorProvider = tinyRemapperExtension.getAnalyzeVisitorProvider(context);
|
||||
final TinyRemapper.ApplyVisitorProvider preApplyVisitorProvider = tinyRemapperExtension.getPreApplyVisitor(context);
|
||||
final TinyRemapper.ApplyVisitorProvider postApplyVisitorProvider = tinyRemapperExtension.getPostApplyVisitor(context);
|
||||
|
||||
if (analyzeVisitorProvider != null) {
|
||||
tinyRemapperBuilder.extraAnalyzeVisitor(analyzeVisitorProvider);
|
||||
@@ -86,8 +88,7 @@ public abstract class RemapperExtensionHolder {
|
||||
|
||||
private RemapperExtension<?> newInstance(ObjectFactory objectFactory) {
|
||||
try {
|
||||
Class<? extends RemapperExtension> remapperExtensionClass = Class.forName(getRemapperExtensionClassName().get())
|
||||
.asSubclass(RemapperExtension.class);
|
||||
Class<? extends RemapperExtension<?>> remapperExtensionClass = getRemapperExtensionClass().get();
|
||||
|
||||
if (remapperParameters == RemapperParameters.None.INSTANCE) {
|
||||
return objectFactory.newInstance(remapperExtensionClass);
|
||||
@@ -125,4 +126,7 @@ public abstract class RemapperExtensionHolder {
|
||||
|
||||
private record RemapperContextImpl(Remapper remapper, String sourceNamespace, String targetNamespace) implements RemapperContext {
|
||||
}
|
||||
|
||||
private record TinyRemapperContextImpl(String sourceNamespace, String targetNamespace) implements TinyRemapperExtension.Context {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user