Помогите Разовая Команда

Так должен выглядеть класс с таймером?

Код:
public class StartCountdown extends BukkitRunnable {
   
    public static int time = 0;
   
    public void run () {
        time--;
    }
}

При вводе команды всегда пишет что уже забрал награду
Так должен выглядеть класс с таймером?

Код:
public class StartCountdown extends BukkitRunnable {
  
    public static int time = 0;
  
    public void run () {
        time--;
    }
}

При вводе команды всегда пишет что уже забрал награду

Точнее, первый раз она срабатывает, а потом при вводе команды всегда пишет что уже забрал награду!
 
Так должен выглядеть класс с таймером?

Код:
public class StartCountdown extends BukkitRunnable {
  
    public static int time = 0;
  
    public void run () {
        time--;
    }
}

При вводе команды всегда пишет что уже забрал награду


Точнее, первый раз она срабатывает, а потом при вводе команды всегда пишет что уже забрал награду!
Ща перепроверю, что написал
Скинь код команды
 
Код:
public class THX implements CommandExecutor {
   
   
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = (Player)sender;
        if (command.getName().equalsIgnoreCase("thx")) {
            for (Booster booster2 : Booster.getBoosters(p.getName())) {
                if (booster2.getDuration() >= 1) {
                    if (booster2.getMultiplier() >= 1.0) {
                        if (StartCountdown.time <= 0) {
                            StartCountdown.time = 15;
                            StartCountdown thx = new StartCountdown();
                            thx.runTaskTimer(Main.instance, 0, 20);
                            Main.econ.depositPlayer(p, 3);
                            booster2.addTime(1);
                            isThx(p);
                        } else {
                            p.sendMessage(ChatColor.RED + "Вы уже забрали награду за этот бустер");
                        }
                    } else {
                        p.sendMessage("§cНа данный момент нет активных бустеров!");
                    }
                } else {
                    p.sendMessage("§cНа данный момент нет активных бустеров!");
                }
            }
        }
        return true;
    }
 
Ща другой код кину
Это в главный класс
\/
public static int startCountdownId;

public static void startCountdown() {
StartCountdown.time = getTime();
startCountdownId = Bukkit.getScheduler().scheduleSyncRepeatingTask(instance, new StartCountdown(instance), 20, 20);
}

public static void stopCountdown() {
Bukkit.getScheduler().cancelTask(startCountdownId);
}

Этой класс StartCountdown
\/

public class StartCountdown extends BukkitRunnable {

public static int time = 15;

Main instance;

public StartCountdown(Main instance) {
this.instance = instance;
}

@Override
public void run() {
if (time == 0) {
Main.stopCountdown();
time--;
}
}
Вместо getTime () пиши 15
И вот тут startCountdownId = Bukkit.getScheduler().scheduleSyncRepeatingTask(instance, new StartCountdown(instance), тут 0, 20);
 
Проорал просто. Юзать шедулеры ради задержки команд.

Java:
    static HashMap<String, Long> usertime = new HashMap<String, Long>();
    static boolean check(String user, long tmp) {
        long time = System.currentTimeMillis();
        Long last = usertime.get(user);
        if(last!= null) {
            if((time-last)<tmp) {
                return false;
            }
        }
        usertime.put(user, time);
        return true;
    }
 
Проорал просто. Юзать шедулеры рази задержки команд.

Java:
    static HashMap<String, Long> usertime = new HashMap<String, Long>();
    static boolean check(String user, long tmp) {
        long time = System.currentTimeMillis();
        Long last = usertime.get(user);
        if(last!= null) {
            if((time-last)<tmp) {
                return false;
            }
        }
        usertime.put(user, time);
        return true;
    }

А как это использовать?))
 
Проорал просто. Юзать шедулеры ради задержки команд.

Java:
    static HashMap<String, Long> usertime = new HashMap<String, Long>();
    static boolean check(String user, long tmp) {
        long time = System.currentTimeMillis();
        Long last = usertime.get(user);
        if(last!= null) {
            if((time-last)<tmp) {
                return false;
            }
        }
        usertime.put(user, time);
        return true;
    }
Я вижу ты всегда и везде орешь...
 
А как это использовать?))

Проорал просто. Юзать шедулеры ради задержки команд.

Java:
    static HashMap<String, Long> usertime = new HashMap<String, Long>();
    static boolean check(String user, long tmp) {
        long time = System.currentTimeMillis();
        Long last = usertime.get(user);
        if(last!= null) {
            if((time-last)<tmp) {
                return false;
            }
        }
        usertime.put(user, time);
        return true;
    }

Покажи на примере!
 
public class THX implements CommandExecutor {


public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player p = (Player)sender;
if (command.getName().equalsIgnoreCase("thx")) {
for (Booster booster2 : Booster.getBoosters(p.getName())) {
if (booster2.getDuration() >= 1) {
if (booster2.getMultiplier() >= 1.0) {
if (check (p.getName (), 15)) {
Main.econ.depositPlayer(p, 3);
booster2.addTime(1);
isThx(p);
} else {
p.sendMessage(ChatColor.RED + "Вы уже забрали награду за этот бустер");
}
} else {
p.sendMessage("§cНа данный момент нет активных бустеров!");
}
} else {
p.sendMessage("§cНа данный момент нет активных бустеров!");
}
}
}
return true;
}
 
public class THX implements CommandExecutor {


public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player p = (Player)sender;
if (command.getName().equalsIgnoreCase("thx")) {
for (Booster booster2 : Booster.getBoosters(p.getName())) {
if (booster2.getDuration() >= 1) {
if (booster2.getMultiplier() >= 1.0) {
if (check (p.getName (), 15)) {
Main.econ.depositPlayer(p, 3);
booster2.addTime(1);
isThx(p);
} else {
p.sendMessage(ChatColor.RED + "Вы уже забрали награду за этот бустер");
}
} else {
p.sendMessage("§cНа данный момент нет активных бустеров!");
}
} else {
p.sendMessage("§cНа данный момент нет активных бустеров!");
}
}
}
return true;
}

Не РОБИТ!
 
Даааааааааааа.... Это РОБОТАЕТ!!!!!!!1 СПАСИБО!!!!!!!
 
Даааааааааааа.... Это РОБОТАЕТ!!!!!!!1 СПАСИБО!!!!!!!
Вот так правильный подсчет остатка.

Java:
            int интервал = 5;
            if(check("username", интервал*1000)){
                System.out.println("ok");
            } else {
                System.out.println("Ждите еще "+(интервал*1000-(System.currentTimeMillis()-usertime.get("username")))+".ms");
            }
 
Вот так правильный подсчет остатка.

Java:
            int интервал = 5;
            if(check("username", интервал*1000)){
                System.out.println("ok");
            } else {
                System.out.println("Ждите еще "+(интервал*1000-(System.currentTimeMillis()-usertime.get("username")))+".ms");
            }
Иш ты, не нравиться ему шедулер...
Даааааааааааа.... Это РОБОТАЕТ!!!!!!!1 СПАСИБО!!!!!!!
Тебе точно 37 лет?
 
Назад
Верх