Помогите Плагин на временные действия

Bomber123

Активный участник
Пользователь
Баллы
76
Я значит хочу сделать плагин на временный мут/бан.
У меня уже есть плагин но он выполняет своё действие навсегда.
Как мне сделать плагин который выполняет своё действие на время.
И к стати как мне потом всё отменять, по поводу мута я уже знаю как отменять а вот бааааан.
 
System.currentTimeMillis
 
Я конечно нашёл для себя нужный метод
JavaScript:
//Импрот из джавы
import: java.time.Duration;
//Метод
Duration.ofMinutes(long arg0);

Но как им пользоваться?
 
Ребят я тут в java нашёл один очень интересный класс он называется Timer как им пользоваться?
И посоветуйте мне как его использовать.
 
Ребят я тут в java нашёл один очень интересный класс он называется Timer как им пользоваться?
И посоветуйте мне как его использовать.
Google.com -> %вставьте название класса% javadocs -> найти
 
Ок я нашёл нужный мне метод. Вот он!
JavaScript:
time.schedule(arg0, arg1);
ребят только вот как его к муту подключить.
я плагин через булеановскую переменную делал.
JavaScript:
//она вот так выглядит
boolean mute = false;
//и дальше я привязывал эту переменную к ивенту
 
В Bukkit есть свой вариант задач
bukkit getscheduler и далее смотри методы и читай доки
 
В БД можно записать (текущее время + время блокировки), когда игрок заходит на сервер, плагин сравнивает то время с текущим. Если текущее время больше, то снимаем блокировку и пускаем игрока на сервер.
 
Допустим информацию о бане можно хранить так:
JavaScript:
public class pBan{

  private static Map<String, pBan> players = new HashMap<>();
  private String playerName;
  private String reacon = "";
  private lont time;

  public pBan(String name){
    playerName = name;
    players.put(name, this);
  }

  public static pBan getBan(String name){
    return players.get(name);
  }

  public static boolean isBanned(String name){
    return players.containsKey(name);
  }

  public static void unban(String name){
    players.remove(name);
  }

  public void setReacon(String reacon){
    this.reacon = reacon;
  }

  public String getReacon(){
    return reacon;
  }

  public void setTime(int time){
    this.time = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(time);
  }

  public long getTime(){
    return time;
  }

}

Использовать баны можно так:
JavaScript:
pBan ban = new bBan("name");
ban.setTime(10); //бан на 10 минут

Ивент для банов:
JavaScript:
@EventHandler
public void onJoin(PlayerLoginEvent e){
   String name = e.getPlayer().getName();
   if(!pBan.isBanned(name))return;
   pBan ban = pBan.getBan(name);
   if (ban.getTime() <= System.currentTimeMillis()){
     pBan.unban(name);
     return;
   }
   e.disallow(PlayerLoginEvent.Result.KICK_BANNED, ban.getReacon());
}

P.S. Для тех, кто готов меня сожрать за код: Я делал все это от руки и особо не думал над кодом, потому он не очень и вообще может не работать.
P.P.S. И извините, что скинул парню весь код:( Знаю, что тут не принято кидать готовые решения.
 
ХВАТИТ АПАТЬ ТЕМЫ НА КОТОРЫХ НЕ БЫЛО ОТВЕТОВ с*** больше недели, куда на лечение скидывать?
 
ХВАТИТ АПАТЬ ТЕМЫ НА КОТОРЫХ НЕ БЫЛО ОТВЕТОВ с*** больше недели, куда на лечение скидывать?
Кошельки:
Карта: 4249605451556211
Киви: +380953954088
WebMoneyR: R280873133036
WebMoneyU: U858372485106
WebMoneyZ: Z279786438984
P.S. Шутка))
 
Назад
Верх