Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Помогите, как мне сделать таймер который-бы запускался при вводе команды. Если ввести эту команду повторно выполнялась проверка на этот таймер, и если он запущен в чат выводилось время до окончание этого таймера.
package me.xDark.darkAPI.time;
public class Timer {
private long startMS;
public Timer() {
reset();
}
public void reset() {
startMS = System.currentTimeMillis();
}
public long getMSPassed() {
return (System.currentTimeMillis() - startMS);
}
public boolean hasMSPassed(long time) {
return getMSPassed() >= time;
}
}
reset - старт таймераМожно поподробней, как мне использовать переменные из этого класса в методе OnCommand.
Помогите, как мне сделать таймер который-бы запускался при вводе команды. Если ввести эту команду повторно выполнялась проверка на этот таймер, и если он запущен в чат выводилось время до окончание этого таймера.
public class Rtptp implements Listener, CommandExecutor{
Map<Player, Long> col = new WeakHashMap<Player, Long>();
public boolean abs(CommandSender sender){
if(sender instanceof Player){
return false;
}
return true;
}
@Override
public boolean onCommand (CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("Effect")){
if (abs(sender)){
return true;
}
Player p = (Player) sender;
if (!col.containsKey(p) || col.get(p) < System.currentTimeMillis() || p.isOp()) {
p.playSound(p.getLocation(), Sound.MAGMACUBE_JUMP, 1, 1);
p.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 150, 1));
p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 150, 0));
col.put(p, System.currentTimeMillis() + 10000);
p.sendMessage("Все ок!");
return true;
} else {
p.sendMessage("Подождите" + ((col.get(p) - System.currentTimeMillis()))));
}
return true;
}
return true;
}
}
static WeakHashMap<Player, Long> usertime = new WeakHashMap<Player, Long>();
//Передаем игрока и время задержки в метод check
//Вернет false если время не прошло.
static boolean check(Player user, long tmp) {
long time = System.currentTimeMillis();
Long last = usertime.get(user);
if(last!= null) {
if((time-last)<tmp) {
//Тут можно вывести остаток времени игроку.
//user.sendMessage(...);
return false;
}
}
usertime.put(user, time);
return true;
}
static WeakHashMap<Player, Long> col = new WeakHashMap<Player, Long>();
long time = System.currentTimeMillis();
int tmp = 20;
public boolean abs(CommandSender sender){
if(sender instanceof Player){
return false;
}
return true;
}
@Override
public boolean onCommand (CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("Effect")){
if (abs(sender)){
return true;
}
Player p = (Player) sender;
Long last = col.get(p);
if (last!= null){
if((time-last)<tmp) {
p.sendMessage("1"+ (col.get(p) - time)); // выводит вобще ноль
return true;
}
}
col.put(p, time);
p.sendMessage("3" + (col.get(p) - time));
return true;
}
return true;
}
}
static WeakHashMap<Player, Long> usertime = new WeakHashMap<Player, Long>();
static boolean check(Player user, long tmp) {
long time = System.currentTimeMillis();
Long last = usertime.get(user);
if(last!= null) {
if((time-last)<tmp) {
user.sendMessage(tmp-(time-last)+"");
return false;
}
}
usertime.put(user, time);
return true;
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg) {
if(sender instanceof Player) {
//5000 = 5 секунд.
if(check((Player) sender, 5000)) {
//Можно выполнять что то.
}
}
return true;
}
Умножай tmp на 1000, или ты даже такого понять не можешь?Да, туплю немного я сегодня. Спасибо, что помог мне) А можно еще как-то округлить 5000 к 5, получается нулики убрать.