Untitled
unknown
java
10 months ago
2.0 kB
7
Indexable
public final class FinalKillEffectTornado extends FinalKillEffectHandler {
@Override
public void playEffect(Player killer, Player victim) {
playSpiralPath(victim.getLocation());
}
public static void playSpiralPath(Location start) {
Set<Player> players = WorldUtils.getNearbyPlayers(start, 32, start.getWorld().getPlayers());
BukkitTask soundTask = Scheduler.runTaskTimer(() -> PacketUtils.sendSoundData(
CraftSound.getSound(Sound.ENDERDRAGON_WINGS),
start,
players
), 0, 8);
new BukkitRunnable() {
double e = 0;
@Override
public void run() {
if ((e += Math.PI / 20) >= Math.PI) {
soundTask.cancel();
cancel();
return;
}
for (double t = e; t <= Math.PI + e; t += 2 * Math.PI / 3) {
playSpiralFrame(t, 0, start);
playSpiralFrame(t, Math.PI, start);
}
}
}.runTaskTimer(BedWarsCosmeticsGame.getInstance().getPlugin(), 0, 2);
}
public static void playSpiralFrame(double t, double offsetRadians, Location start) {
Vector3d pos = getPosition(t, offsetRadians);
PacketUtils.sendEffectData(
32,
EnumParticle.EXPLOSION_NORMAL,
start.clone().add(pos.x, pos.y, pos.z),
true,
0f,
0f,
0f,
0f,
1
);
}
public static Vector3d getPosition(double t, double offsetRadians) {
double x = t * Math.cos(4 * t + offsetRadians);
double y = t * Math.sin(4 * t + offsetRadians);
double z = 3 * t;
return new Vector3d(x, y, z);
}
@Override
public CosmeticFinalKillEffects getCosmetic() {
return CosmeticFinalKillEffects.TORNADO;
}
}Editor is loading...
Leave a Comment