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 org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.metadata.FixedMetadataValue; import java.util.ArrayList; import java.util.List; /** * Represents an instance of a snowball gadget summoned by a player. * * @author iSach * @since 12-15-2015 */ public class GadgetSnowball extends Gadget { private List<Snowball> snowballs; public GadgetSnowball(UltraPlayer owner, UltraCosmetics ultraCosmetics) { super(owner, GadgetType.SNOWBALL, ultraCosmetics); if (owner != null) snowballs = new ArrayList<>(); } @Override void onRightClick() { Snowball snowball = getPlayer().launchProjectile(Snowball.class); snowball.setVelocity(getPlayer().getEyeLocation().getDirection().multiply(1.85d)); snowball.setMetadata("NO_DAMAGE", new FixedMetadataValue(getUltraCosmetics(), "")); } @Override void onLeftClick() { } @Override public void onUpdate() { } @Override public void onClear() { for (Snowball snowball : snowballs) snowball.remove(); snowballs.clear(); snowballs = null; } @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if (event.getDamager().hasMetadata("NO_DAMAGE")) event.setCancelled(true); } }