Class EntityData<E extends org.bukkit.entity.Entity>
- All Implemented Interfaces:
SyntaxElement,YggdrasilSerializable,YggdrasilSerializable.YggdrasilExtendedSerializable
- Direct Known Subclasses:
AxolotlData,BeeData,BoatChestData,BoatData,CatData,ChickenData,CowData,CreeperData,DisplayData,DroppedItemData,EndermanData,FallingBlockData,FoxData,FrogData,GoatData,LlamaData,MinecartData,MooshroomData,PandaData,ParrotData,PigData,RabbitData,SalmonData,SheepData,SimpleEntityData,StriderData,ThrownPotionData,TropicalFishData,VillagerData,WolfData,XpOrbData,ZombieVillagerData
-
Nested Class Summary
Nested classes/interfaces inherited from interface ch.njol.yggdrasil.YggdrasilSerializable
YggdrasilSerializable.YggdrasilExtendedSerializable, YggdrasilSerializable.YggdrasilRobustEnum, YggdrasilSerializable.YggdrasilRobustSerializable -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intReferences the corresponding code name in the order they're registered.static final Stringstatic final Adjectivestatic final Messagestatic final Adjectivestatic Serializer<EntityData> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancanSpawn(@Nullable org.bukkit.World world) Checks whether this entity type is allowed to spawn in the givenWorld.create()Creates an entity in the server but does not spawn itcreate(org.bukkit.Location location) Creates an entity at the provided location, but does not spawn it NOTE: IfRegionAccessor.createEntity(Location, Class)does not exist, will returnspawn(Location)protected static <E extends org.bukkit.entity.Entity>
Eprotected <T> booleandataMatch(T from, T to) Checks iffromisnullor is equal toto.voiddeserialize(Fields fields) Deserializes this object.final booleanprotected abstract booleanequals_i(EntityData<?> entityData) Internal helper forequals(Object)to compare the specific data of thisEntityDatawith another.static <E extends org.bukkit.entity.Entity>
EntityData<? super E> Creates anEntityDatathat represents the given entity class.static <E extends org.bukkit.entity.Entity>
EntityData<? super E> fromEntity(E entity) Creates anEntityDatathat represents the given entity instance.protected @Nullable Adjectivestatic <E extends org.bukkit.entity.Entity>
E[]getAll(EntityData<?>[] types, Class<E> type, org.bukkit.Chunk[] chunks) static <E extends org.bukkit.entity.Entity>
E[]getAll(EntityData<?>[] types, Class<E> type, org.bukkit.World @Nullable [] worlds) E[]getAll(org.bukkit.World... worlds) static ch.njol.skript.entity.EntityData.EntityDataInfo<?> getInfo(Class<? extends EntityData<?>> entityDataClass) Retrieves theEntityData.EntityDataInforegistered for the givenentityDataClass.static @Nullable ch.njol.skript.entity.EntityData.EntityDataInfo<?> Retrieves theEntityData.EntityDataInfoassociated with the givencodeName.protected NoungetName()abstract @NotNull EntityData<?> Returns a more general version of thisEntityDatawith specific data removed.@NotNull StringgetType()final inthashCode()protected abstract intInternal method used byhashCode()to include subclass-specific fields in the hash calculation for thisEntityData.final booleaninit(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) Performs initial setup for thisEntityDatabefore passing control to the more specificinit(Expression[], int, Kleenean, ParseResult).protected abstract booleaninit(Literal<?>[] exprs, int matchedCodeName, int matchedPattern, SkriptParser.ParseResult parseResult) Initializes thisEntityData.protected abstract booleanInitializes thisEntityDatafrom either an entity class or a specificEntity.isBaby()final booleanisInstance(@Nullable org.bukkit.entity.Entity entity) isPlural()abstract booleanisSupertypeOf(EntityData<?> entityData) Determines whether thisEntityDatais a supertype of the givenentityData.protected booleankleeneanMatch(Kleenean from, boolean to) protected booleankleeneanMatch(Kleenean from, Kleenean to) protected abstract booleanDetermines whether the givenEntitymatches thisEntityDatadata.static voidstatic @Nullable EntityData<?> Prints errors.static @Nullable EntityData<?> parseWithoutIndefiniteArticle(String string) Prints errors.static <E extends org.bukkit.entity.Entity,T extends EntityData<E>>
voidregister(Class<T> dataClass, String name, Class<E> entityClass, int defaultName, String... codeNames) static <E extends org.bukkit.entity.Entity,T extends EntityData<E>>
voidSerialises this object.abstract voidApplies thisEntityDatato a newly spawnedEntity.final Espawn(org.bukkit.Location location) Spawn this entity data at a location.protected static <E extends org.bukkit.entity.Entity>
ESpawn this entity data at a location.final StringtoString()toString(int flags) static Stringstatic Stringstatic StringtoString(org.bukkit.entity.Entity entity) static StringtoString(org.bukkit.entity.Entity entity, int flags) Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface ch.njol.skript.lang.SyntaxElement
getParser, preInit
-
Field Details
-
LANGUAGE_NODE
- See Also:
-
m_age_pattern
-
m_baby
-
m_adult
-
serializer
-
codeNameIndex
protected int codeNameIndexReferences the corresponding code name in the order they're registered.
-
-
Constructor Details
-
EntityData
public EntityData()
-
-
Method Details
-
onRegistrationStop
public static void onRegistrationStop() -
register
public static <E extends org.bukkit.entity.Entity,T extends EntityData<E>> void register(Class<T> dataClass, String name, Class<E> entityClass, String codeName) throws IllegalArgumentException - Throws:
IllegalArgumentException
-
register
public static <E extends org.bukkit.entity.Entity,T extends EntityData<E>> void register(Class<T> dataClass, String name, Class<E> entityClass, int defaultName, String... codeNames) throws IllegalArgumentException - Throws:
IllegalArgumentException
-
init
public final boolean init(Expression<?>[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) Performs initial setup for thisEntityDatabefore passing control to the more specificinit(Expression[], int, Kleenean, ParseResult).This method handles common behaviors such as tracking plurality (e.g. "a pig" vs "all pigs") and entity age (e.g. "baby zombie") based on the
Called just after the constructor andSkriptParser.ParseResult's marker value.SyntaxElement.preInit().- Specified by:
initin interfaceSyntaxElement- Parameters:
exprs- all %expr%s included in the matching pattern in the order they appear in the pattern. If an optional value was left out, it will still be included in this list holding the default value of the desired type, which usually depends on the event.matchedPattern- The index of the pattern which matchedisDelayed- Whether this expression is used after a delay or not (i.e. if the event has already passed when this expression will be called)parseResult- Additional information about the match.- Returns:
- Whether this expression was initialised successfully. An error should be printed prior to returning false to specify the cause.
- See Also:
-
init
protected abstract boolean init(Literal<?>[] exprs, int matchedCodeName, int matchedPattern, SkriptParser.ParseResult parseResult) Initializes thisEntityData.As of Skript 2.13, code names can have multiple patterns registered in the default.lang file.
matchedCodeNamewill be the index of the code name the matched pattern is linked to. (e.g.PigData"unsaddled pig' = 0, "pig" = 1, "saddled pig" = 2)matchedPatternwill be the index of the pattern used from the patterns of the code name in the lang file.- Parameters:
exprs- An array ofLiteralexpressions from the matched pattern, in the order they appear. If an optional value was omitted by the user, it will still be present in the array with a value ofnull.matchedCodeName- The index of the code name which matched.matchedPattern- The index of the pattern of the code name which matched.parseResult- Additional information from the parser.- Returns:
trueif initialization was successful, otherwisefalse.
-
init
protected abstract boolean init(@Nullable @Nullable Class<? extends E> entityClass, @Nullable E entity) Initializes thisEntityDatafrom either an entity class or a specificEntity.Example usage:
spawn a pig at location(0, 0, 0): set {_entity} to event-entity spawn {_entity} at location(0, 0, 0)- Parameters:
entityClass- An entity's class, e.g. Playerentity- An actual entity, or null to get an entity data for an entity class- Returns:
trueif initialization was successful, otherwisefalse.
-
set
Applies thisEntityDatato a newly spawnedEntity.This is used during entity spawning to set additional data, such as a saddled pig.
- Parameters:
entity- The spawned entity.
-
match
Determines whether the givenEntitymatches thisEntityDatadata.For example:
spawn a pig at location(0, 0, 0): set {_entity} to event-entity if {_entity} is a pig: # will pass if {_entity} is a saddled pig: # will not pass- Parameters:
entity- TheEntityto match.- Returns:
trueif the entity matches, otherwisefalse.
-
getType
- Returns:
- The entity's
Class, such asPig.class.
-
getSuperType
Returns a more general version of thisEntityDatawith specific data removed.For example, calling this on
"a saddled pig"should return"a pig". This is typically used to obtain the base entity type without any modifiers or traits.- Returns:
- A generalized
EntityDatarepresenting the base entity type.
-
toString
-
getName
-
getAgeAdjective
-
toString
-
isPlural
- Returns:
Kleeneandetermining whether thisEntityDatais representing plurality.
-
isBaby
- Returns:
Kleeneandetermining whether thisEntityDatais representing baby type.
-
hashCode_i
protected abstract int hashCode_i()Internal method used byhashCode()to include subclass-specific fields in the hash calculation for thisEntityData.- Returns:
- A hash code representing subclass-specific data.
-
hashCode
public final int hashCode() -
equals_i
Internal helper forequals(Object)to compare the specific data of thisEntityDatawith another.- Parameters:
entityData- TheEntityDatato compare with.- Returns:
trueif the data is considered equal, otherwisefalse.
-
equals
-
getInfo
public static ch.njol.skript.entity.EntityData.EntityDataInfo<?> getInfo(Class<? extends EntityData<?>> entityDataClass) Retrieves theEntityData.EntityDataInforegistered for the givenentityDataClass.- Parameters:
entityDataClass- TheEntityDataclass to look up.- Returns:
- The corresponding
EntityData.EntityDataInfoinstance. - Throws:
SkriptAPIException- if the class has not been registered.
-
getInfo
@Nullable public static @Nullable ch.njol.skript.entity.EntityData.EntityDataInfo<?> getInfo(String codeName) Retrieves theEntityData.EntityDataInfoassociated with the givencodeName.- Parameters:
codeName- The code name used to register the entity data.- Returns:
- The corresponding
EntityData.EntityDataInfo, ornullif not found.
-
parse
Prints errors.- Parameters:
string- String with optional indefinite article at the beginning- Returns:
- The parsed entity data
-
parseWithoutIndefiniteArticle
Prints errors.- Parameters:
string-- Returns:
- The parsed entity data
-
canSpawn
public boolean canSpawn(@Nullable @Nullable org.bukkit.World world) Checks whether this entity type is allowed to spawn in the givenWorld.Some entity types may be restricted from spawning due to experimental datapacks.
- Parameters:
world- The world to check spawning permissions in.- Returns:
trueif the entity can be spawned in the given world, or in general if world isnull; otherwisefalse.
-
spawn
Spawn this entity data at a location.- Parameters:
location- TheLocationto spawn the entity at.- Returns:
- The Entity object that is spawned.
-
spawn
Spawn this entity data at a location. The consumer allows for modification to the entity before it actually gets spawned.- Parameters:
location- TheLocationto spawn the entity at.consumer- AConsumerto apply the entity changes to.- Returns:
- The Entity object that is spawned.
-
getAll
-
getAll
public static <E extends org.bukkit.entity.Entity> E[] getAll(EntityData<?>[] types, Class<E> type, org.bukkit.World @Nullable [] worlds) - Parameters:
types-type-worlds- worlds or null for all- Returns:
- All entities of this type in the given worlds
-
getAll
public static <E extends org.bukkit.entity.Entity> E[] getAll(EntityData<?>[] types, Class<E> type, org.bukkit.Chunk[] chunks) -
fromClass
public static <E extends org.bukkit.entity.Entity> EntityData<? super E> fromClass(Class<E> entityClass) Creates anEntityDatathat represents the given entity class.- Parameters:
entityClass- The class of the entity (e.g.Pig.class).- Returns:
- An
EntityDatarepresenting the provided class.
-
fromEntity
Creates anEntityDatathat represents the given entity instance.- Parameters:
entity- The entity to represent.- Returns:
- An
EntityDatarepresenting the provided entity.
-
toString
-
toString
-
toString
-
toString
-
isInstance
public final boolean isInstance(@Nullable @Nullable org.bukkit.entity.Entity entity) -
isSupertypeOf
Determines whether thisEntityDatais a supertype of the givenentityData.This is used to check whether the current entity data represents a broader category than another. For example:
if a zombie is a monster: # passes: "monster" is a supertype of "zombie" if a monster is a zombie: # fails: "zombie" is not a supertype of "monster"- Parameters:
entityData- TheEntityDatato compare against.- Returns:
trueif this is a supertype of the given entity data, otherwisefalse.
-
serialize
Description copied from interface:YggdrasilSerializable.YggdrasilExtendedSerializableSerialises this object. Only fields contained in the returned Fields object will be written to stream.You can use return new
Fields(this); to emulate the default behaviour.- Specified by:
serializein interfaceYggdrasilSerializable.YggdrasilExtendedSerializable- Returns:
- A Fields object containing all fields that should be written to stream
- Throws:
NotSerializableException- If this object or one of its fields is not serializable
-
deserialize
Description copied from interface:YggdrasilSerializable.YggdrasilExtendedSerializableDeserializes this object. No fields have been set when this method is called, use fields.setFields(this, yggdrasil) to set all compatible non-transient and non-static fields (and call incompatible/missing field handlers if applicable – this implies that errors will be thrown if the fields object is invalid).You can use fields.
setFields(this); to emulate the default behaviour.- Specified by:
deserializein interfaceYggdrasilSerializable.YggdrasilExtendedSerializable- Parameters:
fields- A Fields object containing all fields read from stream- Throws:
StreamCorruptedException- If the Fields object is invalid, i.e. was not written byYggdrasilSerializable.YggdrasilExtendedSerializable.serialize()or Yggdrasil's default serialisation.NotSerializableException
-
getSyntaxTypeName
- Specified by:
getSyntaxTypeNamein interfaceSyntaxElement- Returns:
- A string naming the type of syntax this is. e.g. "expression", "section".
-
spawn
-
create
Creates an entity in the server but does not spawn it- Returns:
- The created entity
-
create
Creates an entity at the provided location, but does not spawn it NOTE: IfRegionAccessor.createEntity(Location, Class)does not exist, will returnspawn(Location)- Parameters:
location- TheLocationto create the entity at- Returns:
- The created entity
-
create
@Nullable protected static <E extends org.bukkit.entity.Entity> E create(org.bukkit.Location location, Class<E> type) -
kleeneanMatch
- Parameters:
from- TheKleeneanto compare to.to- Theto compare against.invalid reference
boolean- Returns:
trueiffromisKleenean.UNKNOWNor is equal toto, otherwisefalse.
-
kleeneanMatch
- Parameters:
from- TheKleeneanto compare to.to- TheKleeneanto compare against.- Returns:
trueiffromisKleenean.UNKNOWNor is equal toto, otherwisefalse.
-
dataMatch
protected <T> boolean dataMatch(@Nullable T from, T to) Checks iffromisnullor is equal toto.- Parameters:
from- The object to compare to.to- The object to compare against.- Returns:
trueiffromisnullor is equal toto, otherwisefalse.
-