Now stores files in the user gradle folder, will prevent downloading assets for each project
parent
547c242ff0
commit
3eb9b77746
|
@ -56,6 +56,7 @@ public class AbstractPlugin implements Plugin<Project> {
|
|||
project.apply(ImmutableMap.of("plugin", "idea"));
|
||||
|
||||
project.getExtensions().create("minecraft", LoomGradleExtension.class);
|
||||
project.getExtensions().getByType(LoomGradleExtension.class).project = project;
|
||||
|
||||
// Force add Mojang repository
|
||||
addMavenRepo(target, "Mojang", "https://libraries.minecraft.net/");
|
||||
|
@ -152,6 +153,11 @@ public class AbstractPlugin implements Plugin<Project> {
|
|||
flatDirectoryArtifactRepository.setName("LoomCacheFiles");
|
||||
});
|
||||
|
||||
project1.getRepositories().flatDir(flatDirectoryArtifactRepository -> {
|
||||
flatDirectoryArtifactRepository.dir(extension.getFabricUserCache());
|
||||
flatDirectoryArtifactRepository.setName("UserCacheFiles");
|
||||
});
|
||||
|
||||
project1.getRepositories().maven(mavenArtifactRepository -> {
|
||||
mavenArtifactRepository.setName("FabricMC");
|
||||
mavenArtifactRepository.setUrl("http://maven.fabricmc.net/");
|
||||
|
@ -175,7 +181,7 @@ public class AbstractPlugin implements Plugin<Project> {
|
|||
DownloadTask.downloadMcJson(extension, project1.getLogger());
|
||||
Version version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class);
|
||||
for (Version.Library library : version.libraries) {
|
||||
if (library.allowed() && library.getFile() != null) {
|
||||
if (library.allowed() && library.getFile(extension) != null) {
|
||||
String configName = Constants.CONFIG_MC_DEPENDENCIES;
|
||||
if (library.name.contains("java3d") || library.name.contains("paulscode") || library.name.contains("lwjgl") || library.name.contains("twitch") || library.name.contains("jinput")) {
|
||||
configName = Constants.CONFIG_MC_DEPENDENCIES_CLIENT;
|
||||
|
|
|
@ -24,8 +24,34 @@
|
|||
|
||||
package net.fabricmc.loom;
|
||||
|
||||
import org.gradle.api.Project;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class LoomGradleExtension {
|
||||
public String version;
|
||||
public String runDir = "run";
|
||||
public String fabricVersion;
|
||||
|
||||
//Not to be set in the build.gradle
|
||||
public Project project;
|
||||
|
||||
public String getVersionString() {
|
||||
if (isModWorkspace()) {
|
||||
return version + "-" + fabricVersion;
|
||||
}
|
||||
return version;
|
||||
}
|
||||
|
||||
public boolean isModWorkspace() {
|
||||
return fabricVersion != null && !fabricVersion.isEmpty();
|
||||
}
|
||||
|
||||
public File getFabricUserCache() {
|
||||
File userCache = new File(project.getGradle().getGradleUserHomeDir(), "caches" + File.separator + "loom");
|
||||
if (!userCache.exists()) {
|
||||
userCache.mkdirs();
|
||||
}
|
||||
return userCache;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ public class DownloadTask extends DefaultTask {
|
|||
|
||||
if (getProject().getConfigurations().getByName(Constants.CONFIG_MC_DEPENDENCIES).getState() == Configuration.State.UNRESOLVED) {
|
||||
for (Version.Library library : version.libraries) {
|
||||
if (library.allowed() && library.getFile() != null) {
|
||||
if (library.allowed() && library.getFile(extension) != null) {
|
||||
// By default, they are all available on all sides
|
||||
String configName = Constants.CONFIG_MC_DEPENDENCIES;
|
||||
if (library.name.contains("java3d") || library.name.contains("paulscode") || library.name.contains("lwjgl") || library.name.contains("twitch") || library.name.contains("jinput")) {
|
||||
|
@ -100,7 +100,7 @@ public class DownloadTask extends DefaultTask {
|
|||
|
||||
Version.AssetIndex assetIndex = version.assetIndex;
|
||||
|
||||
File assets = new File(Constants.CACHE_FILES, "assets");
|
||||
File assets = new File(extension.getFabricUserCache(), "assets-" + extension.version);
|
||||
if (!assets.exists()) {
|
||||
assets.mkdirs();
|
||||
}
|
||||
|
@ -143,8 +143,8 @@ public class DownloadTask extends DefaultTask {
|
|||
public static void downloadMcJson(LoomGradleExtension extension, Logger logger) throws IOException {
|
||||
if (!Constants.MINECRAFT_JSON.get(extension).exists()) {
|
||||
logger.lifecycle(":downloading minecraft json");
|
||||
FileUtils.copyURLToFile(new URL("https://launchermeta.mojang.com/mc/game/version_manifest.json"), Constants.VERSION_MANIFEST);
|
||||
ManifestVersion mcManifest = new GsonBuilder().create().fromJson(FileUtils.readFileToString(Constants.VERSION_MANIFEST), ManifestVersion.class);
|
||||
FileUtils.copyURLToFile(new URL("https://launchermeta.mojang.com/mc/game/version_manifest.json"), Constants.VERSION_MANIFEST.get(extension));
|
||||
ManifestVersion mcManifest = new GsonBuilder().create().fromJson(FileUtils.readFileToString(Constants.VERSION_MANIFEST.get(extension)), ManifestVersion.class);
|
||||
|
||||
Optional<ManifestVersion.Versions> optionalVersion = mcManifest.versions.stream().filter(versions -> versions.id.equalsIgnoreCase(extension.version)).findFirst();
|
||||
if (optionalVersion.isPresent()) {
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
package net.fabricmc.loom.task;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
import org.gradle.api.DefaultTask;
|
||||
import org.gradle.api.tasks.TaskAction;
|
||||
|
@ -35,9 +36,10 @@ import java.io.FileNotFoundException;
|
|||
public class ExtractNativesTask extends DefaultTask {
|
||||
@TaskAction
|
||||
public void extractNatives() throws FileNotFoundException {
|
||||
if (!Constants.MINECRAFT_NATIVES.exists()) {
|
||||
LoomGradleExtension extension = getProject().getExtensions().getByType(LoomGradleExtension.class);
|
||||
if (!Constants.MINECRAFT_NATIVES.get(extension).exists()) {
|
||||
for (File source : getProject().getConfigurations().getByName(Constants.CONFIG_NATIVES)) {
|
||||
ZipUtil.unpack(source, Constants.MINECRAFT_NATIVES);
|
||||
ZipUtil.unpack(source, Constants.MINECRAFT_NATIVES.get(extension));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -103,7 +103,7 @@ public class GenIdeaProjectTask extends DefaultTask {
|
|||
Version version = gson.fromJson(new FileReader(Constants.MINECRAFT_JSON.get(extension)), Version.class);
|
||||
|
||||
for (Version.Library library : version.libraries) {
|
||||
if (library.allowed() && library.getFile() != null && library.getFile().exists()) {
|
||||
if (library.allowed() && library.getFile(extension) != null && library.getFile(extension).exists()) {
|
||||
Element node = doc.createElement("orderEntry");
|
||||
node.setAttribute("type", "module-library");
|
||||
Element libraryElement = doc.createElement("library");
|
||||
|
@ -111,7 +111,7 @@ public class GenIdeaProjectTask extends DefaultTask {
|
|||
Element javadoc = doc.createElement("JAVADOC");
|
||||
Element sources = doc.createElement("SOURCES");
|
||||
Element root = doc.createElement("root");
|
||||
root.setAttribute("url", "jar://" + library.getFile().getAbsolutePath() + "!/");
|
||||
root.setAttribute("url", "jar://" + library.getFile(extension).getAbsolutePath() + "!/");
|
||||
classes.appendChild(root);
|
||||
libraryElement.appendChild(classes);
|
||||
libraryElement.appendChild(javadoc);
|
||||
|
@ -119,7 +119,7 @@ public class GenIdeaProjectTask extends DefaultTask {
|
|||
node.appendChild(libraryElement);
|
||||
component.appendChild(node);
|
||||
} else if (!library.allowed()) {
|
||||
this.getLogger().info(":" + library.getFile().getName() + " is not allowed on this os");
|
||||
this.getLogger().info(":" + library.getFile(extension).getName() + " is not allowed on this os");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,7 @@ public class GenIdeaProjectTask extends DefaultTask {
|
|||
ideaClient.configName = "Minecraft Client";
|
||||
ideaClient.runDir = "file://$PROJECT_DIR$/" + extension.runDir;
|
||||
ideaClient.vmArgs = "-Djava.library.path=../.gradle/minecraft/natives/ -Dfabric.development=true";
|
||||
ideaClient.programArgs = "--tweakClass net.fabricmc.base.launch.FabricClientTweaker --assetIndex " + version.assetIndex.id + " --assetsDir " + new File(Constants.CACHE_FILES, "assets").getAbsolutePath();
|
||||
ideaClient.programArgs = "--tweakClass net.fabricmc.base.launch.FabricClientTweaker --assetIndex " + version.assetIndex.id + " --assetsDir " + new File(extension.getFabricUserCache(), "assets-" + extension.version).getAbsolutePath();
|
||||
|
||||
runManager.appendChild(ideaClient.genRuns(runManager));
|
||||
|
||||
|
|
|
@ -49,10 +49,14 @@ public class MapJarsTask extends DefaultTask {
|
|||
if (Constants.MAPPINGS_DIR.exists()) {
|
||||
FileUtils.deleteDirectory(Constants.MAPPINGS_DIR);
|
||||
}
|
||||
if (Constants.MINECRAFT_MAPPED_JAR.get(extension).exists()) {
|
||||
Constants.MINECRAFT_MAPPED_JAR.get(extension).delete();
|
||||
}
|
||||
ZipUtil.unpack(Constants.MAPPINGS_ZIP, Constants.MAPPINGS_DIR);
|
||||
|
||||
File tempFile = new File(Constants.CACHE_FILES, "tempJar.jar");
|
||||
if (tempFile.exists()) {
|
||||
//This should not happen, just want to be safe
|
||||
tempFile.delete();
|
||||
}
|
||||
|
||||
|
|
|
@ -37,22 +37,19 @@ public class Constants {
|
|||
public static final File WORKING_DIRECTORY = new File(".");
|
||||
public static final File CACHE_FILES = new File(WORKING_DIRECTORY, ".gradle/minecraft");
|
||||
|
||||
public static final IDelayed<File> MINECRAFT_CLIENT_JAR = new DelayedFile(extension -> new File(CACHE_FILES, extension.version + "-client.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_SERVER_JAR = new DelayedFile(extension -> new File(CACHE_FILES, extension.version + "-server.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_MERGED_JAR = new DelayedFile(extension -> new File(CACHE_FILES, extension.version + "-merged.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_MAPPED_JAR = new DelayedFile(extension -> new File(CACHE_FILES, extension.version + "-mapped.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_CLIENT_JAR = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.version + "-client.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_SERVER_JAR = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.version + "-server.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_MERGED_JAR = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.version + "-merged.jar"));
|
||||
public static final IDelayed<File> MINECRAFT_MAPPED_JAR = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.getVersionString() + "-mapped.jar"));
|
||||
|
||||
public static final File MAPPINGS_ZIP = new File(CACHE_FILES, "mappings.zip");
|
||||
public static final File MAPPINGS_DIR = new File(CACHE_FILES, "mappings");
|
||||
|
||||
public static final File MINECRAFT_LIBS = new File(CACHE_FILES, "libs");
|
||||
public static final File MINECRAFT_NATIVES = new File(CACHE_FILES, "natives");
|
||||
public static final IDelayed<File> MINECRAFT_JSON = new DelayedFile(extension -> new File(CACHE_FILES, extension.version + "-info.json"));
|
||||
public static final IDelayed<File> MINECRAFT_LIBS = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.version + "-libs"));
|
||||
public static final IDelayed<File> MINECRAFT_NATIVES = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.version + "-natives"));
|
||||
public static final IDelayed<File> MINECRAFT_JSON = new DelayedFile(extension -> new File(extension.getFabricUserCache(), extension.version + "-info.json"));
|
||||
|
||||
public static final File MINECRAFT_ROOT = new File(WORKING_DIRECTORY, "minecraft");
|
||||
public static final IDelayed<File> MAPPING_SRG = new DelayedFile(extension -> new File(WORKING_DIRECTORY, "mappings.srg"));
|
||||
|
||||
public static final File VERSION_MANIFEST = new File(CACHE_FILES, "version_manifest.json");
|
||||
public static final IDelayed<File> VERSION_MANIFEST = new DelayedFile(extension -> new File(extension.getFabricUserCache(), "version_manifest.json"));
|
||||
|
||||
public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/";
|
||||
public static final String RESOURCES_BASE = "http://resources.download.minecraft.net/";
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
package net.fabricmc.loom.util;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
@ -60,9 +61,9 @@ public class Version {
|
|||
return Constants.LIBRARIES_BASE + path;
|
||||
}
|
||||
|
||||
public File getFile() {
|
||||
public File getFile(LoomGradleExtension extension) {
|
||||
String[] parts = this.name.split(":", 3);
|
||||
return new File(Constants.MINECRAFT_LIBS, parts[0].replace(".", File.separator) + File.separator + parts[1] + File.separator + parts[2] + File.separator + parts[1] + "-" + parts[2] + getClassifier() + ".jar");
|
||||
return new File(Constants.MINECRAFT_LIBS.get(extension), parts[0].replace(".", File.separator) + File.separator + parts[1] + File.separator + parts[2] + File.separator + parts[1] + "-" + parts[2] + getClassifier() + ".jar");
|
||||
}
|
||||
|
||||
public String getSha1() {
|
||||
|
|
Loading…
Reference in New Issue