Помогите Использование BukkitScheduler

Статус
Закрыто для дальнейших ответов.

dreadfaly

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
dolphif
Как задать время таймера в этом коде? А также нужна проверка, что у игрока не истек таймер.

Код:
import java.util.HashMap;

import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin
{
    private long countdowntime;
    private HashMap<Player, Long> players = new HashMap<Player, Long>();
 
    public void onEnable()
    {
        //Bla bla bla
    }
 
    private void voteNegatively(CommandSender sender, String target)
    {
    
        if(!(sender instanceof Player)) return;
        Player player = (Player) sender;
        players.put(player, System.currentTimeMillis());
    
       
        if(this.getTimePassed() >= countdowntime) players.remove(player);
    }
 
 
    public long getTimePassed()
    {
        return System.currentTimeMillis() - countdowntime;
    }
}

Надеюсь на то, что вы мне поможете.
 
Последнее редактирование:
System.currentTimeMillis(); + HashMap в помощь.
 
UPD: обновил тему, уточнил свой вопрос.
 
UPD: обновил тему, уточнил свой вопрос.
Как-то так:
PHP:
import java.util.HashMap;

import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin
{
    private long countdowntime;
    private HashMap<Player, Long> players = new HashMap<Player, Long>();
  
    public void onEnable()
    {
        //Bla bla bla
    }
  
    private void voteNegatively(CommandSender sender, String target)
    {
        //Проверяешь команду, делаешь остальное...
        //Если она, то:
        if(!(sender instanceof Player)) return;
        Player player = (Player) sender;
        players.put(player, System.currentTimeMillis());
      
        //Делаешь проверку на истечение countdown, удаляешь игрока из мапы
        if(this.getTimePassed() >= countdowntime) players.remove(player);
    }
  
  
    public long getTimePassed()
    {
        return System.currentTimeMillis() - countdowntime;
    }
}
 
Как-то так:
PHP:
import java.util.HashMap;

import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin
{
    private long countdowntime;
    private HashMap<Player, Long> players = new HashMap<Player, Long>();
 
    public void onEnable()
    {
        //Bla bla bla
    }
 
    private void voteNegatively(CommandSender sender, String target)
    {
        //Проверяешь команду, делаешь остальное...
        //Если она, то:
        if(!(sender instanceof Player)) return;
        Player player = (Player) sender;
        players.put(player, System.currentTimeMillis());
    
        //Делаешь проверку на истечение countdown, удаляешь игрока из мапы
        if(this.getTimePassed() >= countdowntime) players.remove(player);
    }
 
 
    public long getTimePassed()
    {
        return System.currentTimeMillis() - countdowntime;
    }
}
Благодарю. Вопрос решен.
 
Последнее редактирование:
UPD: а как задать время этого таймера? А также нужна проверка, что у игрока не истек таймер (извините за такую тупость, новичок просто)
 
UPD: а как задать время этого таймера? А также нужна проверка, что у игрока не истек таймер (извините за такую тупость, новичок просто)
Выше пример не таймера, а записи в хеш карту списка игроков и последнего времени голосования (в миллисекундах), потом ты можешь опять узнать время и сравнить его с последним. Например:
long timeNow = System.currentTimeMillis(); // Время в миллисекундах спустя 1 января, 1970 года
if (timeNow - players.get(player) > 1000) .... // Проверяешь, прошло ли 1000 мс (1 сек) спустя последнего голосования.
 
Выше пример не таймера, а записи в хеш карту списка игроков и последнего времени голосования (в миллисекундах), потом ты можешь опять узнать время и сравнить его с последним. Например:
long timeNow = System.currentTimeMillis(); // Время в миллисекундах спустя 1 января, 1970 года
if (timeNow - players.get(player) > 1000) .... // Проверяешь, прошло ли 1000 мс (1 сек) спустя последнего голосования.
Благодарю за уточнение.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх