Fix merge conflicts

Signed-off-by: shedaniel <daniel@shedaniel.me>
This commit is contained in:
shedaniel
2021-07-20 23:44:11 +08:00
parent cea80b0119
commit 695863367f
25 changed files with 364 additions and 45 deletions

View File

@@ -40,6 +40,13 @@ import net.fabricmc.loom.configuration.InstallerData;
import net.fabricmc.loom.configuration.LoomDependencyManager;
import net.fabricmc.loom.configuration.processors.JarProcessorManager;
import net.fabricmc.loom.configuration.providers.MinecraftProviderImpl;
import net.fabricmc.loom.configuration.providers.forge.FieldMigratedMappingsProvider;
import net.fabricmc.loom.configuration.providers.forge.ForgeProvider;
import net.fabricmc.loom.configuration.providers.forge.ForgeUniversalProvider;
import net.fabricmc.loom.configuration.providers.forge.ForgeUserdevProvider;
import net.fabricmc.loom.configuration.providers.forge.McpConfigProvider;
import net.fabricmc.loom.configuration.providers.forge.PatchProvider;
import net.fabricmc.loom.configuration.providers.forge.SrgProvider;
import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMappedProvider;
import net.fabricmc.loom.extension.LoomFiles;
@@ -80,7 +87,7 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI {
}
default MappingsProviderImpl getMappingsProvider() {
return getDependencyManager().getProvider(MappingsProviderImpl.class);
return getDependencyManager().getProvider(isForge() ? FieldMigratedMappingsProvider.class : MappingsProviderImpl.class);
}
default MinecraftMappedProvider getMinecraftMappedProvider() {
@@ -105,4 +112,31 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI {
}
MixinApExtension getMixinApExtension();
// ===================
// Architectury Loom
// ===================
default PatchProvider getPatchProvider() {
return getDependencyManager().getProvider(PatchProvider.class);
}
default McpConfigProvider getMcpConfigProvider() {
return getDependencyManager().getProvider(McpConfigProvider.class);
}
default SrgProvider getSrgProvider() {
return getDependencyManager().getProvider(SrgProvider.class);
}
default ForgeUniversalProvider getForgeUniversalProvider() {
return getDependencyManager().getProvider(ForgeUniversalProvider.class);
}
default ForgeUserdevProvider getForgeUserdevProvider() {
return getDependencyManager().getProvider(ForgeUserdevProvider.class);
}
default ForgeProvider getForgeProvider() {
return getDependencyManager().getProvider(ForgeProvider.class);
}
}

View File

@@ -26,17 +26,25 @@ package net.fabricmc.loom.api;
import java.io.File;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Supplier;
import org.gradle.api.Action;
import org.gradle.api.NamedDomainObjectContainer;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.SourceSet;
import org.jetbrains.annotations.ApiStatus;
import net.fabricmc.loom.api.decompilers.LoomDecompiler;
import net.fabricmc.loom.configuration.ide.RunConfig;
import net.fabricmc.loom.configuration.ide.RunConfigSettings;
import net.fabricmc.loom.configuration.launch.LaunchProviderSettings;
import net.fabricmc.loom.configuration.processors.JarProcessor;
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuilder;
import net.fabricmc.loom.util.ModPlatform;
/**
* This is the public api available exposed to build scripts.
@@ -88,4 +96,67 @@ public interface LoomGradleExtensionAPI {
void setCustomManifest(String customManifest);
String getCustomManifest();
// ===================
// Architectury Loom
// ===================
void silentMojangMappingsLicense();
boolean isSilentMojangMappingsLicenseEnabled();
Property<ModPlatform> getPlatform();
default boolean isForge() {
return getPlatform().get() == ModPlatform.FORGE;
}
boolean supportsInclude();
void setGenerateSrgTiny(Boolean generateSrgTiny);
boolean shouldGenerateSrgTiny();
void launches(Action<NamedDomainObjectContainer<LaunchProviderSettings>> action);
NamedDomainObjectContainer<LaunchProviderSettings> getLaunchConfigs();
List<String> getDataGenMods();
default boolean isDataGenEnabled() {
return isForge() && !getDataGenMods().isEmpty();
}
void localMods(Action<SourceSetConsumer> action);
interface SourceSetConsumer {
void add(Object... sourceSets);
}
List<Supplier<SourceSet>> getForgeLocalMods();
void dataGen(Action<DataGenConsumer> action);
interface DataGenConsumer {
void mod(String... modIds);
}
default void addTaskBeforeRun(String task) {
this.getTasksBeforeRun().add(task);
}
List<String> getTasksBeforeRun();
void mixinConfig(String... config);
List<String> getMixinConfigs();
void accessTransformer(Object file);
Set<File> getAccessTransformers();
boolean isUseFabricMixin();
void setUseFabricMixin(boolean useFabricMixin);
List<Consumer<RunConfig>> getSettingsPostEdit();
}

View File

@@ -61,11 +61,11 @@ public final class CompileConfiguration {
LoomGradleExtension extension = LoomGradleExtension.get(project);
project.afterEvaluate(project1 -> {
if (project.getExtensions().getByType(LoomGradleExtension.class).shouldGenerateSrgTiny()) {
if (extension.shouldGenerateSrgTiny()) {
extension.createLazyConfiguration(Constants.Configurations.SRG).configure(configuration -> configuration.setTransitive(false));
}
if (project.getExtensions().getByType(LoomGradleExtension.class).isDataGenEnabled()) {
if (extension.isDataGenEnabled()) {
project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName("main").resources(files -> {
files.srcDir(project.file("src/generated/resources"));
});
@@ -79,7 +79,7 @@ public final class CompileConfiguration {
extension.createLazyConfiguration(Constants.Configurations.LOADER_DEPENDENCIES).configure(configuration -> configuration.setTransitive(false));
extension.createLazyConfiguration(Constants.Configurations.MINECRAFT).configure(configuration -> configuration.setTransitive(false));
if (project.getExtensions().getByType(LoomGradleExtension.class).isForge()) {
if (extension.isForge()) {
extension.createLazyConfiguration(Constants.Configurations.FORGE).configure(configuration -> configuration.setTransitive(false));
extension.createLazyConfiguration(Constants.Configurations.FORGE_USERDEV).configure(configuration -> configuration.setTransitive(false));
extension.createLazyConfiguration(Constants.Configurations.FORGE_INSTALLER).configure(configuration -> configuration.setTransitive(false));
@@ -96,7 +96,7 @@ public final class CompileConfiguration {
extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.FORGE_NAMED, project);
}
if (project.getExtensions().getByType(LoomGradleExtension.class).supportsInclude()) {
if (extension.supportsInclude()) {
extension.createLazyConfiguration(Constants.Configurations.INCLUDE).configure(configuration -> configuration.setTransitive(false)); // Dont get transitive deps
}

View File

@@ -79,7 +79,7 @@ public class RemapConfiguration {
if (extension.isForge()) {
((Jar) jarTask).manifest(manifest -> {
manifest.attributes(ImmutableMap.of("MixinConfigs", String.join(",", extension.mixinConfigs)));
manifest.attributes(ImmutableMap.of("MixinConfigs", String.join(",", extension.getMixinConfigs())));
});
}

View File

@@ -28,6 +28,8 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.Objects;
@@ -133,7 +135,7 @@ public class RunConfig {
if (extension.isForge()) {
List<String> modClasses = new ArrayList<>();
for (Supplier<SourceSet> sourceSetSupplier : extension.forgeLocalMods) {
for (Supplier<SourceSet> sourceSetSupplier : extension.getForgeLocalMods()) {
SourceSet sourceSet = sourceSetSupplier.get();
String sourceSetName = sourceSet.getName() + "_" + UUID.randomUUID().toString().replace("-", "").substring(0, 7);
@@ -214,7 +216,7 @@ public class RunConfig {
runConfig.programArgs = runConfig.programArgs.trim();
runConfig.vmArgs = runConfig.vmArgs.trim();
for (Consumer<RunConfig> consumer : extension.settingsPostEdit) {
for (Consumer<RunConfig> consumer : extension.getSettingsPostEdit()) {
consumer.accept(runConfig);
}

View File

@@ -93,13 +93,13 @@ public class LaunchProvider extends DependencyProvider {
.property("mixin.env.remapRefMap", "true");
if (getExtension().useFabricMixin) {
if (getExtension().isUseFabricMixin()) {
launchConfig.property("mixin.forgeloom.inject.mappings.srg-named", getExtension().getMappingsProvider().mixinTinyMappingsWithSrg.getAbsolutePath());
} else {
launchConfig.property("net.minecraftforge.gradle.GradleStart.srg.srg-mcp", getExtension().getMappingsProvider().srgToNamedSrg.getAbsolutePath());
}
List<String> mixinConfigs = getExtension().mixinConfigs;
List<String> mixinConfigs = getExtension().getMixinConfigs();
if (mixinConfigs != null) {
for (String config : mixinConfigs) {

View File

@@ -42,7 +42,7 @@ public class ForgeUniversalProvider extends DependencyProvider {
@Override
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
forge = new File(getExtension().getProjectPersistentCache(), "forge-" + dependency.getDependency().getVersion() + "-universal.jar");
forge = new File(getDirectories().getProjectPersistentCache(), "forge-" + dependency.getDependency().getVersion() + "-universal.jar");
if (!forge.exists() || isRefreshDeps()) {
File dep = dependency.resolveFile().orElseThrow(() -> new RuntimeException("Could not resolve Forge"));

View File

@@ -52,9 +52,9 @@ public class ForgeUserdevProvider extends DependencyProvider {
@Override
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
userdevJar = new File(getExtension().getProjectPersistentCache(), "forge-" + dependency.getDependency().getVersion() + "-userdev.jar");
userdevJar = new File(getDirectories().getProjectPersistentCache(), "forge-" + dependency.getDependency().getVersion() + "-userdev.jar");
Path configJson = getExtension()
Path configJson = getDirectories()
.getProjectPersistentCache()
.toPath()
.resolve("forge-config-" + dependency.getDependency().getVersion() + ".json");
@@ -80,7 +80,7 @@ public class ForgeUserdevProvider extends DependencyProvider {
for (JsonElement lib : json.get("libraries").getAsJsonArray()) {
if (lib.getAsString().startsWith("org.spongepowered:mixin:")) {
if (getExtension().useFabricMixin) {
if (getExtension().isUseFabricMixin()) {
addDependency("net.fabricmc:sponge-mixin:0.8.2+build.24", Constants.Configurations.FORGE_DEPENDENCIES);
continue;
}

View File

@@ -58,7 +58,7 @@ public class McpConfigProvider extends DependencyProvider {
}
private void init(String version) {
mcp = new File(getExtension().getUserCache(), "mcp-" + version + ".zip");
mcp = new File(getDirectories().getUserCache(), "mcp-" + version + ".zip");
}
public File getMcp() {

View File

@@ -127,8 +127,8 @@ public class MinecraftPatchedProvider extends DependencyProvider {
public void initFiles() throws IOException {
filesDirty = false;
projectAtHash = new File(getExtension().getProjectPersistentCache(), "at.sha256");
projectAts = getExtension().accessTransformers;
projectAtHash = new File(getDirectories().getProjectPersistentCache(), "at.sha256");
projectAts = getExtension().getAccessTransformers();
if (projectAts.isEmpty()) {
SourceSet main = getProject().getConvention().findPlugin(JavaPluginConvention.class).getSourceSets().getByName("main");
@@ -163,14 +163,14 @@ public class MinecraftPatchedProvider extends DependencyProvider {
String minecraftVersion = minecraftProvider.minecraftVersion();
String patchId = "forge-" + patchProvider.forgeVersion;
if (getExtension().useFabricMixin) {
if (getExtension().isUseFabricMixin()) {
patchId += "-fabric-mixin";
}
minecraftProvider.setJarSuffix(patchId);
File globalCache = getExtension().getUserCache();
File cache = usesProjectCache() ? getExtension().getProjectPersistentCache() : globalCache;
File globalCache = getDirectories().getUserCache();
File cache = usesProjectCache() ? getDirectories().getProjectPersistentCache() : globalCache;
File globalDir = new File(globalCache, patchId);
File projectDir = new File(cache, patchId);
globalDir.mkdirs();

View File

@@ -68,7 +68,7 @@ public class PatchProvider extends DependencyProvider {
private void init(String forgeVersion) {
this.forgeVersion = forgeVersion;
projectCacheFolder = getExtension().getProjectPersistentCache().toPath().resolve(forgeVersion);
projectCacheFolder = getDirectories().getProjectPersistentCache().toPath().resolve(forgeVersion);
clientPatches = projectCacheFolder.resolve("patches-client.lzma");
serverPatches = projectCacheFolder.resolve("patches-server.lzma");

View File

@@ -64,7 +64,7 @@ public class SrgProvider extends DependencyProvider {
}
private void init(String version) {
srg = new File(getExtension().getUserCache(), "srg-" + version + ".tsrg");
srg = new File(getDirectories().getUserCache(), "srg-" + version + ".tsrg");
}
public File getSrg() {

View File

@@ -31,7 +31,7 @@ import java.util.List;
import org.gradle.api.Action;
import org.jetbrains.annotations.Nullable;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.api.LoomGradleExtensionAPI;
import net.fabricmc.loom.configuration.providers.mappings.crane.CraneMappingsSpec;
import net.fabricmc.loom.configuration.providers.mappings.intermediary.IntermediaryMappingsSpec;
import net.fabricmc.loom.configuration.providers.mappings.mojmap.MojangMappingsSpec;
@@ -40,9 +40,9 @@ import net.fabricmc.loom.configuration.providers.mappings.parchment.ParchmentMap
public class LayeredMappingSpecBuilder {
private final List<MappingsSpec<?>> layers = new LinkedList<>();
@Nullable
private final LoomGradleExtension extension;
private final LoomGradleExtensionAPI extension;
public LayeredMappingSpecBuilder(LoomGradleExtension extension) {
public LayeredMappingSpecBuilder(@Nullable LoomGradleExtensionAPI extension) {
this.extension = extension;
}

View File

@@ -159,7 +159,7 @@ public class MinecraftMappedProvider extends DependencyProvider {
addDependencies(dependency, postPopulationScheduler);
if (getExtension().isForge()) {
getProject().getRepositories().flatDir(repository -> repository.dir(new File(getJarDirectory(getExtension().getUserCache(), "mapped"), "forge")));
getProject().getRepositories().flatDir(repository -> repository.dir(new File(getJarDirectory(getDirectories().getUserCache(), "mapped"), "forge")));
getProject().getDependencies().add(Constants.Configurations.FORGE_NAMED,
getProject().getDependencies().module("net.minecraftforge-loom:forge:" + getJarVersionString("mapped")));
@@ -353,15 +353,15 @@ public class MinecraftMappedProvider extends DependencyProvider {
public void initFiles(MinecraftProviderImpl minecraftProvider, MappingsProviderImpl mappingsProvider) {
this.minecraftProvider = minecraftProvider;
minecraftIntermediaryJar = new File(getDirectories().getUserCache(), "minecraft-" + getJarVersionString("intermediary") + ".jar");
minecraftSrgJar = !getExtension().isForge() ? null : new File(getExtension().getUserCache(), "minecraft-" + getJarVersionString("srg") + ".jar");
minecraftSrgJar = !getExtension().isForge() ? null : new File(getDirectories().getUserCache(), "minecraft-" + getJarVersionString("srg") + ".jar");
minecraftMappedJar = new File(getJarDirectory(getDirectories().getUserCache(), "mapped"), "minecraft-" + getJarVersionString("mapped") + ".jar");
inputJar = getExtension().isForge() ? mappingsProvider.patchedProvider.getMergedJar() : minecraftProvider.getMergedJar();
if (getExtension().isForge()) {
inputForgeJar = mappingsProvider.patchedProvider.getForgeMergedJar();
forgeIntermediaryJar = new File(getExtension().getUserCache(), "forge-" + getJarVersionString("intermediary") + ".jar");
forgeSrgJar = new File(getExtension().getUserCache(), "forge-" + getJarVersionString("srg") + ".jar");
forgeMappedJar = new File(getJarDirectory(getExtension().getUserCache(), "mapped"), "forge/forge-" + getJarVersionString("mapped") + ".jar");
forgeIntermediaryJar = new File(getDirectories().getUserCache(), "forge-" + getJarVersionString("intermediary") + ".jar");
forgeSrgJar = new File(getDirectories().getUserCache(), "forge-" + getJarVersionString("srg") + ".jar");
forgeMappedJar = new File(getJarDirectory(getDirectories().getUserCache(), "mapped"), "forge/forge-" + getJarVersionString("mapped") + ".jar");
}
}

View File

@@ -166,7 +166,7 @@ public class ForgeSourcesRemapper {
}
private static void remapForgeSourcesInner(Project project, Path tmpInput, Path tmpOutput) throws IOException {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
LoomGradleExtension extension = LoomGradleExtension.get(project);
Mercury mercury = SourceRemapper.createMercuryWithClassPath(project, false);
MappingSet mappings = new TinyMappingsReader(extension.getMappingsProvider().getMappingsWithSrg(), "srg", "named").read();

View File

@@ -26,30 +26,49 @@ package net.fabricmc.loom.extension;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Supplier;
import com.google.common.base.Suppliers;
import org.gradle.api.Action;
import org.gradle.api.NamedDomainObjectContainer;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.plugins.BasePluginConvention;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.SourceSet;
import net.fabricmc.loom.api.LoomGradleExtensionAPI;
import net.fabricmc.loom.api.MixinApExtensionAPI;
import net.fabricmc.loom.api.decompilers.LoomDecompiler;
import net.fabricmc.loom.api.LoomGradleExtensionAPI;
import net.fabricmc.loom.configuration.ide.RunConfig;
import net.fabricmc.loom.configuration.ide.RunConfigSettings;
import net.fabricmc.loom.configuration.launch.LaunchProviderSettings;
import net.fabricmc.loom.configuration.processors.JarProcessor;
import net.fabricmc.loom.configuration.providers.mappings.GradleMappingContext;
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpec;
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuilder;
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingsDependency;
import net.fabricmc.loom.util.ModPlatform;
import net.fabricmc.loom.util.function.LazyBool;
/**
* This class implements the public extension api.
*/
public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionAPI {
private static final String FORGE_PROPERTY = "loom.forge";
private static final String PLATFORM_PROPERTY = "loom.platform";
private static final String INCLUDE_PROPERTY = "loom.forge.include";
protected final List<LoomDecompiler> decompilers = new ArrayList<>();
protected final List<JarProcessor> jarProcessors = new ArrayList<>();
protected final ConfigurableFileCollection log4jConfigs;
@@ -62,10 +81,46 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
private NamedDomainObjectContainer<RunConfigSettings> runConfigs;
// ===================
// Architectury Loom
// ===================
private Property<ModPlatform> platform;
public List<String> mixinConfigs = new ArrayList<>(); // FORGE: Passed to Minecraft
public Set<File> accessTransformers = new HashSet<>();
public boolean useFabricMixin = true; // FORGE: Use Fabric Mixin for better refmap resolutions
private boolean silentMojangMappingsLicense = false;
public Boolean generateSrgTiny = null;
private final LazyBool supportsInclude;
private List<String> dataGenMods = new ArrayList<>();
private final List<String> tasksBeforeRun = Collections.synchronizedList(new ArrayList<>());
public final List<Supplier<SourceSet>> forgeLocalMods = Collections.synchronizedList(new ArrayList<>(Collections.singletonList(() ->
getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName("main"))));
public final List<Consumer<RunConfig>> settingsPostEdit = new ArrayList<>();
private NamedDomainObjectContainer<LaunchProviderSettings> launchConfigs;
protected LoomGradleExtensionApiImpl(Project project, LoomFiles directories) {
this.runConfigs = project.container(RunConfigSettings.class,
baseName -> new RunConfigSettings(project, baseName));
this.log4jConfigs = project.files(directories.getDefaultLog4jConfigFile());
this.platform = project.getObjects().property(ModPlatform.class).convention(project.provider(Suppliers.memoize(() -> {
Object platformProperty = project.findProperty(PLATFORM_PROPERTY);
if (platformProperty != null) {
return ModPlatform.valueOf(Objects.toString(platformProperty).toUpperCase(Locale.ROOT));
}
Object forgeProperty = project.findProperty(FORGE_PROPERTY);
if (forgeProperty != null) {
project.getLogger().warn("Project " + project.getPath() + " is using property " + FORGE_PROPERTY + " to enable forge mode. Please use '" + PLATFORM_PROPERTY + " = forge' instead!");
return Boolean.parseBoolean(Objects.toString(forgeProperty)) ? ModPlatform.FORGE : ModPlatform.FABRIC;
}
return ModPlatform.FABRIC;
})::get));
this.supportsInclude = new LazyBool(() -> Boolean.parseBoolean(Objects.toString(project.findProperty(INCLUDE_PROPERTY))));
this.launchConfigs = project.container(LaunchProviderSettings.class,
baseName -> new LaunchProviderSettings(project, baseName));
}
@Override
@@ -113,16 +168,27 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
@Override
public Dependency layered(Action<LayeredMappingSpecBuilder> action) {
LayeredMappingSpecBuilder builder = new LayeredMappingSpecBuilder();
LayeredMappingSpecBuilder builder = new LayeredMappingSpecBuilder(this);
action.execute(builder);
LayeredMappingSpec builtSpec = builder.build();
return new LayeredMappingsDependency(new GradleMappingContext(getProject(), "layers_" + builtSpec.getVersion().replace("+", "_").replace(".", "_")), builtSpec, builtSpec.getVersion());
return new LayeredMappingsDependency(new GradleMappingContext(getProject(), () -> {
return "layers/" + getMinecraftVersion() + "_" + builtSpec.getVersion().replace("+", "_").replace(".", "_");
}), builtSpec, builtSpec.getVersion());
}
protected abstract String getMinecraftVersion();
@Override
public String getRefmapName() {
if (refmapName == null || refmapName.isEmpty()) {
String defaultRefmapName = getProject().getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName() + "-refmap.json";
String defaultRefmapName;
if (getProject().getRootProject() == getProject()) {
defaultRefmapName = getProject().getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName() + "-refmap.json";
} else {
defaultRefmapName = getProject().getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName() + "-" + getProject().getPath().replaceFirst(":", "").replace(':', '_') + "-refmap.json";
}
getProject().getLogger().info("Could not find refmap definition, will be using default name: " + defaultRefmapName);
refmapName = defaultRefmapName;
}
@@ -182,6 +248,140 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
protected abstract MixinApExtension getMixinApExtension();
@Override
public void silentMojangMappingsLicense() {
this.silentMojangMappingsLicense = true;
}
@Override
public boolean isSilentMojangMappingsLicenseEnabled() {
return silentMojangMappingsLicense;
}
@Override
public Property<ModPlatform> getPlatform() {
return platform;
}
@Override
public boolean supportsInclude() {
return !isForge() || supportsInclude.getAsBoolean();
}
@Override
public void setGenerateSrgTiny(Boolean generateSrgTiny) {
this.generateSrgTiny = generateSrgTiny;
}
@Override
public boolean shouldGenerateSrgTiny() {
if (generateSrgTiny != null) {
return generateSrgTiny;
}
return isForge();
}
@Override
public void launches(Action<NamedDomainObjectContainer<LaunchProviderSettings>> action) {
action.execute(launchConfigs);
}
@Override
public NamedDomainObjectContainer<LaunchProviderSettings> getLaunchConfigs() {
return launchConfigs;
}
@Override
public List<String> getDataGenMods() {
return dataGenMods;
}
@SuppressWarnings("Convert2Lambda")
@Override
public void localMods(Action<SourceSetConsumer> action) {
if (!isForge()) {
throw new UnsupportedOperationException("Not running with Forge support.");
}
action.execute(new SourceSetConsumer() {
@Override
public void add(Object... sourceSets) {
for (Object sourceSet : sourceSets) {
if (sourceSet instanceof SourceSet) {
forgeLocalMods.add(() -> (SourceSet) sourceSet);
} else {
forgeLocalMods.add(() -> getProject().getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName(String.valueOf(forgeLocalMods)));
}
}
}
});
}
@Override
public List<Supplier<SourceSet>> getForgeLocalMods() {
return forgeLocalMods;
}
@SuppressWarnings("Convert2Lambda")
@Override
public void dataGen(Action<DataGenConsumer> action) {
if (!isForge()) {
throw new UnsupportedOperationException("Not running with Forge support.");
}
action.execute(new DataGenConsumer() {
@Override
public void mod(String... modIds) {
dataGenMods.addAll(Arrays.asList(modIds));
if (modIds.length > 0 && getRunConfigs().findByName("data") == null) {
getRunConfigs().create("data", RunConfigSettings::data);
}
}
});
}
@Override
public List<String> getTasksBeforeRun() {
return tasksBeforeRun;
}
@Override
public void mixinConfig(String... config) {
mixinConfigs.addAll(Arrays.asList(config));
}
@Override
public List<String> getMixinConfigs() {
return mixinConfigs;
}
@Override
public void accessTransformer(Object file) {
this.accessTransformers.add(getProject().file(file));
}
@Override
public Set<File> getAccessTransformers() {
return accessTransformers;
}
@Override
public boolean isUseFabricMixin() {
return useFabricMixin;
}
@Override
public void setUseFabricMixin(boolean useFabricMixin) {
this.useFabricMixin = useFabricMixin;
}
@Override
public List<Consumer<RunConfig>> getSettingsPostEdit() {
return settingsPostEdit;
}
// This is here to ensure that LoomGradleExtensionApiImpl compiles without any unimplemented methods
private final class EnsureCompile extends LoomGradleExtensionApiImpl {
private EnsureCompile() {
@@ -203,5 +403,10 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
protected MixinApExtension getMixinApExtension() {
throw new RuntimeException("Yeah... something is really wrong");
}
@Override
protected String getMinecraftVersion() {
throw new RuntimeException("Yeah... something is really wrong");
}
}
}

View File

@@ -112,11 +112,13 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
@Override
public MappingSet getOrCreateSrcMappingCache(int id, Supplier<MappingSet> factory) {
if (id < 0 || id >= srcMappingCache.length) return factory.get();
return srcMappingCache[id] != null ? srcMappingCache[id] : (srcMappingCache[id] = factory.get());
}
@Override
public Mercury getOrCreateSrcMercuryCache(int id, Supplier<Mercury> factory) {
if (id < 0 || id >= srcMercuryCache.length) return factory.get();
return srcMercuryCache[id] != null ? srcMercuryCache[id] : (srcMercuryCache[id] = factory.get());
}
@@ -167,4 +169,9 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
public MixinApExtension getMixinApExtension() {
return this.mixinApExtension;
}
@Override
protected String getMinecraftVersion() {
return getMinecraftProvider().minecraftVersion();
}
}

View File

@@ -72,7 +72,7 @@ public class GenVsCodeProjectTask extends AbstractLoomTask {
}
public static void generate(Project project) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
LoomGradleExtension extension = LoomGradleExtension.get(project);
File projectDir = project.getRootProject().file(".vscode");
if (!projectDir.exists()) {

View File

@@ -110,7 +110,7 @@ public class GenerateSourcesTask extends AbstractLoomTask {
}
public static File getMappedJarFileWithSuffix(Project project, String suffix, boolean forgeJar) {
LoomGradleExtension extension = LoomGradleExtension.get(getProject());
LoomGradleExtension extension = LoomGradleExtension.get(project);
MappingsProviderImpl mappingsProvider = extension.getMappingsProvider();
File mappedJar = forgeJar ? mappingsProvider.mappedProvider.getForgeMappedJar() : mappingsProvider.mappedProvider.getMappedJar();
String path = mappedJar.getAbsolutePath();

View File

@@ -111,7 +111,7 @@ public final class LoomTasks {
}
private static void registerLaunchSettings(Project project) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
LoomGradleExtension extension = LoomGradleExtension.get(project);
Preconditions.checkArgument(extension.getLaunchConfigs().size() == 0, "Launch configurations must not be registered before loom");
extension.getLaunchConfigs().create("client");
extension.getLaunchConfigs().create("server");

View File

@@ -356,7 +356,7 @@ public class RemapJarTask extends Jar {
}
private NestedJarProvider getNestedJarProvider() {
if (!getProject().getExtensions().getByType(LoomGradleExtension.class).supportsInclude()) {
if (!LoomGradleExtension.get(getProject()).supportsInclude()) {
return EmptyNestedJarProvider.INSTANCE;
}

View File

@@ -31,7 +31,7 @@ import net.fabricmc.loom.configuration.ide.RunConfig;
public class RunDataTask extends AbstractRunTask {
public RunDataTask() {
super(project -> {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
LoomGradleExtension extension = LoomGradleExtension.get(project);
return RunConfig.runConfig(project, extension.getRunConfigs().getByName("data"));
});
}

View File

@@ -61,7 +61,7 @@ public class SourceRemapper {
}
public static String intermediary(Project project) {
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
LoomGradleExtension extension = LoomGradleExtension.get(project);;
return extension.isForge() ? "srg" : "intermediary";
}

View File

@@ -50,8 +50,8 @@ public class SpecialSourceExecutor {
.filter(s -> !s.startsWith("\t"))
.map(s -> s.split(" ")[0] + ".class")
.collect(Collectors.toSet());
LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class);
Path stripped = extension.getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-filtered.jar");
LoomGradleExtension extension = LoomGradleExtension.get(project.getProject());
Path stripped = extension.getFiles().getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-filtered.jar");
Files.deleteIfExists(stripped);
try (JarOutputStream output = new JarOutputStream(Files.newOutputStream(stripped))) {
@@ -64,7 +64,7 @@ public class SpecialSourceExecutor {
});
}
Path output = extension.getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-srg-output.jar");
Path output = extension.getFiles().getProjectBuildCache().toPath().resolve(officialJar.getFileName().toString().substring(0, officialJar.getFileName().toString().length() - 4) + "-srg-output.jar");
Files.deleteIfExists(output);
String[] args = new String[] {