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

Помогите Как примагнитить/притянуть энтити?

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

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

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

    Баллы:
    76
    Имеется такой код.
    Код:
    @EventHandler
        public void onHitEvent(EntityDamageByEntityEvent e) {
            Projectile projectile = (Projectile) e.getDamager();
            Player shooter = (Player) projectile.getShooter();
            Entity entity = e.getEntity();
            if(shooter instanceof Player && projectile instanceof Snowball) {
                //Здесь нужно притянуть энтити
            }
        }
    Нужно притянуть энтити в которое попал снежок к игроку, который кинул этот снежок(shooter). Как это сделать?
     
  2. Mr Hosting
  3. Cool_boy

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

    Баллы:
    76
    Имя в Minecraft:
    prettydude
    Дать этому Entity ускорение в сторону игрока
     
  4. Автор темы
    l_Slime_l

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

    Баллы:
    76
    Код пожалуйста)
     
  5. Cool_boy

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

    Баллы:
    76
    Имя в Minecraft:
    prettydude
    Работоспособность не гарантирую, но примерно так:
    PHP:
        @EventHandler
        
    public void onHitEvent(ProjectileHitEvent e) {
            if(
    e.getHitEntity()==null) return;
            
    Projectile proj e.getEntity();
            if(
    proj instanceof Snowball && proj.getShooter() instanceof Player) {
                
    Player player = (Playerproj.getShooter();
                
    Entity entity e.getHitEntity();
                
    Location shooter player.getLocation();
                
    Location target entity.getLocation();
                
    Vector diff target.substract(shooter).toVector(); //вектор разницы координат (возможно надо поменять местами)
                
    diff.multiply(new Vector(1,1.2,1)); //советую прибавить Y, чтобы не тянуть существо по земле, а подбросить
                
    entity.setVelocity(diff);
            }
        }

     
    Последнее редактирование: 13 апр 2018
  6. Автор темы
    l_Slime_l

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

    Баллы:
    76
    А что делать если в diff.multiply(1,1.2,1) нельзя вводить 3 числа? Наверное потому что я динозаврик на Spigot 1.8 пишу) Что делать тогда?
     
  7. Cool_boy

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

    Баллы:
    76
    Имя в Minecraft:
    prettydude
    Поправил
     
  8. Автор темы
    l_Slime_l

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

    Баллы:
    76
    А как сделать так, чтобы если игрок находится выше энтити, то энтити притягивалось вверх)
     
  9. Cool_boy

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

    Баллы:
    76
    Имя в Minecraft:
    prettydude
    В теории - оно уже должно. Чтобы победить силу притяжения мы умножаем вектор по Y, но для больших расстояний может не хватить
     

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