# Projectile (Scissors-API 1.19.3-R0.1-SNAPSHOT API)
declaration: package: org.bukkit.entity, interface: Projectile

Package org.bukkit.entity

# Interface Projectile

All Superinterfaces:
  `Audience`, `CommandSender`, `Entity`, `HoverEventSource<HoverEvent.ShowEntity>`, `Metadatable`, `Nameable`, `Permissible`, `PersistentDataHolder`, `Pointered`, `ServerOperator`, `Sound.Emitter`

All Known Subinterfaces:
  `AbstractArrow`, `Arrow`, `DragonFireball`, `Egg`, `EnderPearl`, `Fireball`, `Firework`, `FishHook`, `LargeFireball`, `LingeringPotion`, `LlamaSpit`, `ShulkerBullet`, `SizedFireball`, `SmallFireball`, `Snowball`, `SpectralArrow`, `SplashPotion`, `ThrowableProjectile`, `ThrownExpBottle`, `ThrownPotion`, `TippedArrow`, `Trident`, `WitherSkull`

public interface Projectile extends Entity
Represents a shootable entity.

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.bukkit.entity.Entity

`Entity.Spigot`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`doesBounce()`
Deprecated, for removal: This API element is subject to removal in a future version.
Does not do anything
`@Nullable ProjectileSource`
`getShooter()`
Retrieve the shooter of this projectile.
`boolean`
`hasBeenShot()`
Gets whether the projectile has been shot into the world and has sent a projectile shot game event.
`boolean`
`hasLeftShooter()`
Gets whether the projectile has left the hitbox of their shooter and can now hit entities.
`void`
`setBounce(boolean doesBounce)`
Deprecated, for removal: This API element is subject to removal in a future version.
Does not do anything
`void`
`setHasBeenShot(boolean beenShot)`
Sets whether the projectile has been shot into the world and has sent a projectile shot game event in the next tick.
`void`
`setHasLeftShooter(boolean leftShooter)`
Sets whether the projectile has left the hitbox of their shooter and can now hit entities.
`void`
`setShooter(@Nullable ProjectileSource source)`
Set the shooter of this projectile.

### Methods inherited from interface net.kyori.adventure.audience.Audience

`clearTitle, deleteMessage, deleteMessage, filterAudience, forEachAudience, hideBossBar, openBook, openBook, playSound, playSound, playSound, resetTitle, sendActionBar, sendActionBar, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendPlayerListFooter, sendPlayerListFooter, sendPlayerListHeader, sendPlayerListHeader, sendPlayerListHeaderAndFooter, sendPlayerListHeaderAndFooter, sendTitlePart, showBossBar, showTitle, stopSound, stopSound`

### Methods inherited from interface org.bukkit.command.CommandSender

`getName, name, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendMessage, sendPlainMessage, sendRichMessage`

### Methods inherited from interface org.bukkit.entity.Entity

`addPassenger, addScoreboardTag, asHoverEvent, collidesAt, eject, fromMobSpawner, getBoundingBox, getChunk, getEntityId, getEntitySpawnReason, getFacing, getFallDistance, getFireTicks, getFreezeTicks, getHeight, getLastDamageCause, getLocation, getLocation, getMaxFireTicks, getMaxFreezeTicks, getNearbyEntities, getOrigin, getPassenger, getPassengers, getPistonMoveReaction, getPortalCooldown, getPose, getScoreboardTags, getServer, getSpawnCategory, getSwimHighSpeedSplashSound, getSwimSound, getSwimSplashSound, getTicksLived, getTrackedPlayers, getType, getUniqueId, getVehicle, getVelocity, getWidth, getWorld, hasGravity, isCustomNameVisible, isDead, isEmpty, isFreezeTickingLocked, isFrozen, isGlowing, isInBubbleColumn, isInLava, isInPowderedSnow, isInRain, isInsideVehicle, isInvulnerable, isInWater, isInWaterOrBubbleColumn, isInWaterOrRain, isInWaterOrRainOrBubbleColumn, isOnGround, isPersistent, isSilent, isTicking, isUnderWater, isValid, isVisualFire, leaveVehicle, lockFreezeTicks, playEffect, remove, removePassenger, removeScoreboardTag, setCustomNameVisible, setFallDistance, setFireTicks, setFreezeTicks, setGlowing, setGravity, setInvulnerable, setLastDamageCause, setPassenger, setPersistent, setPortalCooldown, setRotation, setSilent, setTicksLived, setVelocity, setVisualFire, spawnAt, spawnAt, spigot, teamDisplayName, teleport, teleport, teleport, teleport, teleport, teleport, teleport, teleport, teleportAsync, teleportAsync, wouldCollideUsing`

### Methods inherited from interface net.kyori.adventure.text.event.HoverEventSource

`asHoverEvent`

### Methods inherited from interface org.bukkit.metadata.Metadatable

`getMetadata, hasMetadata, removeMetadata, setMetadata`

### Methods inherited from interface org.bukkit.Nameable

`customName, customName, getCustomName, setCustomName`

### Methods inherited from interface org.bukkit.permissions.Permissible

`addAttachment, addAttachment, addAttachment, addAttachment, getEffectivePermissions, hasPermission, hasPermission, isPermissionSet, isPermissionSet, permissionValue, permissionValue, recalculatePermissions, removeAttachment`

### Methods inherited from interface org.bukkit.persistence.PersistentDataHolder

`getPersistentDataContainer`

### Methods inherited from interface net.kyori.adventure.pointer.Pointered

`get, getOrDefault, getOrDefaultFrom, pointers`

### Methods inherited from interface org.bukkit.permissions.ServerOperator

`isOp, setOp`

## Method Details

### getShooter

@Nullable @Nullable ProjectileSource getShooter()
Retrieve the shooter of this projectile.

Returns:
  the `ProjectileSource` that shot this projectile

### setShooter

void setShooter(@Nullable @Nullable ProjectileSource source)
Set the shooter of this projectile.

Parameters:
  `source` - the `ProjectileSource` that shot this projectile

### doesBounce

@Deprecated(forRemoval=true) boolean doesBounce()
Deprecated, for removal: This API element is subject to removal in a future version.
Does not do anything
Determine if this projectile should bounce or not when it hits.

If a small fireball does not bounce it will set the target on fire.

Returns:
  true if it should bounce.

### setBounce

@Deprecated(forRemoval=true) void setBounce(boolean doesBounce)
Deprecated, for removal: This API element is subject to removal in a future version.
Does not do anything
Set whether or not this projectile should bounce or not when it hits something.

Parameters:
  `doesBounce` - whether or not it should bounce.

### hasLeftShooter

boolean hasLeftShooter()
Gets whether the projectile has left the hitbox of their shooter and can now hit entities.

Returns:
  has left shooter's hitbox

### setHasLeftShooter

void setHasLeftShooter(boolean leftShooter)
Sets whether the projectile has left the hitbox of their shooter and can now hit entities. This is recalculated each tick if the projectile has a shooter.

Parameters:
  `leftShooter` - has left shooter's hitbox

### hasBeenShot

boolean hasBeenShot()
Gets whether the projectile has been shot into the world and has sent a projectile shot game event.

Returns:
  has been shot into the world

### setHasBeenShot

void setHasBeenShot(boolean beenShot)
Sets whether the projectile has been shot into the world and has sent a projectile shot game event in the next tick. Setting this to false will cause a game event to fire and the value to be set back to true.

Parameters:
  `beenShot` - has been in shot into the world