+ update
This commit is contained in:
		
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							@@ -6,7 +6,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <groupId>me.skymc</groupId>
 | 
					    <groupId>me.skymc</groupId>
 | 
				
			||||||
    <artifactId>TabooLib</artifactId>
 | 
					    <artifactId>TabooLib</artifactId>
 | 
				
			||||||
    <version>4.72</version>
 | 
					    <version>4.73</version>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <properties>
 | 
					    <properties>
 | 
				
			||||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
					        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -106,7 +106,7 @@ public class EagletTask {
 | 
				
			|||||||
                    executorService.execute(download);
 | 
					                    executorService.execute(download);
 | 
				
			||||||
                    long last = 0;
 | 
					                    long last = 0;
 | 
				
			||||||
                    do {
 | 
					                    do {
 | 
				
			||||||
                        Thread.sleep(1000);
 | 
					                        Thread.sleep(500);
 | 
				
			||||||
                        // check the progress
 | 
					                        // check the progress
 | 
				
			||||||
                        long progress = download.getCurrentProgress();
 | 
					                        long progress = download.getCurrentProgress();
 | 
				
			||||||
                        // fire a new progress event
 | 
					                        // fire a new progress event
 | 
				
			||||||
@@ -116,7 +116,7 @@ public class EagletTask {
 | 
				
			|||||||
                        last = progress;
 | 
					                        last = progress;
 | 
				
			||||||
                        // check complete
 | 
					                        // check complete
 | 
				
			||||||
                    } while (last != contentLength && !download.isComplete());
 | 
					                    } while (last != contentLength && !download.isComplete());
 | 
				
			||||||
                    // close the thread pool, release resources
 | 
					                    // close the thread pool, DoNotSupportMultipleThreadExceptionrelease resources
 | 
				
			||||||
                    executorService.shutdown();
 | 
					                    executorService.shutdown();
 | 
				
			||||||
                    // change the running flag to false
 | 
					                    // change the running flag to false
 | 
				
			||||||
                    running = false;
 | 
					                    running = false;
 | 
				
			||||||
@@ -137,7 +137,7 @@ public class EagletTask {
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    long last = 0;
 | 
					                    long last = 0;
 | 
				
			||||||
                    do {
 | 
					                    do {
 | 
				
			||||||
                        Thread.sleep(1000);
 | 
					                        Thread.sleep(500);
 | 
				
			||||||
                        long progress = 0;
 | 
					                        long progress = 0;
 | 
				
			||||||
                        // Collect download progress
 | 
					                        // Collect download progress
 | 
				
			||||||
                        for (SplitDownload splitDownload : splitDownloads) {
 | 
					                        for (SplitDownload splitDownload : splitDownloads) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ public class TDependency {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // 阿里 http://maven.aliyun.com/nexus/content/groups/public
 | 
					    // 阿里 http://maven.aliyun.com/nexus/content/groups/public
 | 
				
			||||||
    // Maven Central
 | 
					    // 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 仓库寻找
 | 
					     * 请求一个插件作为依赖,这个插件将会在所有已经添加的 Jenkins 仓库、Maven 仓库寻找
 | 
				
			||||||
@@ -63,27 +63,18 @@ public class TDependency {
 | 
				
			|||||||
        new EagletTask()
 | 
					        new EagletTask()
 | 
				
			||||||
                .url(link)
 | 
					                .url(link)
 | 
				
			||||||
                .file(target)
 | 
					                .file(target)
 | 
				
			||||||
                .setThreads(getDownloadPoolSize())
 | 
					                .setThreads(1)
 | 
				
			||||||
                .setOnError(event -> {
 | 
					                .setOnError(event -> event.getException().printStackTrace())
 | 
				
			||||||
                })
 | 
					                .setOnConnected(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-CONNECTED", String.join(":", new String[] {groupId, artifactId, version}), ProgressEvent.format(event.getContentLength())))
 | 
				
			||||||
                .setOnConnected(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-CONNECTED",
 | 
					                .setOnProgress(event -> TLocale.Logger.info("DEPENDENCY.DOWNLOAD-PROGRESS", event.getSpeedFormatted(), event.getPercentageFormatted()))
 | 
				
			||||||
                        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 -> {
 | 
					                .setOnComplete(event -> {
 | 
				
			||||||
                    if (event.isSuccess()) {
 | 
					                    if (event.isSuccess()) {
 | 
				
			||||||
                        TLocale.Logger.info("DEPENDENCY.DOWNLOAD-SUCCESS",
 | 
					                        TLocale.Logger.info("DEPENDENCY.DOWNLOAD-SUCCESS", String.join(":", new String[] {groupId, artifactId, version}));
 | 
				
			||||||
                                String.join(":", new String[]{groupId, artifactId, version}));
 | 
					 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        failed.set(true);
 | 
					                        failed.set(true);
 | 
				
			||||||
                        TLocale.Logger.error("DEPENDENCY.DOWNLOAD-FAILED",
 | 
					                        TLocale.Logger.error("DEPENDENCY.DOWNLOAD-FAILED", String.join(":", new String[] {groupId, artifactId, version}), link, target.getName());
 | 
				
			||||||
                                String.join(":", new String[]{groupId, artifactId, version}), link, target.getName());
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }).start().waitUntil();
 | 
					                }).start().waitUntil();
 | 
				
			||||||
        return !failed.get();
 | 
					        return !failed.get();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static int getDownloadPoolSize() {
 | 
					 | 
				
			||||||
        return Main.getInst().getConfig().getInt("DOWNLOAD-POOL-SIZE", 4);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -188,7 +188,7 @@ public class ItemUtils {
 | 
				
			|||||||
    @SuppressWarnings("deprecation")
 | 
					    @SuppressWarnings("deprecation")
 | 
				
			||||||
    public static Material asMaterial(String args) {
 | 
					    public static Material asMaterial(String args) {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            Material material = Material.getMaterial(args);
 | 
					            Material material = Material.getMaterial(args.toUpperCase());
 | 
				
			||||||
            return material != null ? material : Material.getMaterial(Integer.valueOf(args));
 | 
					            return material != null ? material : Material.getMaterial(Integer.valueOf(args));
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            return Material.STONE;
 | 
					            return Material.STONE;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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<String, EffLib> NAME_MAP = new HashMap<>();
 | 
				
			||||||
	private static final Map<Integer, EffLib> ID_MAP = new HashMap<>();
 | 
						private static final Map<Integer, EffLib> ID_MAP = new HashMap<>();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -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;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					package me.skymc.taboolib.particle.pack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @Author 坏黑
 | 
				
			||||||
 | 
					 * @Since 2019-01-11 17:45
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public enum ParticleType {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    NORMAL, ITEM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -38,9 +38,6 @@ SERVER: false
 | 
				
			|||||||
# 网络连接测试地址
 | 
					# 网络连接测试地址
 | 
				
			||||||
TEST-URL: 'aliyun.com'
 | 
					TEST-URL: 'aliyun.com'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 下载依赖时启用的线程数
 | 
					 | 
				
			||||||
DOWNLOAD-POOL-SIZE: 4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 玩家列表(TAB-API)是否根据前缀排序
 | 
					# 玩家列表(TAB-API)是否根据前缀排序
 | 
				
			||||||
TABLIST-SORT: true
 | 
					TABLIST-SORT: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user