首页 > 解决方案 > 每 5 分钟清除一次掉落的物品

问题描述

我正在编写一个 Spigot 1.8.9 插件,并试图每 5 分钟清除一次掉落,但在物品被清除之前,我想发出 60、30、15、10、5、3、2、1 秒的警告,然后将它们清除.

我尝试使用以下内容,但没有倒计时警告。

public static void startDropTimer() {
    Bukkit.getScheduler().scheduleSyncRepeatingTask(MyPlugin.getPlugin(), new Runnable() {

        @Override
        public void run() {
            clearAllDrops();
        }
    }, 6000, 6000);
}

如何在清除水滴之前实施警告倒计时?

标签: javaminecraftbukkit

解决方案


您可以创建一个timer变量来存储经过的时间

long remainingTimeInSeconds = 300; //5 minutes

然后更新您的任务,以每20 个滴答声减少此计时器(在 Bukkit 中,20 个滴答声 = 1 秒)。使用更新任务,检查计时器变量以验证是否应发送消息或是否应清除丢弃:

Bukkit.getScheduler().scheduleSyncRepeatingTask(MyPlugin.getPlugin(), new Runnable() {

    @Override
    public void run() {
        currentTimeInSeconds--;

        switch(remainingTimeInSeconds) {
           case 60:
           case 30:
           case 15:
           case 10:
           case 5:
           case 3:
           case 2:
           case 1:
           //Send message remainingTimeInSeconds seconds left until drops are cleared!
           break;

           case 0:
           clearAllDrops();
           remainingTimeInSeconds = 300; //Reset your timer
           break;             
        }    

    }
}, 20L, 0);

推荐阅读