package be.isach.ultracosmetics.cosmetics.gadgets; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.UltraCosmeticsData; import be.isach.ultracosmetics.player.UltraPlayer; import be.isach.ultracosmetics.cosmetics.type.GadgetType; import be.isach.ultracosmetics.util.*; import org.bukkit.*; import org.bukkit.entity.*; import org.bukkit.util.Vector; import java.util.ArrayList; import java.util.List; /** * Represents an instance of a quake gun gadget summoned by a player. * * @author iSach * @since 10-12-2015 */ public class GadgetQuakeGun extends Gadget { List<Firework> fireworkList = new ArrayList<>(); public GadgetQuakeGun(UltraPlayer owner, UltraCosmetics ultraCosmetics) { super(owner, GadgetType.QUAKEGUN, ultraCosmetics); } @Override void onRightClick() { SoundUtil.playSound(getPlayer(), Sounds.BLAZE_DEATH, 1.4f, 1.5f); Location location = getPlayer().getEyeLocation().subtract(0, 0.4, 0); Vector vector = location.getDirection(); for (int i = 0; i < 20; i++) { Firework firework = (Firework) location.getWorld().spawnEntity(location, EntityType.FIREWORK); location.add(vector); fireworkList.add(firework); List<Entity> nearbyEntities = firework.getNearbyEntities(0.5d, 0.5d, 0.5d); if (affectPlayers) if (!nearbyEntities.isEmpty()) { Entity entity = nearbyEntities.get(0); if ((entity instanceof Player || entity instanceof Creature) && entity != getPlayer()) { MathUtils.applyVelocity(entity, new Vector(0, 1, 0)); UtilParticles.display(Particles.FLAME, entity.getLocation(), 60, 0.4f); FireworkEffect.Builder builder = FireworkEffect.builder(); FireworkEffect effect = builder.flicker(false).trail(false).with(FireworkEffect.Type.BALL_LARGE) .withColor(Color.RED).withFade(Color.ORANGE).build(); UltraCosmeticsData.get().getVersionManager().getFireworkFactory().spawn(location, effect); } } } Bukkit.getScheduler().runTaskLaterAsynchronously(getUltraCosmetics(), new Runnable() { @Override public void run() { for (Firework firework : fireworkList) UltraCosmeticsData.get().getVersionManager().getEntityUtil().sendDestroyPacket(getPlayer(), firework); } }, 6); } @Override void onLeftClick() { } @Override public void onUpdate() { } @Override public void onClear() { } }