Untitled
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