From 7f32062dca02bd691d4c4c405c1f349174ffed56 Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Fri, 20 Nov 2020 10:30:05 +0800 Subject: [PATCH] feat: add JavaScriptTask class Signed-off-by: MiaoWoo --- pom.xml | 13 ++++--- src/main/java/pw/yumc/MiaoScript/Base.java | 4 ++ .../pw/yumc/MiaoScript/JavaScriptTask.java | 39 +++++++++++++++++++ 3 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 src/main/java/pw/yumc/MiaoScript/JavaScriptTask.java diff --git a/pom.xml b/pom.xml index 83dc62c..907e8b2 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 pw.yumc MiaoScript - 0.9.5 + 0.9.6 502647092 @@ -54,6 +54,7 @@ DEV + §620-11-19 §afeat: 新增 JavaScriptTask 类; §620-11-11 §afeat: 新增 package 版本锁定逻辑; §620-09-21 §afeat: 完善 upgrade 逻辑; §620-08-27 §afeat: 新增ProtocolLib依赖; @@ -177,7 +178,7 @@ org.projectlombok lombok - 1.18.6 + 1.18.10 org.kamranzafar @@ -187,24 +188,24 @@ org.spigotmc spigot-api - 1.15.2-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT compile org.spongepowered spongeapi - 7.1.0 + 7.2.0 compile net.md-5 bungeecord-api - 1.15-SNAPSHOT + 1.16-R0.4-SNAPSHOT cn.nukkit nukkit - 1.0-SNAPSHOT + 2.0.0-SNAPSHOT compile diff --git a/src/main/java/pw/yumc/MiaoScript/Base.java b/src/main/java/pw/yumc/MiaoScript/Base.java index b17019d..80e0765 100644 --- a/src/main/java/pw/yumc/MiaoScript/Base.java +++ b/src/main/java/pw/yumc/MiaoScript/Base.java @@ -31,6 +31,10 @@ public class Base { return ProxyClass.class; } + public Class getJavaScriptTaskClass() { + return JavaScriptTask.class; + } + public String read(String path) throws IOException { return new String(Files.readAllBytes(new File(path).toPath()), StandardCharsets.UTF_8); } diff --git a/src/main/java/pw/yumc/MiaoScript/JavaScriptTask.java b/src/main/java/pw/yumc/MiaoScript/JavaScriptTask.java new file mode 100644 index 0000000..4579e67 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/JavaScriptTask.java @@ -0,0 +1,39 @@ +package pw.yumc.MiaoScript; + +import java.util.concurrent.Delayed; +import java.util.concurrent.TimeUnit; + +public class JavaScriptTask implements Delayed { + private final Object task; + private final long startTime; + private final long executeTime; + + public JavaScriptTask(Object task, long ms) { + this.task = task; + this.startTime = System.currentTimeMillis(); + this.executeTime = ms; + } + + @Override + public long getDelay(TimeUnit unit) { + return unit.convert((this.startTime + this.executeTime) - System.currentTimeMillis(), TimeUnit.MILLISECONDS); + } + + @Override + public int compareTo(Delayed delayed) { + JavaScriptTask task = (JavaScriptTask) delayed; + return (int) ((this.startTime + this.executeTime) - (task.getStartTime() + task.getExecuteTime())); + } + + public Object getTask() { + return this.task; + } + + public long getStartTime() { + return this.startTime; + } + + public long getExecuteTime() { + return this.executeTime; + } +}