Add 'fabric.loom.disableObfuscation' property to disable all remapping. (#1409)

* Add 'fabric.loom.disableObfuscation' property

* More work, the test passes now.

* Fix
This commit is contained in:
modmuss
2025-10-30 20:11:52 +00:00
committed by GitHub
parent 5892364fdf
commit 577e5c8bfd
17 changed files with 278 additions and 64 deletions

View File

@@ -39,6 +39,7 @@ import org.gradle.api.configuration.BuildFeatures;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.file.FileCollection;
import org.gradle.api.provider.ListProperty;
import org.gradle.api.provider.Property;
import net.fabricmc.loom.LoomGradleExtension;
import net.fabricmc.loom.api.mappings.intermediate.IntermediateMappingsProvider;
@@ -55,8 +56,10 @@ 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;
import net.fabricmc.loom.configuration.providers.minecraft.mapped.NamedMinecraftProvider;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.download.Download;
import net.fabricmc.loom.util.download.DownloadBuilder;
import net.fabricmc.loom.util.gradle.GradleUtils;
public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implements LoomGradleExtension {
private final Project project;
@@ -78,6 +81,8 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
private final boolean configurationCacheActive;
private final boolean isolatedProjectsActive;
private final boolean isCollectingDependencyVerificationMetadata;
private final Property<Boolean> disableObfuscation;
private final Property<Boolean> dontRemap;
@Inject
protected abstract BuildFeatures getBuildFeatures();
@@ -108,6 +113,14 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
configurationCacheActive = getBuildFeatures().getConfigurationCache().getActive().get();
isolatedProjectsActive = getBuildFeatures().getIsolatedProjects().getActive().get();
isCollectingDependencyVerificationMetadata = !project.getGradle().getStartParameter().getWriteDependencyVerifications().isEmpty();
disableObfuscation = project.getObjects().property(Boolean.class);
dontRemap = project.getObjects().property(Boolean.class);
disableObfuscation.set(project.provider(() -> GradleUtils.getBooleanProperty(getProject(), Constants.Properties.DISABLE_OBFUSCATION)));
disableObfuscation.finalizeValueOnRead();
dontRemap.set(disableObfuscation.map(notObfuscated -> notObfuscated || GradleUtils.getBooleanProperty(getProject(), Constants.Properties.DONT_REMAP)));
dontRemap.finalizeValueOnRead();
if (refreshDeps) {
project.getLogger().lifecycle("Refresh dependencies is in use, loom will be significantly slower.");
@@ -128,16 +141,6 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
return loomFiles;
}
@Override
public void setDependencyManager(LoomDependencyManager dependencyManager) {
this.dependencyManager = dependencyManager;
}
@Override
public LoomDependencyManager getDependencyManager() {
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");
@@ -160,11 +163,19 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
@Override
public MappingConfiguration getMappingConfiguration() {
if (disableObfuscation()) {
throw new UnsupportedOperationException("Cannot get mappings configuration in a non-obfuscated environment");
}
return Objects.requireNonNull(mappingConfiguration, "Cannot get MappingsProvider before it has been setup");
}
@Override
public void setMappingConfiguration(MappingConfiguration mappingConfiguration) {
if (disableObfuscation()) {
throw new UnsupportedOperationException("Cannot set mappings configuration in a non-obfuscated environment");
}
this.mappingConfiguration = mappingConfiguration;
}
@@ -278,6 +289,10 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
@Override
public Collection<LayeredMappingsFactory> getLayeredMappingFactories() {
if (disableObfuscation()) {
throw new UnsupportedOperationException("Cannot get layered mapping factories in a non-obfuscated environment");
}
hasEvaluatedLayeredMappings = true;
return Collections.unmodifiableCollection(layeredMappingsDependencyMap.values());
}
@@ -308,4 +323,14 @@ public abstract class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl
public boolean isCollectingDependencyVerificationMetadata() {
return isCollectingDependencyVerificationMetadata;
}
@Override
public boolean dontRemapOutputs() {
return dontRemap.get();
}
@Override
public boolean disableObfuscation() {
return disableObfuscation.get();
}
}