Untitled

 avatar
unknown
java
2 months ago
2.0 kB
4
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