Помогите Создание ауры вокруг игрока

Dunda

Участник
Баллы
31
Всем привет.

Можно ли создать ауру со специальными эффектами вокруг игрока и если да, то как?
В Spigot API не могу найти ничего подходящего. В сети плагины или до 2017 года, или платные.
 
Всем привет.

Можно ли создать ауру со специальными эффектами вокруг игрока и если да, то как?
В Spigot API не могу найти ничего подходящего. В сети плагины или до 2017 года, или платные.
player.spawnParticle
 
Всем привет.

Можно ли создать ауру со специальными эффектами вокруг игрока и если да, то как?
В Spigot API не могу найти ничего подходящего. В сети плагины или до 2017 года, или платные.
Если я правильно тебя понял, то вот:

Код:
    public static void CreateEffect(final Location loc) {
        final PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(EnumParticle.REDSTONE, true, (float)(loc.getX() + 0.0), (float)(loc.getY() + 0.0), (float)(loc.getZ() + 0.0), 0.0f, 0.0f, 0.0f, 0.0f, 1, new int[0]);
        for (final Player online : Bukkit.getOnlinePlayers()) {
            ((CraftPlayer)online).getHandle().playerConnection.sendPacket((Packet)packet);
        }
    }
 
    public static void spawnSphere(Location l) {
        double r = 1.5;
        for(double phi = 0; phi <= Math.PI; phi += Math.PI / 10) {
            double y = r * Math.cos(phi) + 1;
            for(double theta = 0; theta <= 2 * Math.PI; theta += Math.PI / 10) {
                double x = r * Math.cos(theta) * Math.sin(phi);
                double z = r * Math.sin(theta) * Math.sin(phi);

                l.add(x, y, z);
                CreateEffect(l);
                l.subtract(x, y, z);
            }
        }
    }
    }

Этим ты создашь сферу на локации игрока, диаметр регулируй сам, чтобы создать:
spawnSphere(p.getLocation());
 

Вложения

  • Screenshot_45.png
    Screenshot_45.png
    210,6 КБ · Просмотры: 37
Последнее редактирование:
Если я правильно тебя понял, то вот:

Код:
    public static void CreateEffect(final Location loc) {
        final PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(EnumParticle.REDSTONE, true, (float)(loc.getX() + 0.0), (float)(loc.getY() + 0.0), (float)(loc.getZ() + 0.0), 0.0f, 0.0f, 0.0f, 0.0f, 1, new int[0]);
        for (final Player online : Bukkit.getOnlinePlayers()) {
            ((CraftPlayer)online).getHandle().playerConnection.sendPacket((Packet)packet);
        }
    }
 
    public static void spawnSphere(Location l) {
        double r = 1.5;
        for(double phi = 0; phi <= Math.PI; phi += Math.PI / 10) {
            double y = r * Math.cos(phi) + 1;
            for(double theta = 0; theta <= 2 * Math.PI; theta += Math.PI / 10) {
                double x = r * Math.cos(theta) * Math.sin(phi);
                double z = r * Math.sin(theta) * Math.sin(phi);

                l.add(x, y, z);
                CreateEffect(l);
                l.subtract(x, y, z);
            }
        }
    }
    }

Этим ты создашь сферу на локации игрока, диаметр регулируй сам, чтобы создать:
spawnSphere(p.getLocation());
Спасибо огромное за информацию!

У меня осталась пара вопросов:
1) Будет ли эта сфера перемещаться вместе с игроком?
2) Как сделать так, чтобы каждый игрок, кто попадаёт в область этой сферы получал эффект, допустим, регенерации? Как это сделать без частиц? Вот стоит игрок, а вокруг все получают эффект скорости.
 
Последнее редактирование:
Спасибо огромное за информацию!

У меня осталась пара вопросов:
1) Будет ли эта сфера перемещаться вместе с игроком?
2) Как сделать так, чтобы каждый игрок, кто попадаёт в область этой сферы получал эффект, допустим, регенерации? Как это сделать без частиц? Вот стоит игрок, а вокруг все получают эффект скорости.
бесконечный таск, проверять в радиусе сущности
 
И вообще на партиклы есть апи в ведре, а не этот костыль, что тебе дали.
 
Вторым постом же отправил вам метод, с добрым утром...
upload_2021-2-14_10-34-23.png
 
Спасибо огромное за информацию!

У меня осталась пара вопросов:
1) Будет ли эта сфера перемещаться вместе с игроком?
2) Как сделать так, чтобы каждый игрок, кто попадаёт в область этой сферы получал эффект, допустим, регенерации? Как это сделать без частиц? Вот стоит игрок, а вокруг все получают эффект скорости.


1) Можно реализовать таким способом :
Код:
    public static void effect(final Player p) {
        final BukkitRunnable runable = new BukkitRunnable() {
            int timer = 70; //Длительность
            int timer5 = 20;
          
            public void run() {
               spawnSphere(p.getLocation());
                if (this.timer-- >= 0) {
                    if (this.timer5-- < 0) {
                                return;
                            }                                                             
                    else {
                                return;
                            }                                   
                }
                else {
                    this.cancel();
                }
            }
        };
        runable.runTaskTimer((Plugin)Main.instance, 0L, 1L);
    }

Потом: effect(Player);
И сфера всегда будет перемещаться вместе с игроком;

2)
Код:
            BukkitRunnable runable = new BukkitRunnable() {
                int timer = 75;
                @Override
                public void run() {
                    if (this.timer-- > 0) {
                        for (Entity entity : Player.getNearbyEntities(1.5D, 1.5D, 1.5D)) {      
                            LivingEntity target = (LivingEntity)entity;
                                    target.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 1));
                                  target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 1));
                                    target.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 200, 0));
                                      target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 1));
                            }
                        }
                    }             
            };
            runable.runTaskTimer((Plugin)Main.instance, 0L, 1L);
        }
В данном случае ты просто проверяешь всех кто есть в каком-то радиусе от игрока и накладываешь на них эффекты если они зашли в него. Чтобы эффекты накладывались именно зайдя в сферу , просто сделай соответствующий ей радиус

А чтобы сделать без частиц,просто не спавнь их:good:
 
Есть spawnParticle. Да и то что ты сделал будет светить игрока за километр. Да и тпс отожрет еще.
партиклы можно спавнить в асунке, так что насчет партиклов и падения тпс можно не парится)
 
Назад
Верх