This commit is contained in:
坏黑 2019-02-17 22:01:35 +08:00
parent 9f9c2c9d06
commit 9b4448a033
9 changed files with 142 additions and 25 deletions

View File

@ -6,7 +6,7 @@
<groupId>me.skymc</groupId>
<artifactId>TabooLib</artifactId>
<version>4.72</version>
<version>4.73</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

View File

@ -106,7 +106,7 @@ public class EagletTask {
executorService.execute(download);
long last = 0;
do {
Thread.sleep(1000);
Thread.sleep(500);
// check the progress
long progress = download.getCurrentProgress();
// fire a new progress event
@ -116,7 +116,7 @@ public class EagletTask {
last = progress;
// check complete
} while (last != contentLength && !download.isComplete());
// close the thread pool, release resources
// close the thread pool, DoNotSupportMultipleThreadExceptionrelease resources
executorService.shutdown();
// change the running flag to false
running = false;
@ -137,7 +137,7 @@ public class EagletTask {
}
long last = 0;
do {
Thread.sleep(1000);
Thread.sleep(500);
long progress = 0;
// Collect download progress
for (SplitDownload splitDownload : splitDownloads) {

View File

@ -12,7 +12,7 @@ public class TDependency {
// 阿里 http://maven.aliyun.com/nexus/content/groups/public
// Maven Central
public static final String MAVEN_REPO = "https://maven.aliyun.com/repository/central";
public static final String MAVEN_REPO = "http://repo1.maven.org/maven2";
/**
* 请求一个插件作为依赖这个插件将会在所有已经添加的 Jenkins 仓库Maven 仓库寻找
@ -63,27 +63,18 @@ public class TDependency {
new EagletTask()
.url(link)
.file(target)
.setThreads(getDownloadPoolSize())
.setOnError(event -> {
})
.setOnConnected(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-CONNECTED",
String.join(":", new String[]{groupId, artifactId, version}), ProgressEvent.format(event.getContentLength())))
.setOnProgress(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-PROGRESS",
event.getSpeedFormatted(), event.getPercentageFormatted()))
.setThreads(1)
.setOnError(event -> event.getException().printStackTrace())
.setOnConnected(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-CONNECTED", String.join(":", new String[] {groupId, artifactId, version}), ProgressEvent.format(event.getContentLength())))
.setOnProgress(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-PROGRESS", event.getSpeedFormatted(), event.getPercentageFormatted()))
.setOnComplete(event -> {
if (event.isSuccess()) {
TLocale.Logger.info("DEPENDENCY.DOWNLOAD-SUCCESS",
String.join(":", new String[]{groupId, artifactId, version}));
TLocale.Logger.info("DEPENDENCY.DOWNLOAD-SUCCESS", String.join(":", new String[] {groupId, artifactId, version}));
} else {
failed.set(true);
TLocale.Logger.error("DEPENDENCY.DOWNLOAD-FAILED",
String.join(":", new String[]{groupId, artifactId, version}), link, target.getName());
TLocale.Logger.error("DEPENDENCY.DOWNLOAD-FAILED", String.join(":", new String[] {groupId, artifactId, version}), link, target.getName());
}
}).start().waitUntil();
return !failed.get();
}
private static int getDownloadPoolSize() {
return Main.getInst().getConfig().getInt("DOWNLOAD-POOL-SIZE", 4);
}
}

View File

@ -188,7 +188,7 @@ public class ItemUtils {
@SuppressWarnings("deprecation")
public static Material asMaterial(String args) {
try {
Material material = Material.getMaterial(args);
Material material = Material.getMaterial(args.toUpperCase());
return material != null ? material : Material.getMaterial(Integer.valueOf(args));
} catch (Exception e) {
return Material.STONE;

View File

@ -403,7 +403,12 @@ public enum EffLib {
/**
* 挥砍
*/
SWEEP_ATTACK("sweepAttack", 45, 9);
SWEEP_ATTACK("sweepAttack", 45, 9),
/**
* 不死图腾
*/
TOTEM("totem", 46, 11);
private static final Map<String, EffLib> NAME_MAP = new HashMap<>();
private static final Map<Integer, EffLib> ID_MAP = new HashMap<>();

View File

@ -0,0 +1,73 @@
package me.skymc.taboolib.particle.pack;
import com.ilummc.tlib.util.Strings;
import me.skymc.taboolib.inventory.ItemUtils;
import me.skymc.taboolib.particle.EffLib;
import org.bukkit.Location;
import org.bukkit.util.NumberConversions;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Author 坏黑
* @Since 2019-01-11 17:37
*/
public class ParticleData {
private static final Pattern ITEM_PATTERN = Pattern.compile("(\\S+)\\((\\S+):(\\S+)\\)", Pattern.CASE_INSENSITIVE);
private ParticleType particleType = ParticleType.NORMAL;
private EffLib particle = EffLib.BARRIER;
private EffLib.ParticleData particleData;
private float x = 0;
private float y = 0;
private float z = 0;
private float speed = 0;
private int amount = 0;
/**
* NORMAL:
* frame-0.1-0.1-0.1-0-10
* ITEM_CRACK:
* iconcrack(Stone:0)-0.1-0.1-0.1-0-10
*/
public ParticleData(String str) {
if (!Strings.isEmpty(str)) {
try {
String[] split = str.split("-");
Matcher matcher = ITEM_PATTERN.matcher(split[0]);
if (matcher.find()) {
particle = EffLib.fromName(matcher.group(1));
particleType = ParticleType.ITEM;
particleData = particle.getName().startsWith("block") ? new EffLib.BlockData(ItemUtils.asMaterial(matcher.group(2).toUpperCase()), NumberConversions.toByte(matcher.group(3))) : new EffLib.ItemData(ItemUtils.asMaterial(matcher.group(2).toUpperCase()), NumberConversions.toByte(matcher.group(3)));
} else {
particle = EffLib.fromName(split[0]);
}
x = NumberConversions.toFloat(split[1]);
y = NumberConversions.toFloat(split[2]);
z = NumberConversions.toFloat(split[3]);
speed = NumberConversions.toFloat(split[4]);
amount = NumberConversions.toInt(split[5]);
} catch (Throwable t) {
t.printStackTrace();
}
}
}
public void play(Location location) {
try {
switch (particleType) {
case NORMAL:
particle.display(x, y, z, speed, amount, location, 50);
break;
case ITEM:
particle.display(particleData, x, y, z, speed, amount, location, 50);
break;
default:
}
} catch (Throwable t) {
t.printStackTrace();
}
}
}

View File

@ -0,0 +1,40 @@
package me.skymc.taboolib.particle.pack;
import com.google.common.collect.Lists;
import me.skymc.taboolib.TabooLib;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import java.util.Arrays;
import java.util.List;
/**
* @Author 坏黑
* @Since 2019-01-11 17:35
*/
public class ParticlePack {
private List<ParticleData> particles = Lists.newArrayList();
public ParticlePack(String str) {
Arrays.stream(str.split(";")).forEach(this::add);
}
public void add(String str) {
particles.add(new ParticleData(str));
}
public void play(Location location) {
Bukkit.getScheduler().runTaskAsynchronously(TabooLib.instance(), () -> particles.forEach(p -> p.play(location)));
}
// *********************************
//
// Getter and Setter
//
// *********************************
public List<ParticleData> getParticles() {
return particles;
}
}

View File

@ -0,0 +1,11 @@
package me.skymc.taboolib.particle.pack;
/**
* @Author 坏黑
* @Since 2019-01-11 17:45
*/
public enum ParticleType {
NORMAL, ITEM
}

View File

@ -38,9 +38,6 @@ SERVER: false
# 网络连接测试地址
TEST-URL: 'aliyun.com'
# 下载依赖时启用的线程数
DOWNLOAD-POOL-SIZE: 4
# 玩家列表TAB-API是否根据前缀排序
TABLIST-SORT: true