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

Эвент обходит условие

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Не могу понять что не так с условием (EntityDamageByEntityEvent). Я вижу его так если тот кто получил урон и тот кто нанес урон не игроки, то отмена
    Код:
    if (e.getEntity().getType() != EntityType.PLAYER && e.getDamager().getType() != EntityType.PLAYER)return;
    Дальше я кастую дамагера в игрока, но если бью не игрока то вылезает ошибка, которая ссылается на невозможность каста(например CraftZombie to Player). Откройте мне глаза.
     
  2. Автор темы
    NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Думаю правильнее будет проверять происхождение *instanceof*, но все же, что тут не так?
     
  3. Pa4ok

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

    Баллы:
    66
    Код:
    if (e.getEntity().getType() != EntityType.PLAYER && e.getDamager().getType() != EntityType.PLAYER) {
        e.setCanceled(true);
        return;
    }
     
  4. Автор темы
    NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Я имел ввиду отмена дальнейших действий по коду, а не эвента
     
  5. Pa4ok

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

    Баллы:
    66
    почему у тебя && стоит? посмотри и подумай, при каких условиях у тебя выполнится if
     
  6. CriticaMobslps

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

    Баллы:
    76
    Имя в Minecraft:
    Votybo
    Это бред, по виду, даже такой код должен работать, сам ивент работает? Ты его зарегестрировал
     
  7. Pa4ok

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

    Баллы:
    66
    у него дальше по коду идет каст ентити к игроку скорее всего
    условие написано не верно и будет выполняться только когда мод будет бить моба
    от этого и ошибки
     
  8. Автор темы
    NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Мне нужно чтобы энтити был игроков и дамагер был игроком, бью зомби return не срабатывает, КрафтЗомби пытается скастоваться в игрока = ошибка, пофиксилось заменой проверки типов на проверку пренадлежности к классу
    Конечно все работает, выдает ошибку же, все пофиксил, но вопрос остался
     
  9. WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Вместо && поставь ||

    (1: CraftZombie.type != PLAYER) && (2: Player.type != PLAYER)
    Первая проверка проходит, потому что зомби не игрок, а вот вторая нет, потому что игрок это игрок
    когда ты делаешь &&, это значит, что 1 и 2 должны быть True, а у тебя True только 1.
     
  10. Автор темы
    NoooobKa

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

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

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