From dd68c84226443013d3a6a2c62a438304f92b15d4 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 2 Dec 2020 20:18:12 +0000 Subject: [PATCH] Allow specifying natives directory with the `fabric.loom.natives.dir` gradle property. Note this is designed to allow easy usage of custom natives, thus will not populate the directory with the default natives. --- .../java/net/fabricmc/loom/LoomGradleExtension.java | 10 ++++++++++ .../loom/providers/MinecraftNativesProvider.java | 8 ++++++++ 2 files changed, 18 insertions(+) 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);