完善了一下下载库以及 TLib 类
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
package com.ilummc.tlib.dependency;
|
||||
|
||||
import com.ilummc.eagletdl.EagletTask;
|
||||
import com.ilummc.eagletdl.ProgressEvent;
|
||||
import com.ilummc.tlib.TLib;
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@@ -29,17 +30,17 @@ public class TDependency {
|
||||
* <p>
|
||||
* 阻塞线程进行下载/加载
|
||||
*
|
||||
* @param args 依赖名,格式为 groupId:artifactId:version
|
||||
* @param type 依赖名,格式为 groupId:artifactId:version
|
||||
* @return 是否成功加载库,如果加载成功,插件将可以任意调用使用的类
|
||||
*/
|
||||
public static boolean requestLib(String... args) {
|
||||
if (args[0].matches(".*:.*:.*")) {
|
||||
String[] arr = args[0].split(":");
|
||||
public static boolean requestLib(String type, String repo, String url) {
|
||||
if (type.matches(".*:.*:.*")) {
|
||||
String[] arr = type.split(":");
|
||||
File file = new File(Main.getInst().getDataFolder(), "/libs/" + String.join("-", arr) + ".jar");
|
||||
if (file.exists()) {
|
||||
TDependencyLoader.addToPath(Main.getInst(), file);
|
||||
return true;
|
||||
} else if (downloadMaven(MAVEN_REPO, arr[0], arr[1], arr[2], file)) {
|
||||
} else if (downloadMaven(repo, arr[0], arr[1], arr[2], file, url)) {
|
||||
TDependencyLoader.addToPath(Main.getInst(), file);
|
||||
return true;
|
||||
} else return false;
|
||||
@@ -47,30 +48,32 @@ public class TDependency {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean downloadMaven(String url, String groupId, String artifactId, String version, File target) {
|
||||
private static boolean downloadMaven(String url, String groupId, String artifactId, String version, File target, String dl) {
|
||||
ReentrantLock lock = new ReentrantLock();
|
||||
AtomicBoolean failed = new AtomicBoolean(false);
|
||||
new EagletTask()
|
||||
.url(url + "/" + groupId.replace('.', '/') + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + ".jar")
|
||||
EagletTask task = new EagletTask()
|
||||
.url(dl == null ? url + "/" + groupId.replace('.', '/') + "/" +
|
||||
artifactId + "/" + version + "/" + artifactId + "-" + version + ".jar" : dl)
|
||||
.file(target)
|
||||
.setThreads(8)
|
||||
.setOnStart(event -> lock.lock())
|
||||
.setOnProgress(event -> MsgUtils.send(" 下载速度 " + event.getSpeedFormatted()))
|
||||
.setOnConnected(event -> MsgUtils.send(" 正在下载 " + String.join(":", new String[]{groupId, artifactId, version}) +
|
||||
" 大小 " + event.getContentLength()))
|
||||
.setOnError(event -> failed.set(true))
|
||||
.setOnConnected(event -> TLib.getTLib().getLogger().info(" 正在下载 " + String.join(":",
|
||||
new String[]{groupId, artifactId, version}) +
|
||||
" 大小 " + ProgressEvent.format(event.getContentLength())))
|
||||
.setOnProgress(event -> TLib.getTLib().getLogger().info(" 下载速度 " + event.getSpeedFormatted()
|
||||
+ " 进度 " + event.getPercentageFormatted()))
|
||||
.setOnComplete(event -> {
|
||||
if (event.isSuccess()) {
|
||||
TLib.getTLib().getLogger().info(" 下载 " + String.join(":", new String[]{groupId, artifactId, version}) + " 完成");
|
||||
} else {
|
||||
failed.set(true);
|
||||
}
|
||||
lock.unlock();
|
||||
MsgUtils.send(" 下载 " + String.join(":", new String[]{groupId, artifactId, version}) + " 完成");
|
||||
})
|
||||
.start();
|
||||
try {
|
||||
while (lock.tryLock()) lock.unlock();
|
||||
} catch (Exception ignored) {
|
||||
} finally {
|
||||
lock.lock();
|
||||
lock.unlock();
|
||||
}
|
||||
});
|
||||
task.start();
|
||||
while (lock.tryLock()) lock.unlock();
|
||||
lock.lock();
|
||||
lock.unlock();
|
||||
return !failed.get();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user