diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index 7c086f7..74fa23a 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -236,6 +236,12 @@ public class LoomGradleExtension { } public File getNativesDirectory() { + Object customNativesDir = project.getProperties().get("fabric.loom.natives.dir"); + + if (customNativesDir != null) { + return new File((String) customNativesDir); + } + File natives = new File(getUserCache(), "natives/" + getMinecraftProvider().getMinecraftVersion()); if (!natives.exists()) { @@ -245,6 +251,10 @@ public class LoomGradleExtension { return natives; } + public boolean hasCustomNatives() { + return project.getProperties().get("fabric.loom.natives.dir") != null; + } + public File getDevLauncherConfig() { return new File(getProjectPersistentCache(), "launch.cfg"); } diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java index 0a63d2a..0bec8f9 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftNativesProvider.java @@ -45,6 +45,14 @@ public class MinecraftNativesProvider { File nativesDir = extension.getNativesDirectory(); File jarStore = extension.getNativesJarStore(); + if (extension.hasCustomNatives()) { + if (!nativesDir.exists()) { + throw new RuntimeException("Could no find custom natives directory at " + nativesDir.getAbsolutePath()); + } + + return; + } + for (MinecraftVersionInfo.Library library : versionInfo.libraries) { File libJarFile = library.getFile(jarStore);