001 package org.bukkit.projectiles; 002 003 import org.bukkit.entity.Projectile; 004 import org.bukkit.util.Vector; 005 006 /** 007 * Represents a valid source of a projectile. 008 */ 009 public interface ProjectileSource { 010 011 /** 012 * Launches a {@link Projectile} from the ProjectileSource. 013 * 014 * @param projectile class of the projectile to launch 015 * @return the launched projectile 016 */ 017 public <T extends Projectile> T launchProjectile(Class<? extends T> projectile); 018 019 /** 020 * Launches a {@link Projectile} from the ProjectileSource with an 021 * initial velocity. 022 * 023 * @param projectile class of the projectile to launch 024 * @param velocity the velocity with which to launch 025 * @return the launched projectile 026 */ 027 public <T extends Projectile> T launchProjectile(Class<? extends T> projectile, Vector velocity); 028 }