Remapper extension improvements (#1024)

* Remapper extension improvements

* Fix

* Fix generics
This commit is contained in:
modmuss
2024-01-16 16:27:51 +00:00
committed by GitHub
parent 255b3b2b88
commit 5d2b75dc1d
4 changed files with 58 additions and 13 deletions

View File

@@ -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}.

View File

@@ -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;
}

View File

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

View File

@@ -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 {
}
}