mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-28 04:07:01 -05:00
This should be done now
This commit is contained in:
@@ -42,6 +42,8 @@ if (!isSnapshot) {
|
||||
version = baseVersion + "-PR." + System.getenv("PR_NUM") + "." + runNumber
|
||||
}
|
||||
|
||||
version = '0.11.0-juuz.2'
|
||||
|
||||
logger.lifecycle(":building plugin v${version}")
|
||||
|
||||
repositories {
|
||||
@@ -244,7 +246,6 @@ publishing {
|
||||
|
||||
from components.java
|
||||
artifact downgradeJava
|
||||
artifact sourcesJar
|
||||
}
|
||||
|
||||
maven(MavenPublication) { publication ->
|
||||
|
||||
@@ -54,9 +54,9 @@ import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.SrgMinecraftProvider;
|
||||
import net.fabricmc.loom.extension.LoomFiles;
|
||||
import net.fabricmc.loom.extension.MixinExtension;
|
||||
import net.fabricmc.loom.util.FunnyTodoException;
|
||||
|
||||
public interface LoomGradleExtension extends LoomGradleExtensionAPI {
|
||||
static LoomGradleExtension get(Project project) {
|
||||
@@ -108,12 +108,16 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI {
|
||||
|
||||
void setIntermediaryMinecraftProvider(IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider);
|
||||
|
||||
SrgMinecraftProvider<?> getSrgMinecraftProvider();
|
||||
|
||||
void setSrgMinecraftProvider(SrgMinecraftProvider<?> srgMinecraftProvider);
|
||||
|
||||
default List<Path> getMinecraftJars(MappingsNamespace mappingsNamespace) {
|
||||
return switch (mappingsNamespace) {
|
||||
case NAMED -> getNamedMinecraftProvider().getMinecraftJars();
|
||||
case INTERMEDIARY -> getIntermediaryMinecraftProvider().getMinecraftJars();
|
||||
case OFFICIAL -> getMinecraftProvider().getMinecraftJars();
|
||||
case SRG -> throw new FunnyTodoException("SRG minecraft jars");
|
||||
case SRG -> getSrgMinecraftProvider().getMinecraftJars();
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.fabricmc.loom.configuration;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -32,7 +33,6 @@ import org.gradle.api.NamedDomainObjectProvider;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.plugins.JavaPluginConvention;
|
||||
import org.gradle.api.plugins.JavaPluginExtension;
|
||||
import org.gradle.api.tasks.AbstractCopyTask;
|
||||
import org.gradle.api.tasks.SourceSet;
|
||||
@@ -61,8 +61,11 @@ import net.fabricmc.loom.configuration.providers.minecraft.MinecraftJarConfigura
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.SrgMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.sources.ForgeSourcesRemapper;
|
||||
import net.fabricmc.loom.extension.MixinExtension;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
import net.fabricmc.loom.util.OperatingSystem;
|
||||
|
||||
public final class CompileConfiguration {
|
||||
private CompileConfiguration() {
|
||||
@@ -77,7 +80,7 @@ public final class CompileConfiguration {
|
||||
}
|
||||
|
||||
if (extension.isDataGenEnabled()) {
|
||||
project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName("main").resources(files -> {
|
||||
project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets().getByName("main").resources(files -> {
|
||||
files.srcDir(project.file("src/generated/resources"));
|
||||
});
|
||||
}
|
||||
@@ -192,8 +195,8 @@ public final class CompileConfiguration {
|
||||
project.getDependencies().add(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, Constants.Dependencies.JETBRAINS_ANNOTATIONS + Constants.Dependencies.Versions.JETBRAINS_ANNOTATIONS);
|
||||
|
||||
if (extension.isForge()) {
|
||||
project.getDependencies().add(Constants.Dependencies.FORGE_RUNTIME + Constants.Dependencies.Versions.FORGE_RUNTIME, Constants.Configurations.FORGE_EXTRA);
|
||||
project.getDependencies().add(Constants.Dependencies.JAVAX_ANNOTATIONS + Constants.Dependencies.Versions.JAVAX_ANNOTATIONS, JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME);
|
||||
project.getDependencies().add(Constants.Configurations.FORGE_EXTRA, Constants.Dependencies.FORGE_RUNTIME + Constants.Dependencies.Versions.FORGE_RUNTIME);
|
||||
project.getDependencies().add(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, Constants.Dependencies.JAVAX_ANNOTATIONS + Constants.Dependencies.Versions.JAVAX_ANNOTATIONS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,27 +216,8 @@ public final class CompileConfiguration {
|
||||
throw new RuntimeException("Failed to setup minecraft", e);
|
||||
}
|
||||
|
||||
DependencyProviders dependencyProviders = new DependencyProviders();
|
||||
LoomDependencyManager dependencyManager = new LoomDependencyManager();
|
||||
extension.setDependencyProviders(dependencyProviders);
|
||||
extension.setDependencyManager(dependencyManager);
|
||||
|
||||
if (extension.isForge()) {
|
||||
dependencyProviders.addProvider(new ForgeProvider(project));
|
||||
dependencyProviders.addProvider(new ForgeUserdevProvider(project));
|
||||
}
|
||||
|
||||
if (extension.shouldGenerateSrgTiny()) {
|
||||
dependencyProviders.addProvider(new SrgProvider(project));
|
||||
}
|
||||
|
||||
if (extension.isForge()) {
|
||||
dependencyProviders.addProvider(new McpConfigProvider(project));
|
||||
dependencyProviders.addProvider(new PatchProvider(project));
|
||||
dependencyProviders.addProvider(new ForgeUniversalProvider(project));
|
||||
}
|
||||
|
||||
dependencyProviders.handleDependencies(project);
|
||||
dependencyManager.handleDependencies(project);
|
||||
|
||||
extension.getRemapArchives().finalizeValue();
|
||||
@@ -286,6 +270,10 @@ public final class CompileConfiguration {
|
||||
extension.setMappingsProvider(mappingsProvider);
|
||||
mappingsProvider.applyToProject(project, mappingsDep);
|
||||
|
||||
if (minecraftProvider instanceof MinecraftPatchedProvider patched) {
|
||||
patched.remapJar();
|
||||
}
|
||||
|
||||
// Provide the remapped mc jars
|
||||
final IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider = jarConfiguration.getIntermediaryMinecraftProviderBiFunction().apply(project, minecraftProvider);
|
||||
NamedMinecraftProvider<?> namedMinecraftProvider = jarConfiguration.getNamedMinecraftProviderBiFunction().apply(project, minecraftProvider);
|
||||
@@ -302,6 +290,20 @@ public final class CompileConfiguration {
|
||||
|
||||
extension.setNamedMinecraftProvider(namedMinecraftProvider);
|
||||
namedMinecraftProvider.provide(true);
|
||||
|
||||
if (extension.isForge()) {
|
||||
final SrgMinecraftProvider<?> srgMinecraftProvider = jarConfiguration.getSrgMinecraftProviderBiFunction().apply(project, minecraftProvider);
|
||||
extension.setSrgMinecraftProvider(srgMinecraftProvider);
|
||||
|
||||
// TODO: Find a better place for this?
|
||||
if (!OperatingSystem.isCIBuild()) {
|
||||
try {
|
||||
ForgeSourcesRemapper.addBaseForgeSources(project);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static JarProcessorManager createJarProcessorManager(Project project) {
|
||||
@@ -379,4 +381,26 @@ public final class CompileConfiguration {
|
||||
private static void finalizedBy(Project project, String a, String b) {
|
||||
project.getTasks().named(a).configure(task -> task.finalizedBy(project.getTasks().named(b)));
|
||||
}
|
||||
|
||||
public static void setupDependencyProviders(Project project, LoomGradleExtension extension) {
|
||||
DependencyProviders dependencyProviders = new DependencyProviders();
|
||||
extension.setDependencyProviders(dependencyProviders);
|
||||
|
||||
if (extension.isForge()) {
|
||||
dependencyProviders.addProvider(new ForgeProvider(project));
|
||||
dependencyProviders.addProvider(new ForgeUserdevProvider(project));
|
||||
}
|
||||
|
||||
if (extension.shouldGenerateSrgTiny()) {
|
||||
dependencyProviders.addProvider(new SrgProvider(project));
|
||||
}
|
||||
|
||||
if (extension.isForge()) {
|
||||
dependencyProviders.addProvider(new McpConfigProvider(project));
|
||||
dependencyProviders.addProvider(new PatchProvider(project));
|
||||
dependencyProviders.addProvider(new ForgeUniversalProvider(project));
|
||||
}
|
||||
|
||||
dependencyProviders.handleDependencies(project);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,10 @@ public class LoomDependencyManager {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (extension.getInstallerData() == null) {
|
||||
project.getLogger().warn("fabric-installer.json not found in classpath!");
|
||||
}
|
||||
}
|
||||
|
||||
SourceRemapper sourceRemapper = new SourceRemapper(project, true);
|
||||
@@ -85,10 +89,6 @@ public class LoomDependencyManager {
|
||||
|
||||
sourceRemapper.remapAll();
|
||||
|
||||
if (extension.getInstallerData() == null) {
|
||||
project.getLogger().warn("fabric-installer.json not found in classpath!");
|
||||
}
|
||||
|
||||
for (Runnable runnable : afterTasks) {
|
||||
runnable.run();
|
||||
}
|
||||
|
||||
@@ -112,7 +112,8 @@ public final class AccessTransformerJarProcessor implements JarProcessor {
|
||||
@Override
|
||||
public void process(File file) {
|
||||
try {
|
||||
Path tempInput = Files.createTempFile(null, "loom-at.jar");
|
||||
Path tempDir = Files.createTempDirectory("loom-access-transforming");
|
||||
Path tempInput = tempDir.resolve("input.jar");
|
||||
Files.copy(file.toPath(), tempInput);
|
||||
|
||||
executeAt(project, tempInput, file.toPath(), args -> {
|
||||
@@ -123,6 +124,7 @@ public final class AccessTransformerJarProcessor implements JarProcessor {
|
||||
});
|
||||
|
||||
Files.delete(tempInput);
|
||||
Files.delete(tempDir);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException("Could not access transform " + file.getAbsolutePath(), e);
|
||||
}
|
||||
|
||||
@@ -174,16 +174,10 @@ public class ModProcessor {
|
||||
|
||||
final TinyRemapper remapper = builder.build();
|
||||
|
||||
for (Path minecraftJar : extension.getMinecraftJars(MappingsNamespace.INTERMEDIARY)) {
|
||||
for (Path minecraftJar : extension.getMinecraftJars(extension.isForge() ? MappingsNamespace.SRG : MappingsNamespace.INTERMEDIARY)) {
|
||||
remapper.readClassPathAsync(minecraftJar);
|
||||
}
|
||||
|
||||
remapper.readClassPathAsync(intermediaryJar);
|
||||
|
||||
if (extension.isForgeAndNotOfficial()) {
|
||||
remapper.readClassPathAsync(mappedProvider.getForgeSrgJar().toPath());
|
||||
}
|
||||
|
||||
remapper.readClassPathAsync(mcDeps);
|
||||
|
||||
final Map<ModDependencyInfo, InputTag> tagMap = new HashMap<>();
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.fabricmc.loom.configuration.providers.forge;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.Dependency;
|
||||
@@ -44,7 +45,7 @@ public abstract class DependencyProvider {
|
||||
this.extension = LoomGradleExtension.get(project);
|
||||
}
|
||||
|
||||
public abstract void provide(DependencyInfo dependency) throws Exception;
|
||||
public abstract void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception;
|
||||
|
||||
public abstract String getTargetConfig();
|
||||
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
/*
|
||||
* This file is part of fabric-loom, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2022 FabricMC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package net.fabricmc.loom.configuration.providers.forge;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -82,7 +106,7 @@ public class DependencyProviders {
|
||||
DependencyInfo info = DependencyInfo.create(project, dependency, configuration);
|
||||
|
||||
try {
|
||||
provider.provide(info);
|
||||
provider.provide(info, afterTasks::add);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to provide " + dependency.getGroup() + ":" + dependency.getName() + ":" + dependency.getVersion() + " : " + e.toString(), e);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.fabricmc.loom.configuration.providers.forge;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.gradle.api.Project;
|
||||
|
||||
@@ -41,7 +42,7 @@ public class ForgeProvider extends DependencyProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provide(DependencyInfo dependency) throws Exception {
|
||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
|
||||
version = new ForgeVersion(dependency.getResolvedVersion());
|
||||
addDependency(dependency.getDepString() + ":userdev", Constants.Configurations.FORGE_USERDEV);
|
||||
addDependency(dependency.getDepString() + ":installer", Constants.Configurations.FORGE_INSTALLER);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.fabricmc.loom.configuration.providers.forge;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.gradle.api.Project;
|
||||
@@ -40,7 +41,7 @@ public class ForgeUniversalProvider extends DependencyProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provide(DependencyInfo dependency) throws Exception {
|
||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
|
||||
forge = new File(getExtension().getForgeProvider().getGlobalCache(), "forge-universal.jar");
|
||||
|
||||
if (!forge.exists() || isRefreshDeps()) {
|
||||
|
||||
@@ -78,7 +78,7 @@ public class ForgeUserdevProvider extends DependencyProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provide(DependencyInfo dependency) throws Exception {
|
||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
|
||||
this.postPopulationScheduler = postPopulationScheduler;
|
||||
Attribute<Boolean> transformed = Attribute.of("architectury-loom-forge-dependencies-transformed", Boolean.class);
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.nio.file.Path;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.jar.Attributes;
|
||||
import java.util.jar.Manifest;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -62,7 +63,7 @@ public class McpConfigProvider extends DependencyProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provide(DependencyInfo dependency) throws Exception {
|
||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
|
||||
init(dependency.getDependency().getVersion());
|
||||
|
||||
Path mcpZip = dependency.resolveFile().orElseThrow(() -> new RuntimeException("Could not resolve MCPConfig")).toPath();
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
/*
|
||||
* This file is part of fabric-loom, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2020-2022 FabricMC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package net.fabricmc.loom.configuration.providers.forge;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
@@ -30,7 +54,6 @@ import java.util.jar.Manifest;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -86,7 +109,8 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
// Step 5: Remap Patched AT & Forge to Official
|
||||
private File minecraftMergedPatchedJar;
|
||||
@Nullable
|
||||
private File forgeMergedJar;
|
||||
@Deprecated
|
||||
private final File forgeMergedJar = null; // TODO: Remove
|
||||
private File minecraftClientExtra;
|
||||
|
||||
private boolean dirty;
|
||||
@@ -109,10 +133,7 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
super(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initFiles() {
|
||||
super.initFiles();
|
||||
|
||||
private void initPatchedFiles() {
|
||||
String patchId = "forge-" + getExtension().getForgeProvider().getVersion().getCombined() + "-";
|
||||
|
||||
if (getExtension().isForgeAndOfficial()) {
|
||||
@@ -124,12 +145,19 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
minecraftClientPatchedSrgJar = file("client-srg-patched.jar");
|
||||
minecraftServerPatchedSrgJar = file("server-srg-patched.jar");
|
||||
minecraftMergedPatchedSrgJar = file("merged-srg-patched.jar");
|
||||
forgeMergedJar = getExtension().isForgeAndOfficial() ? null : file("forge-official.jar");
|
||||
minecraftMergedPatchedSrgAtJar = file("merged-srg-at-patched.jar");
|
||||
minecraftMergedPatchedJar = file("merged-patched.jar");
|
||||
minecraftClientExtra = file("forge-client-extra.jar");
|
||||
}
|
||||
|
||||
private File getEffectiveServerJar() {
|
||||
if (getServerBundleMetadata() != null) {
|
||||
return getMinecraftExtractedServerJar();
|
||||
} else {
|
||||
return getMinecraftServerJar();
|
||||
}
|
||||
}
|
||||
|
||||
public void cleanAllCache() {
|
||||
for (File file : getGlobalCaches()) {
|
||||
file.delete();
|
||||
@@ -166,6 +194,7 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
@Override
|
||||
public void provide() throws Exception {
|
||||
super.provide();
|
||||
initPatchedFiles();
|
||||
checkCache();
|
||||
|
||||
this.dirty = false;
|
||||
@@ -193,7 +222,9 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
if (forgeMergedJar != null && !forgeMergedJar.exists()) {
|
||||
this.dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void remapJar() throws Exception {
|
||||
if (dirty) {
|
||||
remapPatchedJar(getProject().getLogger());
|
||||
|
||||
@@ -245,7 +276,7 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
}
|
||||
|
||||
private void createSrgJars(Logger logger) throws Exception {
|
||||
produceSrgJar(getExtension().isForgeAndOfficial(), super.getMinecraftClientJar().toPath(), MoreObjects.firstNonNull(super.getMinecraftExtractedServerJar(), super.getMinecraftServerJar()).toPath());
|
||||
produceSrgJar(getExtension().isForgeAndOfficial(), super.getMinecraftClientJar().toPath(), getEffectiveServerJar().toPath());
|
||||
}
|
||||
|
||||
private void produceSrgJar(boolean official, Path clientJar, Path serverJar) throws IOException {
|
||||
@@ -529,7 +560,7 @@ public class MinecraftPatchedProvider extends MergedMinecraftProvider {
|
||||
if (getExtension().isForgeAndNotOfficial()) {
|
||||
// Copy resources
|
||||
copyNonClassFiles(super.getMinecraftClientJar(), minecraftMergedPatchedSrgJar);
|
||||
copyNonClassFiles(MoreObjects.firstNonNull(super.getMinecraftExtractedServerJar(), super.getMinecraftServerJar()), minecraftMergedPatchedSrgJar);
|
||||
copyNonClassFiles(getEffectiveServerJar(), minecraftMergedPatchedSrgJar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ import java.nio.file.FileSystems;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import org.gradle.api.Project;
|
||||
@@ -49,7 +50,7 @@ public class PatchProvider extends DependencyProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provide(DependencyInfo dependency) throws Exception {
|
||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
|
||||
init(dependency.getDependency().getVersion());
|
||||
|
||||
if (Files.notExists(clientPatches) || Files.notExists(serverPatches) || isRefreshDeps()) {
|
||||
|
||||
@@ -41,6 +41,7 @@ import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
@@ -79,7 +80,7 @@ public class SrgProvider extends DependencyProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void provide(DependencyInfo dependency) throws Exception {
|
||||
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
|
||||
init(dependency.getDependency().getVersion());
|
||||
|
||||
if (!Files.exists(srg) || isRefreshDeps()) {
|
||||
|
||||
@@ -333,7 +333,9 @@ public class MappingsProviderImpl implements MappingsProvider, SharedService {
|
||||
provider = new SrgProvider(project);
|
||||
project.getDependencies().add(provider.getTargetConfig(), "de.oceanlabs.mcp:mcp_config:" + extension.getMinecraftProvider().minecraftVersion());
|
||||
Configuration configuration = project.getConfigurations().getByName(provider.getTargetConfig());
|
||||
provider.provide(DependencyInfo.create(project, configuration.getDependencies().iterator().next(), configuration));
|
||||
provider.provide(DependencyInfo.create(project, configuration.getDependencies().iterator().next(), configuration), runnable -> {
|
||||
throw new UnsupportedOperationException("No postPopulationScheduler available");
|
||||
});
|
||||
}
|
||||
|
||||
Path srgPath = getRawSrgFile(project);
|
||||
|
||||
@@ -39,12 +39,14 @@ import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMi
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.MappedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.ProcessedNamedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.SrgMinecraftProvider;
|
||||
|
||||
public enum MinecraftJarConfiguration {
|
||||
MERGED(
|
||||
MinecraftPatchedProvider::createMergedMinecraftProvider,
|
||||
IntermediaryMinecraftProvider.MergedImpl::new,
|
||||
NamedMinecraftProvider.MergedImpl::new,
|
||||
SrgMinecraftProvider.MergedImpl::new,
|
||||
ProcessedNamedMinecraftProvider.MergedImpl::new,
|
||||
SingleJarDecompileConfiguration::new,
|
||||
List.of("client", "server")
|
||||
@@ -53,6 +55,7 @@ public enum MinecraftJarConfiguration {
|
||||
ServerOnlyMinecraftProvider::new,
|
||||
IntermediaryMinecraftProvider.ServerOnlyImpl::new,
|
||||
NamedMinecraftProvider.ServerOnlyImpl::new,
|
||||
SrgMinecraftProvider.ServerOnlyImpl::new,
|
||||
ProcessedNamedMinecraftProvider.ServerOnlyImpl::new,
|
||||
SingleJarDecompileConfiguration::new,
|
||||
List.of("server")
|
||||
@@ -61,6 +64,7 @@ public enum MinecraftJarConfiguration {
|
||||
SplitMinecraftProvider::new,
|
||||
IntermediaryMinecraftProvider.SplitImpl::new,
|
||||
NamedMinecraftProvider.SplitImpl::new,
|
||||
SrgMinecraftProvider.SplitImpl::new,
|
||||
ProcessedNamedMinecraftProvider.SplitImpl::new,
|
||||
SplitDecompileConfiguration::new,
|
||||
List.of("client", "server")
|
||||
@@ -69,6 +73,7 @@ public enum MinecraftJarConfiguration {
|
||||
private final Function<Project, MinecraftProvider> minecraftProviderFunction;
|
||||
private final BiFunction<Project, MinecraftProvider, IntermediaryMinecraftProvider<?>> intermediaryMinecraftProviderBiFunction;
|
||||
private final BiFunction<Project, MinecraftProvider, NamedMinecraftProvider<?>> namedMinecraftProviderBiFunction;
|
||||
private final BiFunction<Project, MinecraftProvider, SrgMinecraftProvider<?>> srgMinecraftProviderBiFunction;
|
||||
private final BiFunction<NamedMinecraftProvider<?>, JarProcessorManager, ProcessedNamedMinecraftProvider<?, ?>> processedNamedMinecraftProviderBiFunction;
|
||||
private final BiFunction<Project, MappedMinecraftProvider, DecompileConfiguration<?>> decompileConfigurationBiFunction;
|
||||
private final List<String> supportedEnvironments;
|
||||
@@ -78,6 +83,7 @@ public enum MinecraftJarConfiguration {
|
||||
Function<Project, M> minecraftProviderFunction,
|
||||
BiFunction<Project, M, IntermediaryMinecraftProvider<M>> intermediaryMinecraftProviderBiFunction,
|
||||
BiFunction<Project, M, P> namedMinecraftProviderBiFunction,
|
||||
BiFunction<Project, M, SrgMinecraftProvider<M>> srgMinecraftProviderBiFunction,
|
||||
BiFunction<P, JarProcessorManager, ProcessedNamedMinecraftProvider<M, P>> processedNamedMinecraftProviderBiFunction,
|
||||
BiFunction<Project, Q, DecompileConfiguration<?>> decompileConfigurationBiFunction,
|
||||
List<String> supportedEnvironments
|
||||
@@ -85,6 +91,7 @@ public enum MinecraftJarConfiguration {
|
||||
this.minecraftProviderFunction = (Function<Project, MinecraftProvider>) minecraftProviderFunction;
|
||||
this.intermediaryMinecraftProviderBiFunction = (BiFunction<Project, MinecraftProvider, IntermediaryMinecraftProvider<?>>) (Object) intermediaryMinecraftProviderBiFunction;
|
||||
this.namedMinecraftProviderBiFunction = (BiFunction<Project, MinecraftProvider, NamedMinecraftProvider<?>>) namedMinecraftProviderBiFunction;
|
||||
this.srgMinecraftProviderBiFunction = (BiFunction<Project, MinecraftProvider, SrgMinecraftProvider<?>>) (Object) srgMinecraftProviderBiFunction;
|
||||
this.processedNamedMinecraftProviderBiFunction = (BiFunction<NamedMinecraftProvider<?>, JarProcessorManager, ProcessedNamedMinecraftProvider<?, ?>>) (Object) processedNamedMinecraftProviderBiFunction;
|
||||
this.decompileConfigurationBiFunction = (BiFunction<Project, MappedMinecraftProvider, DecompileConfiguration<?>>) decompileConfigurationBiFunction;
|
||||
this.supportedEnvironments = supportedEnvironments;
|
||||
@@ -110,6 +117,10 @@ public enum MinecraftJarConfiguration {
|
||||
return decompileConfigurationBiFunction;
|
||||
}
|
||||
|
||||
public BiFunction<Project, MinecraftProvider, SrgMinecraftProvider<?>> getSrgMinecraftProviderBiFunction() {
|
||||
return srgMinecraftProviderBiFunction;
|
||||
}
|
||||
|
||||
public List<String> getSupportedEnvironments() {
|
||||
return supportedEnvironments;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.LoomGradlePlugin;
|
||||
import net.fabricmc.loom.configuration.CompileConfiguration;
|
||||
import net.fabricmc.loom.configuration.DependencyInfo;
|
||||
import net.fabricmc.loom.configuration.providers.BundleMetadata;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
@@ -79,7 +80,7 @@ public abstract class MinecraftProvider {
|
||||
minecraftVersion = dependency.getDependency().getVersion();
|
||||
|
||||
if (getExtension().shouldGenerateSrgTiny() && !getExtension().isForge()) {
|
||||
getProject().getDependencies().add("de.oceanlabs.mcp:mcp_config:" + minecraftVersion, Constants.Configurations.SRG);
|
||||
getProject().getDependencies().add(Constants.Configurations.SRG, "de.oceanlabs.mcp:mcp_config:" + minecraftVersion);
|
||||
}
|
||||
|
||||
boolean offline = getProject().getGradle().getStartParameter().isOffline();
|
||||
@@ -106,6 +107,12 @@ public abstract class MinecraftProvider {
|
||||
|
||||
libraryProvider = new MinecraftLibraryProvider();
|
||||
libraryProvider.provide(this, getProject());
|
||||
|
||||
// TODO: Find a better place for this. This needs to run after MinecraftProvider.initFiles
|
||||
// but before MinecraftPatchedProvider.provide, so it's a bit tough.
|
||||
// Honestly, the ForgeProvider stuff that uses the results of initFiles could be moved to
|
||||
// MinecraftPatchedProvider.
|
||||
CompileConfiguration.setupDependencyProviders(getProject(), getExtension());
|
||||
}
|
||||
|
||||
protected void initFiles() {
|
||||
|
||||
@@ -89,11 +89,11 @@ public abstract class AbstractMappedMinecraftProvider<M extends MinecraftProvide
|
||||
}
|
||||
|
||||
protected String getName(String name) {
|
||||
return "minecraft-%s-%s".formatted(name, getTargetNamespace().toString());
|
||||
return "%sminecraft-%s-%s".formatted(minecraftProvider.getJarPrefix(), name, getTargetNamespace().toString());
|
||||
}
|
||||
|
||||
protected String getDependencyNotation(String name) {
|
||||
return "net.minecraft:%s%s:%s/%s".formatted(getName(name), extension.getMinecraftProvider().getJarPrefix(), extension.getMinecraftProvider().minecraftVersion(), extension.getMappingsProvider().mappingsIdentifier());
|
||||
return "net.minecraft:%s:%s/%s".formatted(getName(name), extension.getMinecraftProvider().minecraftVersion(), extension.getMappingsProvider().mappingsIdentifier());
|
||||
}
|
||||
|
||||
private boolean areOutputsValid(List<RemappedJars> remappedJars) {
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* This file is part of fabric-loom, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2022 FabricMC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package net.fabricmc.loom.configuration.providers.minecraft.mapped;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
import dev.architectury.tinyremapper.TinyRemapper;
|
||||
import org.gradle.api.Project;
|
||||
|
||||
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.MergedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.ServerOnlyMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.SplitMinecraftProvider;
|
||||
import net.fabricmc.loom.util.SidedClassVisitor;
|
||||
|
||||
public abstract sealed class SrgMinecraftProvider<M extends MinecraftProvider> extends AbstractMappedMinecraftProvider<M> permits SrgMinecraftProvider.MergedImpl, SrgMinecraftProvider.ServerOnlyImpl, SrgMinecraftProvider.SplitImpl {
|
||||
public SrgMinecraftProvider(Project project, M minecraftProvider) {
|
||||
super(project, minecraftProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Path getDirectory() {
|
||||
return extension.getMinecraftProvider().workingDir().toPath();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final MappingsNamespace getTargetNamespace() {
|
||||
return MappingsNamespace.SRG;
|
||||
}
|
||||
|
||||
public static final class MergedImpl extends SrgMinecraftProvider<MergedMinecraftProvider> implements Merged {
|
||||
public MergedImpl(Project project, MergedMinecraftProvider minecraftProvider) {
|
||||
super(project, minecraftProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemappedJars> getRemappedJars() {
|
||||
return List.of(
|
||||
new RemappedJars(minecraftProvider.getMergedJar(), getMergedJar(), MappingsNamespace.OFFICIAL)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class SplitImpl extends SrgMinecraftProvider<SplitMinecraftProvider> implements Split {
|
||||
public SplitImpl(Project project, SplitMinecraftProvider minecraftProvider) {
|
||||
super(project, minecraftProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemappedJars> getRemappedJars() {
|
||||
return List.of(
|
||||
new RemappedJars(minecraftProvider.getMinecraftCommonJar(), getCommonJar(), MappingsNamespace.OFFICIAL),
|
||||
new RemappedJars(minecraftProvider.getMinecraftClientOnlyJar(), getClientOnlyJar(), MappingsNamespace.OFFICIAL, minecraftProvider.getMinecraftCommonJar())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureRemapper(RemappedJars remappedJars, TinyRemapper.Builder tinyRemapperBuilder) {
|
||||
if (remappedJars.outputJar().equals(getClientOnlyJar())) {
|
||||
tinyRemapperBuilder.extraPostApplyVisitor(SidedClassVisitor.CLIENT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final class ServerOnlyImpl extends SrgMinecraftProvider<ServerOnlyMinecraftProvider> implements ServerOnly {
|
||||
public ServerOnlyImpl(Project project, ServerOnlyMinecraftProvider minecraftProvider) {
|
||||
super(project, minecraftProvider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemappedJars> getRemappedJars() {
|
||||
return List.of(
|
||||
new RemappedJars(minecraftProvider.getMinecraftServerOnlyJar(), getServerOnlyJar(), MappingsNamespace.OFFICIAL)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,6 +50,7 @@ import org.gradle.api.logging.LogLevel;
|
||||
import org.gradle.api.logging.configuration.ShowStacktrace;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
|
||||
import net.fabricmc.loom.build.ModCompileRemapper;
|
||||
import net.fabricmc.loom.task.GenerateSourcesTask;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
@@ -62,8 +63,21 @@ import net.fabricmc.loom.util.ZipUtils;
|
||||
import net.fabricmc.lorenztiny.TinyMappingsReader;
|
||||
|
||||
public class ForgeSourcesRemapper {
|
||||
public static void addBaseForgeSources(Project project, boolean isOfficial) throws IOException {
|
||||
Path sourcesJar = GenerateSourcesTask.getMappedJarFileWithSuffix(project, "-sources.jar", !isOfficial).toPath();
|
||||
public static void addBaseForgeSources(Project project) throws IOException {
|
||||
List<Path> minecraftJars = LoomGradleExtension.get(project).getMinecraftJars(MappingsNamespace.NAMED);
|
||||
Path minecraftJar;
|
||||
|
||||
if (minecraftJars.isEmpty()) {
|
||||
// ???
|
||||
throw new IllegalStateException("Could not find Minecraft jar for Forge sources");
|
||||
} else if (minecraftJars.size() > 1) {
|
||||
// Cannot add Forge sources to split jars
|
||||
return;
|
||||
} else {
|
||||
minecraftJar = minecraftJars.get(0);
|
||||
}
|
||||
|
||||
Path sourcesJar = GenerateSourcesTask.getMappedJarFileWithSuffix(minecraftJar.toFile(), "-sources.jar").toPath();
|
||||
|
||||
if (!Files.exists(sourcesJar)) {
|
||||
addForgeSources(project, sourcesJar);
|
||||
@@ -202,11 +216,7 @@ public class ForgeSourcesRemapper {
|
||||
}
|
||||
|
||||
// Distinct and add the srg jar at the top, so it gets prioritized
|
||||
mercury.getClassPath().add(0, extension.getMinecraftMappedProvider().getSrgJar().toPath());
|
||||
|
||||
if (extension.isForgeAndNotOfficial()) {
|
||||
mercury.getClassPath().add(0, extension.getMinecraftMappedProvider().getForgeSrgJar().toPath());
|
||||
}
|
||||
mercury.getClassPath().addAll(0, extension.getMinecraftJars(MappingsNamespace.SRG));
|
||||
|
||||
List<Path> newClassPath = mercury.getClassPath().stream()
|
||||
.distinct()
|
||||
|
||||
@@ -33,9 +33,6 @@ import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.google.common.base.Suppliers;
|
||||
|
||||
import net.fabricmc.loom.configuration.providers.forge.DependencyProviders;
|
||||
|
||||
import org.cadixdev.lorenz.MappingSet;
|
||||
import org.cadixdev.mercury.Mercury;
|
||||
import org.gradle.api.Action;
|
||||
@@ -46,16 +43,18 @@ import org.gradle.api.file.ConfigurableFileCollection;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
|
||||
import net.fabricmc.loom.api.ForgeExtensionAPI;
|
||||
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
|
||||
import net.fabricmc.loom.configuration.InstallerData;
|
||||
import net.fabricmc.loom.configuration.LoomDependencyManager;
|
||||
import net.fabricmc.loom.configuration.accesswidener.AccessWidenerFile;
|
||||
import net.fabricmc.loom.configuration.processors.JarProcessorManager;
|
||||
import net.fabricmc.loom.configuration.providers.forge.DependencyProviders;
|
||||
import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
|
||||
import net.fabricmc.loom.configuration.providers.minecraft.mapped.SrgMinecraftProvider;
|
||||
import net.fabricmc.loom.util.ModPlatform;
|
||||
import net.fabricmc.loom.util.function.LazyBool;
|
||||
|
||||
@@ -77,6 +76,7 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
|
||||
private MappingsProviderImpl mappingsProvider;
|
||||
private NamedMinecraftProvider<?> namedMinecraftProvider;
|
||||
private IntermediaryMinecraftProvider<?> intermediaryMinecraftProvider;
|
||||
private SrgMinecraftProvider<?> srgMinecraftProvider;
|
||||
private InstallerData installerData;
|
||||
|
||||
// +-------------------+
|
||||
@@ -167,6 +167,16 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen
|
||||
this.intermediaryMinecraftProvider = intermediaryMinecraftProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SrgMinecraftProvider<?> getSrgMinecraftProvider() {
|
||||
return Objects.requireNonNull(srgMinecraftProvider, "Cannot get SrgMinecraftProvider before it has been setup");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSrgMinecraftProvider(SrgMinecraftProvider<?> srgMinecraftProvider) {
|
||||
this.srgMinecraftProvider = srgMinecraftProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileCollection getMinecraftJarsCollection(MappingsNamespace mappingsNamespace) {
|
||||
return getProject().files(
|
||||
|
||||
@@ -1,3 +1,27 @@
|
||||
/*
|
||||
* This file is part of fabric-loom, licensed under the MIT License (MIT).
|
||||
*
|
||||
* Copyright (c) 2022 FabricMC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package net.fabricmc.loom.task;
|
||||
|
||||
import org.gradle.api.Task;
|
||||
|
||||
@@ -295,7 +295,11 @@ public abstract class GenerateSourcesTask extends AbstractLoomTask implements De
|
||||
}
|
||||
|
||||
static File getMappedJarFileWithSuffix(RegularFileProperty runtimeJar, String suffix) {
|
||||
String path = runtimeJar.get().getAsFile().getAbsolutePath();
|
||||
return getMappedJarFileWithSuffix(runtimeJar.get().getAsFile(), suffix);
|
||||
}
|
||||
|
||||
public static File getMappedJarFileWithSuffix(File runtimeJar, String suffix) {
|
||||
String path = runtimeJar.getAbsolutePath();
|
||||
|
||||
if (!path.toLowerCase(Locale.ROOT).endsWith(".jar")) {
|
||||
throw new RuntimeException("Invalid mapped JAR path: " + path);
|
||||
|
||||
@@ -34,9 +34,6 @@ import java.util.Set;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import net.fabricmc.loom.util.FunnyTodoException;
|
||||
|
||||
import org.cadixdev.lorenz.MappingSet;
|
||||
import org.cadixdev.mercury.Mercury;
|
||||
import org.cadixdev.mercury.remapper.MercuryRemapper;
|
||||
@@ -184,16 +181,9 @@ public class MigrateMappingsTask extends AbstractLoomTask {
|
||||
mercury.getClassPath().add(intermediaryJar);
|
||||
}
|
||||
|
||||
FunnyTodoException.yes("Forge jars");
|
||||
/*if (extension.isForge()) {
|
||||
mercury.getClassPath().add(minecraftMappedProvider.getSrgJar().toPath());
|
||||
|
||||
if (extension.isForgeAndNotOfficial()) {
|
||||
mercury.getClassPath().add(minecraftMappedProvider.getForgeMappedJar().toPath());
|
||||
mercury.getClassPath().add(minecraftMappedProvider.getForgeIntermediaryJar().toPath());
|
||||
mercury.getClassPath().add(minecraftMappedProvider.getForgeSrgJar().toPath());
|
||||
}
|
||||
}*/
|
||||
for (Path srgJar : extension.getMinecraftJars(MappingsNamespace.SRG)) {
|
||||
mercury.getClassPath().add(srgJar);
|
||||
}
|
||||
|
||||
mercury.getProcessors().add(MercuryRemapper.create(mappingSet));
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.Set;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.jar.Manifest;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -53,11 +53,6 @@ import com.google.common.base.Suppliers;
|
||||
import com.google.gson.JsonObject;
|
||||
import dev.architectury.tinyremapper.OutputConsumerPath;
|
||||
import dev.architectury.tinyremapper.TinyRemapper;
|
||||
|
||||
import net.fabricmc.loom.task.service.MappingsService;
|
||||
|
||||
import net.fabricmc.loom.util.FunnyTodoException;
|
||||
|
||||
import org.cadixdev.at.AccessTransformSet;
|
||||
import org.cadixdev.at.io.AccessTransformFormats;
|
||||
import org.cadixdev.lorenz.MappingSet;
|
||||
@@ -67,7 +62,6 @@ import org.gradle.api.file.FileCollection;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.provider.ListProperty;
|
||||
import org.gradle.api.provider.Property;
|
||||
import org.gradle.api.provider.Provider;
|
||||
import org.gradle.api.provider.SetProperty;
|
||||
import org.gradle.api.tasks.Input;
|
||||
import org.gradle.api.tasks.InputFiles;
|
||||
@@ -87,14 +81,15 @@ import net.fabricmc.loom.build.nesting.JarNester;
|
||||
import net.fabricmc.loom.configuration.accesswidener.AccessWidenerFile;
|
||||
import net.fabricmc.loom.extension.MixinExtension;
|
||||
import net.fabricmc.loom.task.service.JarManifestService;
|
||||
import net.fabricmc.loom.task.service.MappingsService;
|
||||
import net.fabricmc.loom.task.service.TinyRemapperService;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
import net.fabricmc.loom.util.FileSystemUtil;
|
||||
import net.fabricmc.loom.util.LfWriter;
|
||||
import net.fabricmc.loom.util.ZipUtils;
|
||||
import net.fabricmc.loom.util.aw2at.Aw2At;
|
||||
import net.fabricmc.lorenztiny.TinyMappingsReader;
|
||||
import net.fabricmc.loom.util.service.UnsafeWorkQueueHelper;
|
||||
import net.fabricmc.lorenztiny.TinyMappingsReader;
|
||||
|
||||
public abstract class RemapJarTask extends AbstractRemapJarTask {
|
||||
private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF";
|
||||
@@ -125,8 +120,10 @@ public abstract class RemapJarTask extends AbstractRemapJarTask {
|
||||
getClasspath().from(getProject().getConfigurations().getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME));
|
||||
getAddNestedDependencies().convention(true).finalizeValueOnRead();
|
||||
|
||||
Configuration includeConfiguration = getProject().getConfigurations().getByName(Constants.Configurations.INCLUDE);
|
||||
getNestedJars().from(new IncludedJarFactory(getProject()).getNestedJars(includeConfiguration));
|
||||
if (LoomGradleExtension.get(getProject()).supportsInclude()) {
|
||||
Configuration includeConfiguration = getProject().getConfigurations().getByName(Constants.Configurations.INCLUDE);
|
||||
getNestedJars().from(new IncludedJarFactory(getProject()).getNestedJars(includeConfiguration));
|
||||
}
|
||||
|
||||
setupPreparationTask();
|
||||
}
|
||||
|
||||
@@ -56,10 +56,6 @@ public abstract class GenerateRemapClasspathTask extends AbstractLoomTask {
|
||||
remapClasspath.add(minecraftJar.toFile());
|
||||
}
|
||||
|
||||
if (getExtension().isForgeAndNotOfficial()) {
|
||||
remapClasspath.add(getExtension().getMinecraftMappedProvider().getForgeIntermediaryJar());
|
||||
}
|
||||
|
||||
String str = remapClasspath.stream()
|
||||
.map(File::getAbsolutePath)
|
||||
.collect(Collectors.joining(File.pathSeparator));
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package net.fabricmc.loom.util;
|
||||
|
||||
@Deprecated
|
||||
public class FunnyTodoException extends UnsupportedOperationException {
|
||||
public FunnyTodoException(String message) {
|
||||
super("TODO: " + message);
|
||||
}
|
||||
|
||||
public static void yes(String message) {
|
||||
throw new FunnyTodoException(message);
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,7 @@ import org.gradle.api.Project;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
|
||||
import net.fabricmc.loom.configuration.RemappedConfigurationEntry;
|
||||
import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl;
|
||||
import net.fabricmc.loom.util.gradle.ProgressLoggerHelper;
|
||||
@@ -211,12 +212,8 @@ public class SourceRemapper {
|
||||
}
|
||||
|
||||
if (extension.isForge()) {
|
||||
m.getClassPath().add(extension.getMinecraftMappedProvider().getSrgJar().toPath());
|
||||
|
||||
if (extension.isForgeAndNotOfficial()) {
|
||||
m.getClassPath().add(extension.getMinecraftMappedProvider().getForgeMappedJar().toPath());
|
||||
m.getClassPath().add(extension.getMinecraftMappedProvider().getForgeIntermediaryJar().toPath());
|
||||
m.getClassPath().add(extension.getMinecraftMappedProvider().getForgeSrgJar().toPath());
|
||||
for (Path srgJar : extension.getMinecraftJars(MappingsNamespace.SRG)) {
|
||||
m.getClassPath().add(srgJar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user