Package net.citizensnpcs.api.npc
Interface NPC
- All Known Implementing Classes:
AbstractNPC
,CitizensNPC
Represents an NPC with optional
Trait
s.-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionvoid
addRunnable
(Runnable runnable) Adds aRunnable
that will run every tick.void
Adds a trait to this NPC.void
Adds a trait to this NPC.clone()
copy()
data()
boolean
despawn()
Despawns this NPC.boolean
despawn
(DespawnReason reason) Despawns this NPC.void
destroy()
Permanently removes this NPC and all data about it from the registry it's attached to.void
destroy
(CommandSender source) Permanently removes this NPC and all data about it from the registry it's attached to.void
faceLocation
(Location location) Faces a givenLocation
if the NPC is spawned.getBlockBreaker
(Block targetBlock, BlockBreaker.BlockBreakerConfiguration config) Gets the defaultGoalController
of this NPC.Gets the defaultSpeechController
of this NPC.Gets the Bukkit entity associated with this NPC.Gets the full name of this NPC.int
getId()
Gets the unique ID of this NPC.getName()
Gets the name of this NPC with color codes stripped.<T extends Trait>
TgetOrAddTrait
(Class<T> trait) Gets a trait from the given class.If the NPC is not spawned, then this method will return the last known location, or null if it has never been spawned.<T extends Trait>
TDeprecated.for intransparent naming.<T extends Trait>
TgetTraitNullable
(Class<T> trait) Gets a trait from the given class.Returns the currently attachedTrait
sGets the unique id of this NPC.boolean
Checks if this NPC has the given trait.boolean
Returns whether this NPC is flyable or not.boolean
Gets whether this NPC is protected from damage, movement and other events that players and mobs use to change the entity state of the NPC.boolean
Gets whether this NPC is pushable by fluids.boolean
Gets whether this NPC is currently spawned.boolean
isUpdating
(NPC.NPCUpdate update) void
void
removeTrait
(Class<? extends Trait> trait) Removes a trait from this NPC.boolean
void
void
scheduleUpdate
(NPC.NPCUpdate update) void
setAlwaysUseNameHologram
(boolean use) Sets whether to always use a name hologram instead of the in-built Minecraft name.void
Sets theEntityType
of this NPC.void
setFlyable
(boolean flyable) Sets whether this NPC is flyable or not.void
setItemProvider
(Supplier<ItemStack> supplier) void
setMoveDestination
(Location destination) Set the target movement destination location to walk towards using Minecraft movement.void
Sets the name of this NPC.void
setProtected
(boolean isProtected) A helper method for using#DEFAULT_PROTECTED_METADATA
to set the NPC as protected or not protected from damage/entity target events.void
setUseMinecraftAI
(boolean use) Set the NPC to use Minecraft AI where possible.boolean
Attempts to spawn this NPC.boolean
spawn
(Location location, SpawnReason reason) Attempts to spawn this NPC.void
teleport
(Location location, PlayerTeleportEvent.TeleportCause cause) An alternative tonpc.getEntity().getLocation()
that teleports passengers as well.void
boolean
Whether the NPC is currently set to use Minecraft AI.
-
Method Details
-
addRunnable
Adds aRunnable
that will run every tick. Note that removal is not yet supported.- Parameters:
runnable
- Runnable to be added
-
addTrait
Adds a trait to this NPC. This will use theTraitFactory
defined for this NPC to construct and attach a trait usingaddTrait(Trait)
.- Parameters:
trait
- The class of the trait to add
-
addTrait
Adds a trait to this NPC.- Parameters:
trait
- Trait to add
-
clone
NPC clone()- Returns:
- A clone of the NPC. May not be an exact copy depending on the
Trait
s installed.
-
copy
NPC copy()- Returns:
- A clone of the NPC. May not be an exact copy depending on the
Trait
s installed.
-
data
MetadataStore data()- Returns:
- The metadata store of this NPC.
-
despawn
boolean despawn()Despawns this NPC. This is equivalent to callingdespawn(DespawnReason)
withDespawnReason.PLUGIN
.- Returns:
- Whether this NPC was able to despawn
-
despawn
Despawns this NPC.- Parameters:
reason
- The reason for despawning, for use inNPCDespawnEvent
- Returns:
- Whether this NPC was able to despawn
-
destroy
void destroy()Permanently removes this NPC and all data about it from the registry it's attached to. -
destroy
Permanently removes this NPC and all data about it from the registry it's attached to.- Parameters:
source
- The source of the removal
-
faceLocation
Faces a givenLocation
if the NPC is spawned. -
getBlockBreaker
-
getDefaultGoalController
GoalController getDefaultGoalController()Gets the defaultGoalController
of this NPC.- Returns:
- Default goal controller
-
getDefaultSpeechController
SpeechController getDefaultSpeechController()Gets the defaultSpeechController
of this NPC.- Returns:
- Default speech controller
-
getEntity
Entity getEntity()Gets the Bukkit entity associated with this NPC. This may benull
ifisSpawned()
is false.- Returns:
- Entity associated with this NPC
-
getFullName
String getFullName()Gets the full name of this NPC.- Returns:
- Full name of this NPC
-
getId
int getId()Gets the unique ID of this NPC. This is not guaranteed to be globally unique across server sessions.- Returns:
- ID of this NPC
-
getItemProvider
- See Also:
-
getName
String getName()Gets the name of this NPC with color codes stripped.- Returns:
- Stripped name of this NPC
-
getOrAddTrait
Gets a trait from the given class. If the NPC does not currently have the trait then it will be created and attached usingaddTrait(Class)
.- Parameters:
trait
- Trait to get- Returns:
- Trait with the given name
-
getOwningRegistry
NPCRegistry getOwningRegistry()- Returns:
- The
NPCRegistry
that created this NPC.
-
getRawName
String getRawName() -
getStoredLocation
Location getStoredLocation()If the NPC is not spawned, then this method will return the last known location, or null if it has never been spawned. Otherwise, it is equivalent to callingnpc.getBukkitEntity().getLocation()
.- Returns:
- The stored location, or
null
if none was found.
-
getTrait
Deprecated.for intransparent naming. UsegetOrAddTrait(Class)
for the same behavior.Gets a trait from the given class. If the NPC does not currently have the trait then it will be created and attached usingaddTrait(Class)
.- Parameters:
trait
- Trait to get- Returns:
- Trait with the given name
-
getTraitNullable
Gets a trait from the given class. If the NPC does not currently have the trait,null
will be returned.- Parameters:
trait
- Trait to get- Returns:
- Trait with the given name
-
getTraits
Returns the currently attachedTrait
s- Returns:
- An Iterable of the current traits
-
getUniqueId
UUID getUniqueId()Gets the unique id of this NPC. This is guaranteed to be unique for all NPCs.- Returns:
- The unique id
-
hasTrait
Checks if this NPC has the given trait.- Parameters:
trait
- Trait to check- Returns:
- Whether this NPC has the given trait
-
isFlyable
boolean isFlyable()Returns whether this NPC is flyable or not.- Returns:
- Whether this NPC is flyable
-
isProtected
boolean isProtected()Gets whether this NPC is protected from damage, movement and other events that players and mobs use to change the entity state of the NPC.- Returns:
- Whether this NPC is protected
-
isPushableByFluids
boolean isPushableByFluids()Gets whether this NPC is pushable by fluids.- Returns:
- Whether this NPC is pushable by fluids
-
isSpawned
boolean isSpawned()Gets whether this NPC is currently spawned.- Returns:
- Whether this NPC is spawned
-
isUpdating
-
load
Loads theNPC
from the givenDataKey
. This reloads all traits, respawns the NPC and sets it up for execution. Should not be called often.- Parameters:
key
- The root data key
-
removeTrait
Removes a trait from this NPC.- Parameters:
trait
- Trait to remove
-
requiresNameHologram
boolean requiresNameHologram() -
save
Saves theNPC
to the givenDataKey
. This includes all metadata, traits, and spawn information that will allow it to respawn at a later time viaload(DataKey)
.- Parameters:
key
- The root data key
-
scheduleUpdate
-
setAlwaysUseNameHologram
void setAlwaysUseNameHologram(boolean use) Sets whether to always use a name hologram instead of the in-built Minecraft name.- Parameters:
use
- Whether to use a hologram
-
setBukkitEntityType
Sets theEntityType
of this NPC. Currently only accepts living entity types, with scope for additional types in the future. The NPC will respawned if currently spawned, or will remain despawned otherwise.- Parameters:
type
- The new mob type- Throws:
IllegalArgumentException
- If the type is not a living entity type
-
setFlyable
void setFlyable(boolean flyable) Sets whether this NPC is flyable or not. Note that this is intended for normally ground-based entities only - it will generally have no effect on mob types that were originally flyable.- Parameters:
flyable
-
-
setItemProvider
- Parameters:
supplier
- The supplier
-
setMoveDestination
Set the target movement destination location to walk towards using Minecraft movement. Should be set every tick.- Parameters:
destination
- The destinationLocation
-
setName
Sets the name of this NPC.- Parameters:
name
- Name to give this NPC
-
setProtected
void setProtected(boolean isProtected) A helper method for using#DEFAULT_PROTECTED_METADATA
to set the NPC as protected or not protected from damage/entity target events. Equivalent tonpc.data().set(NPC.DEFAULT_PROTECTED_METADATA, isProtected);
- Parameters:
isProtected
- Whether the NPC should be protected
-
setUseMinecraftAI
void setUseMinecraftAI(boolean use) Set the NPC to use Minecraft AI where possible. Note that the NPC may not always behave exactly like a Minecraft mob would because of additional Citizens APIs. -
spawn
Attempts to spawn this NPC.- Parameters:
location
- Location to spawn this NPC- Returns:
- Whether this NPC was able to spawn at the location
-
spawn
Attempts to spawn this NPC.- Parameters:
location
- Location to spawn this NPCreason
- Reason for spawning- Returns:
- Whether this NPC was able to spawn at the location
-
teleport
An alternative tonpc.getEntity().getLocation()
that teleports passengers as well.- Parameters:
location
- The destination locationcause
- The cause for teleporting
-
updateCustomName
void updateCustomName() -
useMinecraftAI
boolean useMinecraftAI()Whether the NPC is currently set to use Minecraft AI. Defaults to false.
-