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

Помогите Отключение урона от падения

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

  1. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Есть эвент, при котором игрока отправляет в воздух через setVelocity(). Каким образом можно отключить урон от падения? Если через EntityDamageEvent, то каким образом понять, что получивший урон игрок был запущен в воздухе при другом событии?
     
  2. _Nanit_

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

    Баллы:
    76
    Имя в Minecraft:
    _Nanit_
    Код:
    DamageCause cause = event.getCause();
    if(cause.equals(DamageCause.FALL)){
        //TODO
    }
     
  3. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Я бы сделал простейшую HashMap<String, Long> (имя игрока - время броска в миллисекундах) и записывал туда каждого игрока, которого бросаешь. Затем как сказал _Nanit_ выше - чекаем, что урон приходит от падения и сравниваем, сколько времени прошло с момента броска (с мапы). Делаешь там секунд 5-10 в зависимости от того, насколько высоко ты будешь подкидывать. Так же после урона можно удалить с мапы игрока. Вот такой костыль. По нормальному не получится, но все можно просчитать и сделать максимально близко.
     
  4. IlyaHaker

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

    Баллы:
    76
    А не лучше сделать HashMap<String, Boolean> - когда он взлетает добавлять значение true, когда падает делать его false? Если он взлетел от этого velocity, то он гарантированно упадет же
     
  5. alexandrage

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

    Баллы:
    173
    С читами нет.
     
  6. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Проблема в том, что игрок может и не получить урона от падения)
    В зависимости от того, как высоко его подкинет
     
  7. alexandrage

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

    Баллы:
    173
    И в зависимости от читов на клиенте, ага.
     
  8. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Извините, я абсолютный ламер. Как именно нужно реализовывать HashMap? Где объявлять, как брать, как записывать
     
  9. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Возьми себе книжку по Java, освой первые 15 глав. Потом берись за плагины.
    В гугле все ищется, Baeldung в целом дает неплохие туториалы по разным частям.
    Я бы написал краткий пример, но там достаточно много разных тонкостей, расписывать слишком много всего, чтобы ты понял наверняка. В целом:
    PHP:
    Map<StringLongmap = new HashMap<>();

    String playername "Player";
    long timestamp System.currentTimeMillis(); // текущее время в миллисекундах
    map.put(playernametimestamp); // ассоциируем игрока с текущим временем

    // вернет время, ассоциированное с ником игрока, иначе вернет -1
    long time map.getOrDefault("Player", -1);
     
    Последнее редактирование: 16 апр 2019
  10. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Дак дело в том, что знаком, просто не знал, как именно работают плагины)
    Проблема решена, тема закрыта.
     

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