Помогите Дать эффект стреле

Статус
Закрыто для дальнейших ответов.

IcedwinterZ

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
IcedwinterZ
Как дать эффект стреле, что бы за стрелой, тянулась тонкая нить огня, делал это так:
Код:
 while(!a.isOnGround()){
                    a.getLocation().getWorld().spawnParticle(Particle.FLAME, a.getLocation(), 1, 0, 0, 0, 1);
                }

Но спаунился такой огрооомный, жирный шар, из за которого можно было остаться без сервера..
 
Ну так ясень пень, он же спавнится как только отработает цикл, а происходит это очень быстро, не удивлюсь если у тебя спавнится по 100 шаров в секунду. Задержку делай, Иванушка..
 
Можешь запустить шедулер, который с некоторым интервалом будем проверять, не коснулась ли стрела земли или нет ли рядом с ней блоков, если это так, убивай шедулер, иначе проигрывай эффект.
 
А почему шары тогда идут не за стрелой, а появляются там где я выстрелил?
 
А почему шары тогда идут не за стрелой, а появляются там где я выстрелил?
Потому что нужен шедулер, который будет работать как стробоскоп, на каждой позиции стрелы в конкретный момент времени проигрывать эффект.
 
Потому что нужен шедулер, который будет работать как стробоскоп, на каждой позиции стрелы в конкретный момент времени проигрывать эффект.
Последний вопрос, почему шары огромные, как 5 меня (в майнкрафте)
 
Последний вопрос, почему шары огромные, как 5 меня (в майнкрафте)
Возможно, потому что они рядом и их много.Кстати, если цикл работает, то лучше наладить получение локации(я думаю проблема в ней), нежели делать через шедулер.
 
Если уж лезть в nms, почему бы не создать свой класс стрелы и пусть он делает всю грязную работу.
 
Мне просто, что бы за стрелой, поганый огонь шел...
Java:
package prefix;

import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class Scheduler3  extends Thread {
    @Override
    public void run() {
        for(;;) {
            try {
                for(World w : Bukkit.getServer().getWorlds()) {
                    for(Entity en :w.getEntities()) {
                        if(en.getType() == EntityType.ARROW && !en.isOnGround()) {
                            w.playEffect(en.getLocation(), Effect.FLAME, 0);
                        }
                    }
                }
            } catch (Exception e) {}
        }
    }
}
кек
 
Java:
package prefix;

import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class Scheduler3  extends Thread {
    @Override
    public void run() {
        for(;;) {
            try {
                for(World w : Bukkit.getServer().getWorlds()) {
                    for(Entity en :w.getEntities()) {
                        if(en.getType() == EntityType.ARROW && !en.isOnGround()) {
                            w.playEffect(en.getLocation(), Effect.FLAME, 0);
                        }
                    }
                }
            } catch (Exception e) {}
        }
    }
}
кек
а разве не spawnParticle?
 
Java:
package prefix;

import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class Scheduler3  extends Thread {
    @Override
    public void run() {
        for(;;) {
            try {
                for(World w : Bukkit.getServer().getWorlds()) {
                    for(Entity en :w.getEntities()) {
                        if(en.getType() == EntityType.ARROW && !en.isOnGround()) {
                            w.playEffect(en.getLocation(), Effect.FLAME, 0);
                        }
                    }
                }
            } catch (Exception e) {}
        }
    }
}
кек
Вот ещё лучше, ведь для каждого игрока нужно:
Код:
package prefix;

import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class Scheduler3  extends Thread {
    @Override
    public void run() {
        for(;;) {
            try {
                for(World w : Bukkit.getServer().getWorlds()) {
                    for(Entity en :w.getEntities()) {
                        if(en.getType() == EntityType.ARROW && !en.isOnGround()) {
                           for(Player player : getServer().getOnlinePlayers())
                               w.playEffect(en.getLocation(), Effect.FLAME, 0);
                        }
                    }
                }
            } catch (Exception e) {}
        }
    }
}
 
:D:D:D:D
Вот ещё лучше, ведь для каждого игрока нужно:
Код:
package prefix;

import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;

public class Scheduler3  extends Thread {
    @Override
    public void run() {
        for(;;) {
            try {
                for(World w : Bukkit.getServer().getWorlds()) {
                    for(Entity en :w.getEntities()) {
                        if(en.getType() == EntityType.ARROW && !en.isOnGround()) {
                           for(Player player : getServer().getOnlinePlayers())
                               w.playEffect(en.getLocation(), Effect.FLAME, 0);
                        }
                    }
                }
            } catch (Exception e) {}
        }
    }
}
Нах? И так всем видно... Или ты хочешь сказать, что я та стрела, что летит на видио ?)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх