@@ -0,0 +1,1866 @@
+package xyz.upperlevel.uppercore.util;%0A%0Aimport xyz.upperlevel.uppercore.Uppercore;%0A%0Aimport java.io.File;%0Aimport java.io.IOException;%0Aimport java.io.InputStream;%0Aimport java.net.MalformedURLException;%0Aimport java.net.URL;%0Aimport java.nio.file.Files;%0Aimport java.nio.file.StandardCopyOption;%0Aimport java.util.function.Predicate;%0A%0Apublic final class DynLib %7B%0A    private DynLib() %7B%0A    %7D%0A%0A    public static void download(URL url, File file) throws IOException %7B%0A        Uppercore.logger().fine(String.format(%22Downloading: %25s%22, url));%0A        try (InputStream in = url.openStream()) %7B%0A            Files.copy(in, file.toPath(), StandardCopyOption.REPLACE_EXISTING);%0A        %7D%0A    %7D%0A%0A    public static void load(File file) throws MalformedURLException %7B%0A        Uppercore.logger().fine(String.format(%22Loading: %25s%22, file.getName()));%0A        ExternalJarUtil.addUrl(file);%0A    %7D%0A%0A    public static boolean isLoaded(String classpath) %7B%0A        try %7B%0A            Class.forName(classpath);%0A            return true;%0A        %7D catch (ClassNotFoundException e) %7B%0A            return false;%0A        %7D%0A    %7D%0A%0A    public static Predicate%3CFile%3E req(String url) %7B%0A        return folder -%3E %7B%0A            try %7B%0A                URL parsedUrl = new URL(url);%0A                File file = new File(folder, new File(parsedUrl.getPath()).getName());%0A                download(parsedUrl, file);%0A                load(file);%0A                return true;%0A            %7D catch (IOException e) %7B%0A                throw new IllegalStateException(e);%0A            %7D%0A        %7D;%0A    %7D%0A%0A    public static Predicate%3CFile%3E check(String classpath) %7B%0A        return folder -%3E isLoaded(classpath);%0A    %7D%0A%0A    public static Predicate%3CFile%3E reqAndCheck(String url, String classpath) %7B%0A        return folder -%3E %7B%0A            req(url).test(folder);%0A            return check(classpath).test(folder);%0A        %7D;%0A    %7D%0A%7D%0A

Add DynLib util to manage dynamically loaded JAR files