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

Помогите При определённых условиях отключить действие брони

Тема в разделе "Разработка плагинов для новичков", создана пользователем Den-Xs, 6 сен 2013.

  1. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    Собственно, нужно чтобы при определенных условиях, при нанесении игроку урона, игнорировался эффект от брони.
     
    ВремяПриключений нравится это.
  2. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А что сложного? Задавай при определённых условиях больше урона
     
  3. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    т.е. если я поставлю event.setDamage(10), у меня будет наноситься 10 урона не зависимо от наличия брони?
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    да
     
    Den-Xs нравится это.
  5. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    Однако ж нет
    Код:
    package ru.testplugin;
     
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class TestPlugin extends JavaPlugin implements Listener {
     
        @Override
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
        }
     
        @EventHandler
        public void onDamage (EntityDamageByEntityEvent event) {
            if (event.getEntity() instanceof Player) {
                event.setDamage(6D);
            }
        }
    }
    
    Не смотря на то, что во всех случаях нанесения урона игроку урон устанавливается на 6, реальные значения урона у игроков с бронёй и без неё будет различаться.
    Тема всё ещё актуальна
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Юзай так
    Код:
    Player p = (Player) event.getEntity();
    p.damage();
    
    Так норм будет
     
  7. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    Сделал так:
    Код:
    @EventHandler
    public void onDamage (EntityDamageByEntityEvent event) {
       if (event.getEntity() instanceof Player) {
           Player p = (Player) event.getEntity();
           double dmg = event.getDamage();
           p.damage(dmg);
           p.sendMessage("Вы получили " + dmg + " урона");
        }
    }
    При употреблении зелья на урон в броне в чат пишет "вы получили 6.0 урона", а реально отнимается только 2 сердца (4 урона). Без брони наносится, как положено, 6 урона.
    Упс, случайно проводил испытания на чареной броне, на обыкновенной с p.damage() всё в порядке :)
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Для совсем извращений есть p.setHealth();
     
  9. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    Это я знаю, но тогда не отображается анимация урона/лечения, поэтому лучше p.damage();
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Наноси нулевой дамаг или проигрывай эффект HURT
     
  11. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Баллы:
    103
    Skype:
    denis_314
    однако это уже пошло "извращение" :D
     
    ВремяПриключений и Den_Abr нравится это.

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