1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем kovand, 24 фев 2017.

Статус темы:
Закрыта.
  1. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    Я пишу свой плагин на рандомтп, мне надо чтобы телепортироваться можно было только раз в пять минут
     
  2. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Я бы сделал просто.
    Создаёшь HashSet<Player>.
    Когда игрок вводит УСПЕШНО команду (мало ли он без аргументов ввёл), то заносишь его в этот лист и запускаешь задачу с задержкой на время, через которое этого игрока удалить нужно с этого листа. Ну и конечно же перед вводом команды проверяешь, есть ли игрок в этом листе или нет. Если есть, то задача его ещё не удалила, а значит установленное время ещё не прошло. И говоришь ему мол гуляй.
     
  3. VeryNothing

    VeryNothing Участник Пользователь Заблокирован

    Баллы:
    36
    Имя в Minecraft:
    null
    здесь это не требуется, у рандом тп обычно нету аргументов
     
  4. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    А как посмотреть время оставшееся до разблокировки команды?
     
  5. Mabus

    Mabus Активный участник Пользователь

    Баллы:
    76
    Skype:
    chervanenko
    Имя в Minecraft:
    Chervanenko
    Тогда хеш мап юзай и никаких тасков не надов. Имя игрока и время последнего юзания в этот массив кидай.
     
  6. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    А можно код, пожалуйста, а то я с временем на яве не работал?
     
  7. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    а погуглить?
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Посмотри в essentials. Там есть и таймеры и задершки, датадифф и датаформат.
     
  9. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    Это оно?
    Код:
      public void cooldown(boolean check)
        throws Exception
      {
        Calendar time = new GregorianCalendar();
        if (this.teleportOwner.getLastTeleportTimestamp() > 0L)
        {
          double cooldown = this.ess.getSettings().getTeleportCooldown();
          Calendar earliestTime = new GregorianCalendar();
          earliestTime.add(13, -(int)cooldown);
          earliestTime.add(14, -(int)(cooldown * 1000.0D % 1000.0D));
     
          long earliestLong = earliestTime.getTimeInMillis();
     
          Long lastTime = Long.valueOf(this.teleportOwner.getLastTeleportTimestamp());
          if (lastTime.longValue() > time.getTimeInMillis())
          {
            this.teleportOwner.setLastTeleportTimestamp(time.getTimeInMillis());
            return;
          }
          if ((lastTime.longValue() > earliestLong) && (!this.teleportOwner.isAuthorized("essentials.teleport.cooldown.bypass")))
          {
            time.setTimeInMillis(lastTime.longValue());
            time.add(13, (int)cooldown);
            time.add(14, (int)(cooldown * 1000.0D % 1000.0D));
            throw new Exception(I18n.tl("timeBeforeTeleport", new Object[] { DateUtil.formatDateDiff(time.getTimeInMillis()) }));
          }
        }
        if (!check) {
          this.teleportOwner.setLastTeleportTimestamp(time.getTimeInMillis());
        }
      }
     
    Последнее редактирование: 24 фев 2017
  10. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    System.currentTimeMillis();
     
  11. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну да ты на правильном пути. Там есть и сами шедулеры и проверка на движение и тд и тп.
    DateUtil.formatDateDiff тут приводит в читабельный вид уникс тиме. Хотя оно не совсем корректно на русском языке, но не суть.
     
Статус темы:
Закрыта.

Поделиться этой страницей