Update to Unprotect 2.0.1

Fixes #304 by removing transitive loader/ModLauncher deps.
This commit is contained in:
Juuz
2025-10-06 20:39:31 +03:00
parent 6a9f5cec3f
commit 24ffed6f9e
3 changed files with 18 additions and 3 deletions

View File

@@ -22,7 +22,7 @@ forge-runtime = "2.0.9"
access-transformers = "3.0.1"
access-transformers-new = "8.0.5"
access-transformers-neo = "10.0.2"
unprotect = "1.3.1"
unprotect = "2.0.1"
asm = "9.7"
access-transformers-log4j = "2.17.1"
forge-installer-tools = "1.2.0"
@@ -53,7 +53,8 @@ mcp-annotations = { module = "dev.architectury:mcp-annotations", version.ref = "
access-transformers = { module = "net.minecraftforge:accesstransformers", version.ref = "access-transformers" }
access-transformers-new = { module = "net.minecraftforge:accesstransformers", version.ref = "access-transformers-new" }
access-transformers-neo = { module = "net.neoforged.accesstransformers:at-cli", version.ref = "access-transformers-neo" }
unprotect = { module = "io.github.juuxel:unprotect", version.ref = "unprotect" }
unprotect-fancymodloader10 = { module = "io.github.juuxel:unprotect-fancymodloader10", version.ref = "unprotect" }
unprotect-modlauncher = { module = "io.github.juuxel:unprotect-modlauncher", version.ref = "unprotect" }
asm = { module = "org.ow2.asm:asm", version.ref = "asm" }
access-transformers-log4j-bom = { module = "org.apache.logging.log4j:log4j-bom", version.ref = "access-transformers-log4j" }
forge-installer-tools = { module = "net.minecraftforge:installertools", version.ref = "forge-installer-tools" }

View File

@@ -39,6 +39,7 @@ import dev.architectury.loom.mappings.MappingOption;
import dev.architectury.loom.neoforge.StringConstantPatcher;
import dev.architectury.loom.util.ClassVisitorUtil;
import dev.architectury.loom.util.PropertyUtil;
import dev.architectury.loom.util.Version;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.artifacts.ModuleDependency;
@@ -58,6 +59,7 @@ import net.fabricmc.loom.util.Checksum;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.ExceptionUtil;
import net.fabricmc.loom.util.FileSystemUtil;
import net.fabricmc.loom.util.LoomVersions;
import net.fabricmc.loom.util.service.ScopedServiceFactory;
import net.fabricmc.loom.util.service.ServiceFactory;
import net.fabricmc.mappingio.tree.MappingTree;
@@ -70,6 +72,7 @@ public class ForgeLibrariesProvider {
private static final String FML_LOADER_NAME = "fmlloader";
private static final String FANCYML_LOADER_GROUP = "net.neoforged.fancymodloader";
private static final String FANCYML_LOADER_NAME = "loader";
private static final Version FANCYML_LOADER_UNPROTECT_BACKEND_VERSION = Version.parse("10.0.14");
private static final String FORGE_OBJECT_HOLDER_FILE = "net/minecraftforge/fml/common/asm/ObjectHolderDefinalize.class";
private static final String FORGE_MOD_DIR_TRANSFORMER_DISCOVERER_FILE = "net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.class";
@@ -128,12 +131,20 @@ public class ForgeLibrariesProvider {
.detachedConfiguration(dependencies.toArray(new Dependency[0]))
.getResolvedConfiguration();
boolean isFancyModLoader10OrNewer = false;
for (ResolvedArtifact artifact : config.getResolvedArtifacts()) {
final ModuleVersionIdentifier id = artifact.getModuleVersion().getId();
final Object dep;
final boolean isFML = FML_LOADER_GROUP.equals(id.getGroup()) && FML_LOADER_NAME.equals(id.getName());
final boolean isFancyML = FANCYML_LOADER_GROUP.equals(id.getGroup()) && FANCYML_LOADER_NAME.equals(id.getName());
if (isFancyML && extension.isNeoForge() && Version.parse(id.getVersion()).compareTo(FANCYML_LOADER_UNPROTECT_BACKEND_VERSION) >= 0) {
// Note: check extension.isNeoForge() to prevent this check triggering on legacy "47.x" versions of FML
// from before Neo replaced the versioning scheme.
isFancyModLoader10OrNewer = true;
}
if (isFML || isFancyML) {
// If FML, remap it.
try (var serviceFactory = new ScopedServiceFactory()) {
@@ -159,6 +170,9 @@ public class ForgeLibrariesProvider {
DependencyProvider.addDependency(project, dep, Constants.Configurations.FORGE_DEPENDENCIES);
}
LoomVersions unprotect = isFancyModLoader10OrNewer ? LoomVersions.UNPROTECT_FANCYMODLOADER10 : LoomVersions.UNPROTECT_MODLAUNCHER;
DependencyProvider.addDependency(project, unprotect.mavenNotation(), Constants.Configurations.FORGE_EXTRA);
}
// Returns a Gradle dependency notation.

View File

@@ -207,7 +207,7 @@ public abstract class LoomConfigurations implements Runnable {
extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, Constants.Configurations.FORGE_EXTRA);
// Add Forge/NeoForge shared dev-time dependencies
getDependencies().add(Constants.Configurations.FORGE_EXTRA, LoomVersions.UNPROTECT.mavenNotation());
// TODO: Can we get rid of javax annotations on modern versions?
getDependencies().add(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, LoomVersions.JAVAX_ANNOTATIONS.mavenNotation());
// Add Forge-only dev-time dependencies