private static void enqueueCacheEntry(String name, String version, String packCacheLocation, String minecraftVersion, List<String> installationQueue) {
        //Get entry location
        String entryPath = getCacheEntryPath(name, version, packCacheLocation);

        if (entryPath != null) {
            
            //Load entry config
            JSONObject entryConfig;
            try {
                entryConfig = Util.readJSONFile(entryPath + "/entry.json");
            } catch (IOException ex) {
                Logger.warning("Instances.enqueueCacheEntry", "Could not load config for cache entry!");
                return;
            }
            
            //Check Minecraft version
            if (!entryConfig.get("minecraftversion").equals(minecraftVersion)) {
                Logger.warning("Instances.enqueueCacheEntry", "Entry is not compatible with this version of Minecraft!");
                return;
            }
            
            //Add to queue
            installationQueue.add(name + "-" + version);

            //Enqueue dependencies
            if (entryConfig.get("dependencies") != null) {
                for (Object obj : (JSONArray)entryConfig.get("dependencies")) {
                    JSONObject dependencyObj = (JSONObject)obj;
                    if (!installationQueue.contains(dependencyObj.get("name").toString() + "-" + dependencyObj.get("version").toString())) {
                        Logger.info("Instances.getInstallationQueue", "Enqueueing '" + dependencyObj.get("name").toString() + "'...");
                        enqueueCacheEntry(dependencyObj.get("name").toString(), dependencyObj.get("version").toString(), packCacheLocation, minecraftVersion, installationQueue);
                    }
                }
            }
        } else {
            Logger.warning("Instances.enqueueCacheEntry", "Cache entry not found!");
        }
    }