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

Помогите Отменить отдачу от урона

Тема в разделе "Разработка плагинов для новичков", создана пользователем NoTitles, 20 июл 2020.

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

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

    Баллы:
    66
    Здравствуйте, как отменить отдачу от урона, при этом нанеся урон? Без отмены ивента
    EntityDamageByEntityEvent, т.к. возникает много лишних проблем.

    На данный момент мой код выглядит так, но это не тот эффект, который мне нужен, ибо отдача гасится не полностью.
    Код:
       @EventHandler
        private void onDamageEvent(EntityDamageByEntityEvent e) {
            if (e.getEntity() instanceof Player) {
                Player p = (Player) e.getEntity();
                StateFlag.State flag = WGBukkit.getRegionManager(p.getWorld()).getApplicableRegions(p.getLocation()).getFlag(DefaultFlag.PVP);
                if (KBCommand.getpModeKBCooldown().containsKey(p.getUniqueId()) && (flag != null && !flag.equals(StateFlag.State.DENY))) {
                //    p.setVelocity(p.getVelocity().setX(0).setY(0).setZ(0));
                    Vector vec = p.getVelocity();
                    Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), () -> {
                        p.setVelocity(vec.zero());
                    }, 1L);
                }
            }
    
        }
    
     
    Последнее редактирование: 20 июл 2020
  2. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Есть эвент PlayerVelocity попробуй его отменить
     
  3. nutrolshok

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

    Баллы:
    76
    Заноси челика в список, в ивенте PlayerVelocityEvent проверяй наличие этого игрока в списке, если он есть, то отменяй ивент, а потом убирай чела из списка. Если это не поможет, то без отмены ивента на дамаг никак не убрать
     
  4. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Проще достать причину последнего дамага я думаю
     
  5. nutrolshok

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

    Баллы:
    76
    там незя
     
  6. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    с каких пор?
    Код:
    event.getPlayer().getLastDamageCause();
     
  7. nutrolshok

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

    Баллы:
    76
    А, ну так это да. Я про ивент говорил) В самом ивенте нет причин.
     
  8. Автор темы
    NoTitles

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

    Баллы:
    66
    Это к чему. В чем смысл реализации?
     
  9. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    В том что ты используешь EntityDamageByEntityEvent, соответственно ты хочешь отменять отдачу когда ударяет моб или игрок, а не все *толчки* подряд
     
  10. Автор темы
    NoTitles

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

    Баллы:
    66
    Тема вновь открыта для дискуссий. Античит ругается и кикает игроков, ищу альтернативное решение(не отмену PlayerVelocityEvent).
     
  11. nutrolshok

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

    Баллы:
    76
    Ну логично, что он будет кикать. Он это считает за Antiknockback. Кроме отмены этого ивента, а также отмены ивента на дамаг, решения нет.
     
  12. BestKVanT

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

    Баллы:
    76
    Только делать поддержку для отдельных анти-читов, аля если игрок в определённом списке, то не давать ач считать это за антинокбэк
     
  13. Автор темы
    NoTitles

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

    Баллы:
    66
    Останусь при своем и просто через тик буду обнулять velocity, так отдача меньше и античит не кикает.
    Кто хочет что-то более адекватное на будущее: отменяйте дамаг, ломайте броню, правильно наносите урон (во время бафа чаренными яблоками урон по красным сердцам не проходит).
     

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