diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java index 1fc99793..d1565202 100644 --- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java @@ -1,7 +1,7 @@ /* * This file is part of fabric-loom, licensed under the MIT License (MIT). * - * Copyright (c) 2016-2022 FabricMC + * Copyright (c) 2016-2025 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 @@ -407,6 +407,13 @@ public abstract class GenerateSourcesTask extends AbstractLoomTask { sj.add(unpick.getUnpickCacheKey()); } + SourceMappingsService mappingsService = serviceFactory.get(getMappings()); + String mappingsHash = mappingsService.getProcessorHash(); + + if (mappingsHash != null) { + sj.add(mappingsHash); + } + getLogger().info("Decompile cache data: {}", sj); return Checksum.of(sj.toString()).sha256().hex(); diff --git a/src/main/java/net/fabricmc/loom/task/service/SourceMappingsService.java b/src/main/java/net/fabricmc/loom/task/service/SourceMappingsService.java index 5173169e..bb19944d 100644 --- a/src/main/java/net/fabricmc/loom/task/service/SourceMappingsService.java +++ b/src/main/java/net/fabricmc/loom/task/service/SourceMappingsService.java @@ -1,7 +1,7 @@ /* * This file is part of fabric-loom, licensed under the MIT License (MIT). * - * Copyright (c) 2024 FabricMC + * Copyright (c) 2024-2025 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 @@ -34,8 +34,12 @@ import java.nio.file.Path; import org.gradle.api.Project; import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFiles; +import org.gradle.api.tasks.Optional; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -61,17 +65,23 @@ public class SourceMappingsService extends Service getProcessorHash(); // the hash of the processors applied to the mappings } public static Provider create(Project project) { - final Path mappings = getMappings(project); + final Property hash = project.getObjects().property(String.class); + final Path mappings = getMappings(project, hash); return TYPE.create(project, options -> { options.getMappings().from(project.file(mappings)); + options.getProcessorHash().set(hash); }); } - private static Path getMappings(Project project) { + private static Path getMappings(Project project, Property hashProperty) { final LoomGradleExtension extension = LoomGradleExtension.get(project); final MinecraftJarProcessorManager jarProcessor = MinecraftJarProcessorManager.create(project); @@ -80,8 +90,11 @@ public class SourceMappingsService extends Service