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

Помогите Как сделать что бы эффект пропал только после 10 минут

Тема в разделе "Разработка плагинов для новичков", создана пользователем Rion_GM, 17 окт 2022.

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

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

    Баллы:
    66
    Имя в Minecraft:
    Rion_GM
    Добрый день.
    Мне нужно сделать что бы нельзя было отменить эффект замедления, я думаю для этого нужно выдать эффект на несколько секунд, и потом когда эффект пропадает, дается такой же только новый, и это должно продолжатся на протяжении 10 минут.
    public class EventListener implements Listener {

    @EventHandler
    public void perelom(EntityDamageEvent e) throws InterruptedException {
    Player player = (Player) e.getEntity();
    if (e.getCause() == EntityDamageEvent.DamageCause.FALL) {
    player.sendMessage(ChatColor.YELLOW + "Ты сломал ноги");
    player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1, 1));

    }
    }
    }
     
  2. Lemar98

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

    Баллы:
    76
    Запускай шедулер и обновляй там эффект
     
  3. Автор темы
    Rion_GM

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

    Баллы:
    66
    Имя в Minecraft:
    Rion_GM
    я имел ввиду что мне нужно понять как выдать эффект а потом ещё через время выдать такой же эффект
     
  4. Lemar98

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

    Баллы:
    76
    Запускаешь #runTaskTimer.
    В теле выдаешь игроку нужный эффект.
    Когда нужно остановиться, стопаешь таймер.

    Таким образом, таймер сам будет накидывать игроку эффект раз в N времени до тех пор, пока ты его не остановишь
     
  5. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Ответ, в целом, уже дан, но хотел бы уточнить - зачем?
    Если для того, чтобы не снимали молоком - лучше отслеживать EntityPotionEffectEvent с причиной MILK.
    Ещё можно обойтись без эффекта вовсе, добавив атрибуту скорости модификатор - player.getAttribute(GENERIC_MOVEMENT_SPEED).addModifier(...). Единственное, тогда, если на игрока будет наложен ещё и эффект замедления, они будут складироваться.
     
  6. Автор темы
    Rion_GM

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

    Баллы:
    66
    Имя в Minecraft:
    Rion_GM
    разве смерть тоже не сбросит атрибуты или EntityPotionEffectEvent?
     
  7. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Для смерти есть причина DEATH, должно сработать. А атрибуты пропасть при смерти не должны.
     
  8. Автор темы
    Rion_GM

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

    Баллы:
    66
    Имя в Minecraft:
    Rion_GM
    я что то совсем не понял как работает EntityPotionEffectEvent
     
  9. Автор темы
    Rion_GM

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

    Баллы:
    66
    Имя в Minecraft:
    Rion_GM
    Если есть пример EntityPotionEffectEvent можешь скинуть?
     
  10. Автор темы
    Rion_GM

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

    Баллы:
    66
    Имя в Minecraft:
    Rion_GM
    спасибо, наконец то понял как оно работает
     
Статус темы:
Закрыта.

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