Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow access widener conversion in NeoForge #218

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions src/main/java/net/fabricmc/loom/api/NeoForgeExtensionAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,30 @@
package net.fabricmc.loom.api;

import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.SetProperty;

/**
* This is the NeoForge extension API available to build scripts.
*/
public interface NeoForgeExtensionAPI {
/**
* If true, {@linkplain LoomGradleExtensionAPI#getAccessWidenerPath() the project access widener file}
* will be remapped to an access transformer file if set.
*
* @return the property
*/
Property<Boolean> getConvertAccessWideners();

/**
* A set of additional access widener files that will be converted to access transformers
* {@linkplain #getConvertAccessWideners() if enabled}. The files are specified as paths in jar files
* (e.g. {@code path/to/my_aw.accesswidener}).
*
* @return the property
*/
SetProperty<String> getExtraAccessWideners();

/**
* A collection of all project access transformers.
* The collection should only contain AT files, and not directories or other files.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,33 @@

import org.gradle.api.Project;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.SetProperty;

import net.fabricmc.loom.api.NeoForgeExtensionAPI;

public class NeoForgeExtensionImpl implements NeoForgeExtensionAPI {
private final Property<Boolean> convertAccessWideners;
private final SetProperty<String> extraAccessWideners;
private final ConfigurableFileCollection accessTransformers;

@Inject
public NeoForgeExtensionImpl(Project project) {
convertAccessWideners = project.getObjects().property(Boolean.class).convention(false);
extraAccessWideners = project.getObjects().setProperty(String.class).empty();
accessTransformers = project.getObjects().fileCollection();
}

@Override
public Property<Boolean> getConvertAccessWideners() {
return convertAccessWideners;
}

@Override
public SetProperty<String> getExtraAccessWideners() {
return extraAccessWideners;
}

@Override
public ConfigurableFileCollection getAccessTransformers() {
return accessTransformers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,10 @@ public void run() {
});
});
}
} else if (extension.isNeoForge()) {
if (PropertyUtil.getAndFinalize(extension.getNeoForge().getConvertAccessWideners())) {
Aw2At.setup(getProject(), (RemapJarTask) getTasks().getByName(REMAP_JAR_TASK_NAME));
}
}
});

Expand Down
8 changes: 7 additions & 1 deletion src/main/java/net/fabricmc/loom/util/aw2at/Aw2At.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,13 @@ public static void setup(Project project, RemapJarTask remapJar) {
remapJar.getAtAccessWideners().add(awName);
}

remapJar.getAtAccessWideners().addAll(extension.getForge().getExtraAccessWideners());
if (extension.isForge()) {
remapJar.getAtAccessWideners().addAll(extension.getForge().getExtraAccessWideners());
} else if (extension.isNeoForge()) {
remapJar.getAtAccessWideners().addAll(extension.getNeoForge().getExtraAccessWideners());
} else {
throw new IllegalStateException("Unexpected extension!");
}
}

/**
Expand Down