Select jar configuration based on which sides are present (#1182)

* auto select jar configuration based on which sides are present

* move logic into jar configuration property convention
This commit is contained in:
Space Walker
2024-09-30 15:37:25 +02:00
committed by GitHub
parent 4f6992430f
commit e5b785ab41
4 changed files with 37 additions and 7 deletions

View File

@@ -41,6 +41,7 @@ import net.fabricmc.loom.configuration.LoomDependencyManager;
import net.fabricmc.loom.configuration.accesswidener.AccessWidenerFile;
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingsFactory;
import net.fabricmc.loom.configuration.providers.mappings.MappingConfiguration;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMetadataProvider;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
import net.fabricmc.loom.configuration.providers.minecraft.library.LibraryProcessorManager;
import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMinecraftProvider;
@@ -68,6 +69,10 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI {
LoomDependencyManager getDependencyManager();
MinecraftMetadataProvider getMetadataProvider();
void setMetadataProvider(MinecraftMetadataProvider metadataProvider);
MinecraftProvider getMinecraftProvider();
void setMinecraftProvider(MinecraftProvider minecraftProvider);

View File

@@ -60,7 +60,6 @@ import net.fabricmc.loom.configuration.processors.MinecraftJarProcessorManager;
import net.fabricmc.loom.configuration.processors.ModJavadocProcessor;
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingsFactory;
import net.fabricmc.loom.configuration.providers.mappings.MappingConfiguration;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftJarConfiguration;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMetadataProvider;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftSourceSets;
@@ -69,7 +68,6 @@ import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMi
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
import net.fabricmc.loom.extension.MixinExtension;
import net.fabricmc.loom.util.Checksum;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.ExceptionUtil;
import net.fabricmc.loom.util.ProcessUtil;
import net.fabricmc.loom.util.gradle.GradleUtils;
@@ -154,13 +152,10 @@ public abstract class CompileConfiguration implements Runnable {
final LoomGradleExtension extension = configContext.extension();
final MinecraftMetadataProvider metadataProvider = MinecraftMetadataProvider.create(configContext);
extension.setMetadataProvider(metadataProvider);
var jarConfiguration = extension.getMinecraftJarConfiguration().get();
if (jarConfiguration == MinecraftJarConfiguration.MERGED && !metadataProvider.getVersionMeta().isVersionOrNewer(Constants.RELEASE_TIME_1_3)) {
jarConfiguration = MinecraftJarConfiguration.LEGACY_MERGED;
}
// Provide the vanilla mc jars
final MinecraftProvider minecraftProvider = jarConfiguration.createMinecraftProvider(metadataProvider, configContext);
extension.setMinecraftProvider(minecraftProvider);

View File

@@ -68,8 +68,10 @@ import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuil
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingsFactory;
import net.fabricmc.loom.configuration.providers.minecraft.ManifestLocations;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftJarConfiguration;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMetadataProvider;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftSourceSets;
import net.fabricmc.loom.task.GenerateSourcesTask;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.DeprecationHelper;
import net.fabricmc.loom.util.MirrorUtil;
import net.fabricmc.loom.util.fmj.FabricModJson;
@@ -151,7 +153,23 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
this.minecraftJarProcessors.finalizeValueOnRead();
//noinspection unchecked
this.minecraftJarConfiguration = project.getObjects().property((Class<MinecraftJarConfiguration<?, ?, ?>>) (Class<?>) MinecraftJarConfiguration.class).convention(MinecraftJarConfiguration.MERGED);
this.minecraftJarConfiguration = project.getObjects().property((Class<MinecraftJarConfiguration<?, ?, ?>>) (Class<?>) MinecraftJarConfiguration.class)
.convention(project.provider(() -> {
final LoomGradleExtension extension = LoomGradleExtension.get(project);
final MinecraftMetadataProvider metadataProvider = extension.getMetadataProvider();
// if no configuration is selected by the user, attempt to select one
// based on the mc version and which sides are present for it
if (!metadataProvider.getVersionMeta().downloads().containsKey("server")) {
return MinecraftJarConfiguration.CLIENT_ONLY;
} else if (!metadataProvider.getVersionMeta().downloads().containsKey("client")) {
return MinecraftJarConfiguration.SERVER_ONLY;
} else if (metadataProvider.getVersionMeta().isVersionOrNewer(Constants.RELEASE_TIME_1_3)) {
return MinecraftJarConfiguration.MERGED;
} else {
return MinecraftJarConfiguration.LEGACY_MERGED;
}
}));
this.minecraftJarConfiguration.finalizeValueOnRead();
this.accessWidener.finalizeValueOnRead();

View File

@@ -50,6 +50,7 @@ import net.fabricmc.loom.configuration.providers.mappings.IntermediaryMappingsPr
import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingsFactory;
import net.fabricmc.loom.configuration.providers.mappings.MappingConfiguration;
import net.fabricmc.loom.configuration.providers.mappings.NoOpIntermediateMappingsProvider;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftMetadataProvider;
import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider;
import net.fabricmc.loom.configuration.providers.minecraft.library.LibraryProcessorManager;
import net.fabricmc.loom.configuration.providers.minecraft.mapped.IntermediaryMinecraftProvider;
@@ -66,6 +67,7 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
private final List<AccessWidenerFile> transitiveAccessWideners = new ArrayList<>();
private LoomDependencyManager dependencyManager;
private MinecraftMetadataProvider metadataProvider;
private MinecraftProvider minecraftProvider;
private MappingConfiguration mappingConfiguration;
private NamedMinecraftProvider<?> namedMinecraftProvider;
@@ -130,6 +132,16 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
return Objects.requireNonNull(dependencyManager, "Cannot get LoomDependencyManager before it has been setup");
}
@Override
public MinecraftMetadataProvider getMetadataProvider() {
return Objects.requireNonNull(metadataProvider, "Cannot get MinecraftMetadataProvider before it has been setup");
}
@Override
public void setMetadataProvider(MinecraftMetadataProvider metadataProvider) {
this.metadataProvider = metadataProvider;
}
@Override
public MinecraftProvider getMinecraftProvider() {
return Objects.requireNonNull(minecraftProvider, "Cannot get MinecraftProvider before it has been setup");