Isolate mappings provider and TR service on Forge

This commit is contained in:
Juuz
2022-05-17 21:07:17 +03:00
parent 4369492b55
commit 668c9dbeba
3 changed files with 17 additions and 3 deletions

View File

@@ -284,7 +284,7 @@ public final class CompileConfiguration {
minecraftProvider.provide();
final DependencyInfo mappingsDep = DependencyInfo.create(project, Constants.Configurations.MAPPINGS);
final MappingsProviderImpl mappingsProvider = MappingsProviderImpl.getInstance(project, mappingsDep, minecraftProvider);
final MappingsProviderImpl mappingsProvider = MappingsProviderImpl.getInstance(project, extension, mappingsDep, minecraftProvider);
extension.setMappingsProvider(mappingsProvider);
mappingsProvider.applyToProject(project, mappingsDep);

View File

@@ -42,6 +42,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.StringJoiner;
import java.util.function.Supplier;
import com.google.common.base.Stopwatch;
@@ -119,8 +120,17 @@ public class MappingsProviderImpl implements MappingsProvider, SharedService {
this.intermediaryService = intermediaryService;
}
public static synchronized MappingsProviderImpl getInstance(Project project, DependencyInfo dependency, MinecraftProvider minecraftProvider) {
return SharedServiceManager.get(project).getOrCreateService("MappingsProvider:%s:%s".formatted(dependency.getDepString(), minecraftProvider.minecraftVersion()), () -> {
public static synchronized MappingsProviderImpl getInstance(Project project, LoomGradleExtension extension, DependencyInfo dependency, MinecraftProvider minecraftProvider) {
StringJoiner id = new StringJoiner(":").add("MappingsProvider");
id.add(dependency.getDepString());
id.add(minecraftProvider.minecraftVersion());
// Arch: we add :forge since Forge support uses a different MappingsProvider.
if (extension.isForge()) {
id.add("forge");
}
return SharedServiceManager.get(project).getOrCreateService(id.toString(), () -> {
Supplier<IntermediateMappingsService> intermediaryService = Suppliers.memoize(() -> IntermediateMappingsService.getInstance(project, minecraftProvider));
return create(project, dependency, minecraftProvider, intermediaryService);
});

View File

@@ -72,6 +72,10 @@ public class TinyRemapperService implements SharedService {
joiner.add(project.getPath());
}
if (extension.isForge()) {
joiner.add("forge");
}
final String id = joiner.toString();
TinyRemapperService service = sharedServiceManager.getOrCreateService(id, () -> {