package net.minecraftforge.gradle.util.json.version; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; public class Version { public String id; public Date time; public Date releaseTime; public String type; public String minecraftArguments; public String inheritsFrom; private List<Library> libraries; public String mainClass; public int minimumLauncherVersion; public String incompatibilityReason; public AssetIndexRef assetIndex; private Map<String, Download> downloads; public List<OSRule> rules; private List<Library> _libraries; public List<Library> getLibraries() { if (_libraries == null) { _libraries = new ArrayList<Library>(); if (libraries == null) return _libraries; for (Library lib : libraries) { if (lib.applies()) { _libraries.add(lib); } } } return _libraries; } public String getClientUrl() { return downloads.get("client").url; } public String getServerUrl() { return downloads.get("server").url; } /** * Populates this instance with information from another version json. * @param version Version json to extend from */ public void extendFrom(Version version) { // strings. replace if null. if (minecraftArguments == null) minecraftArguments = version.minecraftArguments; if (mainClass == null) mainClass = version.mainClass; if (incompatibilityReason == null) incompatibilityReason = version.incompatibilityReason; if (assetIndex == null) assetIndex = version.assetIndex; if (downloads == null) downloads = version.downloads; // lists. repalce if null, add if not. if (libraries == null) libraries = version.libraries; else if (version.libraries != null) libraries.addAll(0, version.libraries); if (rules == null) rules = version.rules; else if (version.rules != null) rules.addAll(0, version.rules); } }