package be.isach.ultracosmetics.cosmetics.gadgets;
import be.isach.ultracosmetics.UltraCosmetics;
import be.isach.ultracosmetics.player.UltraPlayer;
import be.isach.ultracosmetics.cosmetics.type.GadgetType;
import be.isach.ultracosmetics.util.BlockUtils;
import be.isach.ultracosmetics.util.Particles;
import be.isach.ultracosmetics.util.UtilParticles;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Item;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
*
*
* @author iSach
* @since 12-15-2015
*/
public class GadgetFreezeCannon extends Gadget {
private List<Item> items;
private List<Item> queue;
public GadgetFreezeCannon(UltraPlayer owner, UltraCosmetics ultraCosmetics) {
super(owner, GadgetType.FREEZECANNON, ultraCosmetics);
if (owner == null) return;
items = new ArrayList<>();
queue = new ArrayList<>();
}
@Override
void onRightClick() {
Item item = getPlayer().getWorld().dropItem(getPlayer().getEyeLocation(), new ItemStack(Material.ICE));
item.setVelocity(getPlayer().getEyeLocation().getDirection().multiply(0.9));
queue.add(item);
}
@EventHandler
public void onPickup(PlayerPickupItemEvent event) {
if(items.contains(event.getItem())) event.setCancelled(true);
}
@Override
public void onUpdate() {
for (Item item : queue)
items.add(item);
queue.clear();
Iterator<Item> itemIterator = items.iterator();
while (itemIterator.hasNext()) {
Item i = itemIterator.next();
if (i.isOnGround()) {
for (Block b : BlockUtils.getBlocksInRadius(i.getLocation(), 4, false))
BlockUtils.setToRestore(b, Material.PACKED_ICE, (byte) 0, 50);
UtilParticles.display(Particles.FIREWORKS_SPARK, 4d, 3d, 4d, i.getLocation(), 80);
i.remove();
itemIterator.remove();
}
}
}
@Override
public void onClear() {
for (Item item : items)
item.remove();
for (Item item : queue)
item.remove();
queue.clear();
items.clear();
items = null;
queue = null;
}
@Override
void onLeftClick() {
}
}