mirror of
https://github.com/CarmJos/EasyPlugin.git
synced 2026-06-04 16:48:16 +08:00
chore(item): 添加序列化方法
This commit is contained in:
+1
-1
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>easyplugin-parent</artifactId>
|
||||
<groupId>cc.carm.lib</groupId>
|
||||
<version>1.4.6</version>
|
||||
<version>1.4.7</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -14,131 +14,131 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ItemStackFactory {
|
||||
ItemStack item;
|
||||
ItemStack item;
|
||||
|
||||
private ItemStackFactory() {
|
||||
}
|
||||
private ItemStackFactory() {
|
||||
}
|
||||
|
||||
public ItemStackFactory(ItemStack is) {
|
||||
this.item = is.clone();
|
||||
}
|
||||
public ItemStackFactory(ItemStack is) {
|
||||
this.item = is.clone();
|
||||
}
|
||||
|
||||
public ItemStackFactory(Material type) {
|
||||
this(type, 1);
|
||||
}
|
||||
public ItemStackFactory(Material type) {
|
||||
this(type, 1);
|
||||
}
|
||||
|
||||
public ItemStackFactory(Material type, int amount) {
|
||||
this(type, amount, (short) 0);
|
||||
}
|
||||
public ItemStackFactory(Material type, int amount) {
|
||||
this(type, amount, (short) 0);
|
||||
}
|
||||
|
||||
public ItemStackFactory(Material type, int amount, short data) {
|
||||
this.item = new ItemStack(type, amount, data);
|
||||
}
|
||||
public ItemStackFactory(Material type, int amount, short data) {
|
||||
this.item = new ItemStack(type, amount, data);
|
||||
}
|
||||
|
||||
public ItemStackFactory(Material type, int amount, int data) {
|
||||
this(type, amount, (short) data);
|
||||
}
|
||||
public ItemStackFactory(Material type, int amount, int data) {
|
||||
this(type, amount, (short) data);
|
||||
}
|
||||
|
||||
public ItemStack toItemStack() {
|
||||
return this.item;
|
||||
}
|
||||
public ItemStack toItemStack() {
|
||||
return this.item;
|
||||
}
|
||||
|
||||
public ItemStackFactory setType(Material type) {
|
||||
this.item.setType(type);
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory setType(Material type) {
|
||||
this.item.setType(type);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory setDurability(int i) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im instanceof Damageable) {
|
||||
((Damageable) im).setDamage(i);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory setDurability(int i) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im instanceof Damageable) {
|
||||
((Damageable) im).setDamage(i);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory setAmount(int a) {
|
||||
this.item.setAmount(a);
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory setAmount(int a) {
|
||||
this.item.setAmount(a);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory setDisplayName(@NotNull String name) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.setDisplayName(ColorParser.parse(name));
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory setDisplayName(@NotNull String name) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.setDisplayName(ColorParser.parse(name));
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory setLore(@NotNull List<String> loreList) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.setLore(
|
||||
loreList.stream()
|
||||
.map(ColorParser::parse)
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory setLore(@NotNull List<String> loreList) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.setLore(
|
||||
loreList.stream()
|
||||
.map(ColorParser::parse)
|
||||
.collect(Collectors.toList())
|
||||
);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory addLore(@NotNull String s) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
List<String> lore = im.getLore() != null ? im.getLore() : new ArrayList<>();
|
||||
lore.add(ColorParser.parse(s));
|
||||
im.setLore(lore);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory addLore(@NotNull String s) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
List<String> lore = im.getLore() != null ? im.getLore() : new ArrayList<>();
|
||||
lore.add(ColorParser.parse(s));
|
||||
im.setLore(lore);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory addEnchant(@NotNull Enchantment enchant, int level, boolean ignoreLevelRestriction) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.addEnchant(enchant, level, ignoreLevelRestriction);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
public ItemStackFactory addEnchant(@NotNull Enchantment enchant, int level, boolean ignoreLevelRestriction) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.addEnchant(enchant, level, ignoreLevelRestriction);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory removeEnchant(@NotNull Enchantment enchant) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.removeEnchant(enchant);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory removeEnchant(@NotNull Enchantment enchant) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.removeEnchant(enchant);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory addFlag(@NotNull ItemFlag flag) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.addItemFlags(flag);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
public ItemStackFactory addFlag(@NotNull ItemFlag flag) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.addItemFlags(flag);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory removeFlag(@NotNull ItemFlag flag) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.removeItemFlags(flag);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory removeFlag(@NotNull ItemFlag flag) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.removeItemFlags(flag);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemStackFactory setUnbreakable(boolean unbreakable) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.setUnbreakable(unbreakable);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ItemStackFactory setUnbreakable(boolean unbreakable) {
|
||||
ItemMeta im = this.item.getItemMeta();
|
||||
if (im != null) {
|
||||
im.setUnbreakable(unbreakable);
|
||||
this.item.setItemMeta(im);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,344 +12,344 @@ import java.util.concurrent.Callable;
|
||||
@SuppressWarnings("DuplicatedCode")
|
||||
public class SchedulerUtils {
|
||||
|
||||
private final JavaPlugin plugin;
|
||||
private final JavaPlugin plugin;
|
||||
|
||||
public SchedulerUtils(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
public SchedulerUtils(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
private JavaPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
private JavaPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 在服务端主线程中执行一个任务
|
||||
*
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void run(Runnable runnable) {
|
||||
Bukkit.getScheduler().runTask(getPlugin(), runnable);
|
||||
}
|
||||
/**
|
||||
* 在服务端主线程中执行一个任务
|
||||
*
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void run(Runnable runnable) {
|
||||
Bukkit.getScheduler().runTask(getPlugin(), runnable);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 异步执行一个任务。
|
||||
*
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void runAsync(Runnable runnable) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在主线程延时执行一个任务。
|
||||
*
|
||||
* @param delay 延迟的ticks
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void runLater(long delay, Runnable runnable) {
|
||||
Bukkit.getScheduler().runTaskLater(getPlugin(), runnable, delay);
|
||||
}
|
||||
/**
|
||||
* 异步执行一个任务。
|
||||
*
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void runAsync(Runnable runnable) {
|
||||
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), runnable);
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步延时执行一个任务。
|
||||
*
|
||||
* @param delay 延迟的ticks
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void runLaterAsync(long delay, Runnable runnable) {
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(getPlugin(), runnable, delay);
|
||||
}
|
||||
/**
|
||||
* 在主线程延时执行一个任务。
|
||||
*
|
||||
* @param delay 延迟的ticks
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void runLater(long delay, Runnable runnable) {
|
||||
Bukkit.getScheduler().runTaskLater(getPlugin(), runnable, delay);
|
||||
}
|
||||
|
||||
/**
|
||||
* 间隔一段时间按顺序执行列表中的任务
|
||||
*
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtInterval(long interval, Runnable... tasks) {
|
||||
runAtInterval(0L, interval, tasks);
|
||||
}
|
||||
/**
|
||||
* 异步延时执行一个任务。
|
||||
*
|
||||
* @param delay 延迟的ticks
|
||||
* @param runnable 需要执行的任务
|
||||
*/
|
||||
public void runLaterAsync(long delay, Runnable runnable) {
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(getPlugin(), runnable, delay);
|
||||
}
|
||||
|
||||
/**
|
||||
* 间隔一段时间按顺序执行列表中的任务
|
||||
*
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtInterval(long interval, Runnable... tasks) {
|
||||
runAtInterval(0L, interval, tasks);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 间隔一段时间按顺序执行列表中的任务
|
||||
*
|
||||
* @param delay 延迟时间
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtInterval(long delay, long interval, Runnable... tasks) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
/**
|
||||
* 间隔一段时间按顺序执行列表中的任务
|
||||
*
|
||||
* @param delay 延迟时间
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtInterval(long delay, long interval, Runnable... tasks) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (this.index >= tasks.length) {
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
if (this.index >= tasks.length) {
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
tasks[index].run();
|
||||
index++;
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), delay, interval);
|
||||
}
|
||||
tasks[index].run();
|
||||
index++;
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), delay, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
* 间隔一段时间按顺序异步执行列表中的任务
|
||||
*
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtIntervalAsync(long interval, Runnable... tasks) {
|
||||
runAtIntervalAsync(0L, interval, tasks);
|
||||
}
|
||||
/**
|
||||
* 间隔一段时间按顺序异步执行列表中的任务
|
||||
*
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtIntervalAsync(long interval, Runnable... tasks) {
|
||||
runAtIntervalAsync(0L, interval, tasks);
|
||||
}
|
||||
|
||||
/**
|
||||
* 间隔一段时间按顺序异步执行列表中的任务
|
||||
*
|
||||
* @param delay 延迟时间
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtIntervalAsync(long delay, long interval, Runnable... tasks) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
/**
|
||||
* 间隔一段时间按顺序异步执行列表中的任务
|
||||
*
|
||||
* @param delay 延迟时间
|
||||
* @param interval 间隔时间
|
||||
* @param tasks 任务列表
|
||||
*/
|
||||
public void runAtIntervalAsync(long delay, long interval, Runnable... tasks) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (this.index >= tasks.length) {
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
if (this.index >= tasks.length) {
|
||||
this.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
tasks[index].run();
|
||||
index++;
|
||||
}
|
||||
}.runTaskTimerAsynchronously(getPlugin(), delay, interval);
|
||||
}
|
||||
tasks[index].run();
|
||||
index++;
|
||||
}
|
||||
}.runTaskTimerAsynchronously(getPlugin(), delay, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重复执行一个任务。
|
||||
*
|
||||
* @param repetitions 重复次数
|
||||
* @param interval 间隔时间
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeat(int repetitions, long interval, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
/**
|
||||
* 重复执行一个任务。
|
||||
*
|
||||
* @param repetitions 重复次数
|
||||
* @param interval 间隔时间
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeat(int repetitions, long interval, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
index++;
|
||||
if (this.index >= repetitions) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
index++;
|
||||
if (this.index >= repetitions) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
task.run();
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), 0L, interval);
|
||||
}
|
||||
task.run();
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), 0L, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重复执行一个任务。
|
||||
*
|
||||
* @param repetitions 重复次数
|
||||
* @param interval 间隔时间
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeatAsync(int repetitions, long interval, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
/**
|
||||
* 重复执行一个任务。
|
||||
*
|
||||
* @param repetitions 重复次数
|
||||
* @param interval 间隔时间
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeatAsync(int repetitions, long interval, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
private int index;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
index++;
|
||||
if (this.index >= repetitions) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
index++;
|
||||
if (this.index >= repetitions) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
task.run();
|
||||
}
|
||||
}.runTaskTimerAsynchronously(getPlugin(), 0L, interval);
|
||||
}
|
||||
task.run();
|
||||
}
|
||||
}.runTaskTimerAsynchronously(getPlugin(), 0L, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在满足某个条件时,重复执行一个任务。
|
||||
*
|
||||
* @param interval 重复间隔时间
|
||||
* @param predicate 条件
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeatWhile(long interval, Callable<Boolean> predicate, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (!predicate.call()) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* 在满足某个条件时,重复执行一个任务。
|
||||
*
|
||||
* @param interval 重复间隔时间
|
||||
* @param predicate 条件
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeatWhile(long interval, Callable<Boolean> predicate, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (!predicate.call()) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
task.run();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), 0L, interval);
|
||||
}
|
||||
task.run();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), 0L, interval);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在满足某个条件时,重复执行一个任务。
|
||||
*
|
||||
* @param interval 重复间隔时间
|
||||
* @param predicate 条件
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeatWhileAsync(long interval, Callable<Boolean> predicate, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (!predicate.call()) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* 在满足某个条件时,重复执行一个任务。
|
||||
*
|
||||
* @param interval 重复间隔时间
|
||||
* @param predicate 条件
|
||||
* @param task 任务
|
||||
* @param onComplete 结束时执行的任务
|
||||
*/
|
||||
public void repeatWhileAsync(long interval, Callable<Boolean> predicate, Runnable task, Runnable onComplete) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (!predicate.call()) {
|
||||
this.cancel();
|
||||
if (onComplete == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
onComplete.run();
|
||||
return;
|
||||
}
|
||||
|
||||
task.run();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskTimerAsynchronously(getPlugin(), 0L, interval);
|
||||
}
|
||||
task.run();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskTimerAsynchronously(getPlugin(), 0L, interval);
|
||||
}
|
||||
|
||||
public interface Task {
|
||||
void start(Runnable onComplete);
|
||||
}
|
||||
public interface Task {
|
||||
void start(Runnable onComplete);
|
||||
}
|
||||
|
||||
public class TaskBuilder {
|
||||
private final Queue<Task> taskList;
|
||||
public class TaskBuilder {
|
||||
private final Queue<Task> taskList;
|
||||
|
||||
public TaskBuilder() {
|
||||
this.taskList = new LinkedList<>();
|
||||
}
|
||||
public TaskBuilder() {
|
||||
this.taskList = new LinkedList<>();
|
||||
}
|
||||
|
||||
public TaskBuilder append(TaskBuilder builder) {
|
||||
this.taskList.addAll(builder.taskList);
|
||||
return this;
|
||||
}
|
||||
public TaskBuilder append(TaskBuilder builder) {
|
||||
this.taskList.addAll(builder.taskList);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendDelay(long delay) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.runLater(delay, onComplete));
|
||||
return this;
|
||||
}
|
||||
public TaskBuilder appendDelay(long delay) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.runLater(delay, onComplete));
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendTask(Runnable task) {
|
||||
this.taskList.add(onComplete ->
|
||||
{
|
||||
task.run();
|
||||
onComplete.run();
|
||||
});
|
||||
public TaskBuilder appendTask(Runnable task) {
|
||||
this.taskList.add(onComplete ->
|
||||
{
|
||||
task.run();
|
||||
onComplete.run();
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendTask(Task task) {
|
||||
this.taskList.add(task);
|
||||
return this;
|
||||
}
|
||||
public TaskBuilder appendTask(Task task) {
|
||||
this.taskList.add(task);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendDelayedTask(long delay, Runnable task) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.runLater(delay, () ->
|
||||
{
|
||||
task.run();
|
||||
onComplete.run();
|
||||
}));
|
||||
public TaskBuilder appendDelayedTask(long delay, Runnable task) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.runLater(delay, () ->
|
||||
{
|
||||
task.run();
|
||||
onComplete.run();
|
||||
}));
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendTasks(long delay, long interval, Runnable... tasks) {
|
||||
this.taskList.add(onComplete ->
|
||||
{
|
||||
Runnable[] runnables = Arrays.copyOf(tasks, tasks.length + 1);
|
||||
runnables[runnables.length - 1] = onComplete;
|
||||
SchedulerUtils.this.runAtInterval(delay, interval, runnables);
|
||||
});
|
||||
public TaskBuilder appendTasks(long delay, long interval, Runnable... tasks) {
|
||||
this.taskList.add(onComplete ->
|
||||
{
|
||||
Runnable[] runnables = Arrays.copyOf(tasks, tasks.length + 1);
|
||||
runnables[runnables.length - 1] = onComplete;
|
||||
SchedulerUtils.this.runAtInterval(delay, interval, runnables);
|
||||
});
|
||||
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendRepeatingTask(int repetitions, long interval, Runnable task) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.repeat(repetitions, interval, task, onComplete));
|
||||
return this;
|
||||
}
|
||||
public TaskBuilder appendRepeatingTask(int repetitions, long interval, Runnable task) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.repeat(repetitions, interval, task, onComplete));
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder appendConditionalRepeatingTask(long interval, Callable<Boolean> predicate, Runnable task) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.repeatWhile(interval, predicate, task, onComplete));
|
||||
return this;
|
||||
}
|
||||
public TaskBuilder appendConditionalRepeatingTask(long interval, Callable<Boolean> predicate, Runnable task) {
|
||||
this.taskList.add(onComplete -> SchedulerUtils.this.repeatWhile(interval, predicate, task, onComplete));
|
||||
return this;
|
||||
}
|
||||
|
||||
public TaskBuilder waitFor(Callable<Boolean> predicate) {
|
||||
this.taskList.add(onComplete -> new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (!predicate.call()) {
|
||||
return;
|
||||
}
|
||||
public TaskBuilder waitFor(Callable<Boolean> predicate) {
|
||||
this.taskList.add(onComplete -> new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (!predicate.call()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.cancel();
|
||||
onComplete.run();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), 0L, 1L));
|
||||
return this;
|
||||
}
|
||||
this.cancel();
|
||||
onComplete.run();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(getPlugin(), 0L, 1L));
|
||||
return this;
|
||||
}
|
||||
|
||||
public void runTasks() {
|
||||
this.startNext();
|
||||
}
|
||||
public void runTasks() {
|
||||
this.startNext();
|
||||
}
|
||||
|
||||
private void startNext() {
|
||||
Task task = this.taskList.poll();
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
private void startNext() {
|
||||
Task task = this.taskList.poll();
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
task.start(this::startNext);
|
||||
}
|
||||
}
|
||||
task.start(this::startNext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user