mirror of
https://github.com/KAMKEEL/CustomNPC-Plus-API.git
synced 2026-11-14 19:04:53 +00:00
608 lines
13 KiB
Java
608 lines
13 KiB
Java
package noppes.npcs.api.entity;
|
|
|
|
import net.minecraft.entity.Entity;
|
|
import noppes.npcs.api.INbt;
|
|
import noppes.npcs.api.IParticle;
|
|
import noppes.npcs.api.IPos;
|
|
import noppes.npcs.api.IWorld;
|
|
import noppes.npcs.api.item.IItemStack;
|
|
|
|
/**
|
|
* Represents a generic entity in the world.
|
|
* Provides methods to access or modify the entity's position, motion, temporary and persistent data,
|
|
* and to perform various actions (such as spawning particles, dropping items, or changing dimensions).
|
|
*
|
|
* @param <T> The underlying Minecraft entity type.
|
|
*/
|
|
public interface IEntity<T extends Entity> {
|
|
|
|
/**
|
|
* Spawns the given particle effect associated with this entity.
|
|
*
|
|
* @param entityParticle The particle effect to spawn.
|
|
*/
|
|
void spawnParticle(IParticle entityParticle);
|
|
|
|
/**
|
|
* Returns the unique entity ID.
|
|
*
|
|
* @return the entity ID.
|
|
*/
|
|
int getEntityId();
|
|
|
|
/**
|
|
* Returns the unique UUID string of the entity.
|
|
*
|
|
* @return the unique ID.
|
|
*/
|
|
String getUniqueID();
|
|
|
|
/**
|
|
* Returns the vertical offset for rendering.
|
|
*
|
|
* @return the Y offset.
|
|
*/
|
|
double getYOffset();
|
|
|
|
/**
|
|
* @return The entity's width.
|
|
*/
|
|
double getWidth();
|
|
|
|
/**
|
|
* @return The entity's height.
|
|
*/
|
|
double getHeight();
|
|
|
|
/**
|
|
* @return The entity's x position.
|
|
*/
|
|
double getX();
|
|
|
|
/**
|
|
* Sets the entity's x position.
|
|
*
|
|
* @param x the new x position.
|
|
*/
|
|
void setX(double x);
|
|
|
|
/**
|
|
* @return The entity's y position.
|
|
*/
|
|
double getY();
|
|
|
|
/**
|
|
* Sets the entity's y position.
|
|
*
|
|
* @param y the new y position.
|
|
*/
|
|
void setY(double y);
|
|
|
|
/**
|
|
* @return The entity's z position.
|
|
*/
|
|
double getZ();
|
|
|
|
/**
|
|
* Sets the entity's z position.
|
|
*
|
|
* @param z the new z position.
|
|
*/
|
|
void setZ(double z);
|
|
|
|
/**
|
|
* @return The entity's x motion.
|
|
*/
|
|
double getMotionX();
|
|
|
|
/**
|
|
* Sets the entity's x motion.
|
|
*
|
|
* @param x the new x motion.
|
|
*/
|
|
void setMotionX(double x);
|
|
|
|
/**
|
|
* @return The entity's y motion.
|
|
*/
|
|
double getMotionY();
|
|
|
|
/**
|
|
* Sets the entity's y motion.
|
|
*
|
|
* @param y the new y motion.
|
|
*/
|
|
void setMotionY(double y);
|
|
|
|
/**
|
|
* @return The entity's z motion.
|
|
*/
|
|
double getMotionZ();
|
|
|
|
/**
|
|
* Sets the entity's z motion.
|
|
*
|
|
* @param z the new z motion.
|
|
*/
|
|
void setMotionZ(double z);
|
|
|
|
/**
|
|
* Convenience method to set the entity's motion in all three axes.
|
|
*
|
|
* @param x the x motion.
|
|
* @param y the y motion.
|
|
* @param z the z motion.
|
|
*/
|
|
void setMotion(double x, double y, double z);
|
|
|
|
/**
|
|
* Sets the entity's motion based on the given position.
|
|
*
|
|
* @param pos the position containing motion components.
|
|
*/
|
|
void setMotion(IPos pos);
|
|
|
|
/**
|
|
* Returns the entity's current motion as an IPos object.
|
|
*
|
|
* @return the motion vector.
|
|
*/
|
|
IPos getMotion();
|
|
|
|
/**
|
|
* @return Whether the entity is airborne.
|
|
*/
|
|
boolean isAirborne();
|
|
|
|
/**
|
|
* @return The block (integer) x position.
|
|
*/
|
|
int getBlockX();
|
|
|
|
/**
|
|
* @return The block (integer) y position.
|
|
*/
|
|
int getBlockY();
|
|
|
|
/**
|
|
* @return The block (integer) z position.
|
|
*/
|
|
int getBlockZ();
|
|
|
|
/**
|
|
* Sets the entity's position to the specified coordinates.
|
|
*
|
|
* @param x the x coordinate.
|
|
* @param y the y coordinate.
|
|
* @param z the z coordinate.
|
|
*/
|
|
void setPosition(double x, double y, double z);
|
|
|
|
/**
|
|
* Sets the entity's position using an IPos object.
|
|
*
|
|
* @param pos the position object.
|
|
*/
|
|
void setPosition(IPos pos);
|
|
|
|
/**
|
|
* Returns the entity's current position as an IPos object.
|
|
*
|
|
* @return the position.
|
|
*/
|
|
IPos getPosition();
|
|
|
|
/**
|
|
* @return The dimension ID the entity is in.
|
|
*/
|
|
int getDimension();
|
|
|
|
/**
|
|
* Moves the entity to the specified dimension.
|
|
*
|
|
* @param dimensionId the dimension ID.
|
|
*/
|
|
void setDimension(int dimensionId);
|
|
|
|
/**
|
|
* @return Array of entities that are colliding with this entity
|
|
*/
|
|
IEntity[] getCollidingEntities();
|
|
|
|
/**
|
|
* Returns an array of entities within the specified range.
|
|
*
|
|
* @param range the search range.
|
|
* @return an array of surrounding entities.
|
|
*/
|
|
IEntity[] getSurroundingEntities(int range);
|
|
|
|
/**
|
|
* Returns an array of entities of a specified type within the given range.
|
|
*
|
|
* @param range the search range.
|
|
* @param type the EntityType to find.
|
|
* @return an array of surrounding entities.
|
|
*/
|
|
IEntity[] getSurroundingEntities(int range, int type);
|
|
|
|
/**
|
|
* @return Whether the entity is alive.
|
|
*/
|
|
boolean isAlive();
|
|
|
|
/**
|
|
* Returns temporary data stored under the given key.
|
|
*
|
|
* @param key the key.
|
|
* @return the temporary data.
|
|
*/
|
|
Object getTempData(String key);
|
|
|
|
/**
|
|
* Stores temporary data that is cleared when the entity is unloaded.
|
|
*
|
|
* @param key the key.
|
|
* @param value the value.
|
|
*/
|
|
void setTempData(String key, Object value);
|
|
|
|
/**
|
|
* Checks if temporary data for the given key exists.
|
|
*
|
|
* @param key the key.
|
|
* @return true if it exists; false otherwise.
|
|
*/
|
|
boolean hasTempData(String key);
|
|
|
|
/**
|
|
* Removes the temporary data for the given key.
|
|
*
|
|
* @param key the key.
|
|
*/
|
|
void removeTempData(String key);
|
|
|
|
/**
|
|
* Clears all temporary data.
|
|
*/
|
|
void clearTempData();
|
|
|
|
/**
|
|
* Returns an array of keys for temporary data.
|
|
*
|
|
* @return the keys.
|
|
*/
|
|
String[] getTempDataKeys();
|
|
|
|
/**
|
|
* Returns stored (persistent) data for the given key.
|
|
*
|
|
* @param key the key.
|
|
* @return the stored data.
|
|
*/
|
|
Object getStoredData(String key);
|
|
|
|
/**
|
|
* Stores persistent data under the given key.
|
|
* Only Numbers and Strings are supported.
|
|
*
|
|
* @param key the key.
|
|
* @param value the value.
|
|
*/
|
|
void setStoredData(String key, Object value);
|
|
|
|
/**
|
|
* Checks if stored data for the given key exists.
|
|
*
|
|
* @param key the key.
|
|
* @return true if it exists; false otherwise.
|
|
*/
|
|
boolean hasStoredData(String key);
|
|
|
|
/**
|
|
* Removes the stored data for the given key.
|
|
*
|
|
* @param key the key.
|
|
*/
|
|
void removeStoredData(String key);
|
|
|
|
/**
|
|
* Clears all stored data.
|
|
*/
|
|
void clearStoredData();
|
|
|
|
/**
|
|
* Returns an array of keys for stored data.
|
|
*
|
|
* @return the keys.
|
|
*/
|
|
String[] getStoredDataKeys();
|
|
|
|
/**
|
|
* @return The age of the entity in ticks.
|
|
*/
|
|
long getAge();
|
|
|
|
/**
|
|
* Permanently despawns the entity.
|
|
*/
|
|
void despawn();
|
|
|
|
/**
|
|
* @return Whether the entity is standing in water.
|
|
*/
|
|
boolean inWater();
|
|
|
|
/**
|
|
* @return Whether the entity is standing in lava.
|
|
*/
|
|
boolean inLava();
|
|
|
|
/**
|
|
* @return Whether the entity is standing in fire.
|
|
*/
|
|
boolean inFire();
|
|
|
|
/**
|
|
* @return Whether the entity is on fire.
|
|
*/
|
|
boolean isBurning();
|
|
|
|
/**
|
|
* Sets the entity on fire for the given number of ticks (20 ticks = 1 second).
|
|
*
|
|
* @param ticks the burn duration.
|
|
*/
|
|
void setBurning(int ticks);
|
|
|
|
/**
|
|
* Extinguishes any fire on the entity.
|
|
*/
|
|
void extinguish();
|
|
|
|
/**
|
|
* @return The entity type name as registered in Minecraft.
|
|
*/
|
|
String getTypeName();
|
|
|
|
/**
|
|
* Causes the entity to drop the given item.
|
|
*
|
|
* @param item the item to drop.
|
|
*/
|
|
void dropItem(IItemStack item);
|
|
|
|
/**
|
|
* @return The entity riding this entity.
|
|
*/
|
|
IEntity getRider();
|
|
|
|
/**
|
|
* Sets the given entity as the rider of this entity.
|
|
*
|
|
* @param entity the rider.
|
|
*/
|
|
void setRider(IEntity entity);
|
|
|
|
/**
|
|
* @return The entity this entity is riding.
|
|
*/
|
|
IEntity getMount();
|
|
|
|
/**
|
|
* Sets the entity to be mounted by this entity.
|
|
*
|
|
* @param entity the mount.
|
|
*/
|
|
void setMount(IEntity entity);
|
|
|
|
/**
|
|
* Returns the EntityType as defined in the scripting constants.
|
|
*
|
|
* @return the EntityType.
|
|
*/
|
|
int getType();
|
|
|
|
/**
|
|
* Checks whether the entity is of the specified EntityType.
|
|
*
|
|
* @param type the type to check.
|
|
* @return true if the entity is of that type; false otherwise.
|
|
*/
|
|
boolean typeOf(int type);
|
|
|
|
/**
|
|
* Sets the entity's rotation (yaw) in degrees (0-360).
|
|
*
|
|
* @param rotation the rotation angle.
|
|
*/
|
|
void setRotation(float rotation);
|
|
|
|
/**
|
|
* Sets both the rotation (yaw) and pitch of the entity.
|
|
*
|
|
* @param rotationYaw the yaw angle.
|
|
* @param rotationPitch the pitch angle.
|
|
*/
|
|
void setRotation(float rotationYaw, float rotationPitch);
|
|
|
|
/**
|
|
* @return The current rotation (yaw) of the entity.
|
|
*/
|
|
float getRotation();
|
|
|
|
/**
|
|
* Sets the entity's pitch.
|
|
*
|
|
* @param pitch the pitch angle.
|
|
*/
|
|
void setPitch(float pitch);
|
|
|
|
/**
|
|
* Returns the entity's pitch.
|
|
*
|
|
* @return the pitch angle.
|
|
*/
|
|
float getPitch();
|
|
|
|
/**
|
|
* Applies a knockback effect to the entity.
|
|
*
|
|
* @param power the strength of the knockback.
|
|
* @param direction the direction in degrees (usually based on getRotation()).
|
|
*/
|
|
void knockback(int power, float direction);
|
|
|
|
/**
|
|
* Applies knockback using individual power components.
|
|
*
|
|
* @param xpower the x-axis power.
|
|
* @param ypower the y-axis power.
|
|
* @param zpower the z-axis power.
|
|
* @param direction the direction in degrees.
|
|
*/
|
|
void knockback(double xpower, double ypower, double zpower, float direction);
|
|
|
|
/**
|
|
* Applies knockback using a position vector.
|
|
*
|
|
* @param pos the position vector.
|
|
* @param direction the direction in degrees.
|
|
*/
|
|
void knockback(IPos pos, float direction);
|
|
|
|
/**
|
|
* Sets the entity's immunity time (hurt resistance).
|
|
*
|
|
* @param ticks the number of ticks.
|
|
*/
|
|
void setImmune(int ticks);
|
|
|
|
/**
|
|
* Sets the entity's invisibility.
|
|
*
|
|
* @param invisible true to make invisible.
|
|
*/
|
|
void setInvisible(boolean invisible);
|
|
|
|
/**
|
|
* Sets whether the entity is sneaking.
|
|
*
|
|
* @param sneaking true to enable sneaking.
|
|
*/
|
|
void setSneaking(boolean sneaking);
|
|
|
|
/**
|
|
* Sets whether the entity is sprinting.
|
|
*
|
|
* @param sprinting true to enable sprinting.
|
|
*/
|
|
void setSprinting(boolean sprinting);
|
|
|
|
/**
|
|
* @return Whether the entity has collided with something.
|
|
*/
|
|
boolean hasCollided();
|
|
|
|
/**
|
|
* @return Whether the entity has collided vertically.
|
|
*/
|
|
boolean hasCollidedVertically();
|
|
|
|
/**
|
|
* @return Whether the entity has collided horizontally.
|
|
*/
|
|
boolean hasCollidedHorizontally();
|
|
|
|
/**
|
|
* @return Whether the entity is capturing drops.
|
|
*/
|
|
boolean capturesDrops();
|
|
|
|
/**
|
|
* Sets whether the entity captures drops.
|
|
*
|
|
* @param capture true to capture drops.
|
|
*/
|
|
void setCapturesDrops(boolean capture);
|
|
|
|
/**
|
|
* Sets the captured drops for this entity.
|
|
*
|
|
* @param capturedDrops an array of captured drops.
|
|
*/
|
|
void setCapturedDrops(IEntity<?>[] capturedDrops);
|
|
|
|
/**
|
|
* Returns the captured drops.
|
|
*
|
|
* @return an array of captured drops.
|
|
*/
|
|
IEntity<?>[] getCapturedDrops();
|
|
|
|
/**
|
|
* @return Whether the entity is sneaking.
|
|
* @since 1.7.10c
|
|
*/
|
|
boolean isSneaking();
|
|
|
|
/**
|
|
* @return Whether the entity is sprinting.
|
|
* @since 1.7.10c
|
|
*/
|
|
boolean isSprinting();
|
|
|
|
/**
|
|
* Expert users only.
|
|
*
|
|
* @return The underlying Minecraft entity.
|
|
*/
|
|
T getMCEntity();
|
|
|
|
/**
|
|
* Returns the entity's NBT data.
|
|
*
|
|
* @return the NBT data.
|
|
*/
|
|
INbt getNbt();
|
|
|
|
/**
|
|
* Returns all NBT data for the entity.
|
|
*
|
|
* @return the complete NBT data.
|
|
*/
|
|
INbt getAllNbt();
|
|
|
|
/**
|
|
* Applies the given NBT data to the entity.
|
|
*
|
|
* @param nbt the NBT data.
|
|
*/
|
|
void setNbt(INbt nbt);
|
|
|
|
/**
|
|
* Returns optional NBT data if available.
|
|
*
|
|
* @return the optional NBT data, or null if none.
|
|
*/
|
|
INbt getNbtOptional();
|
|
|
|
/**
|
|
* Stores the entity as a clone with the given tab and name.
|
|
*
|
|
* @param tab the tab index.
|
|
* @param name the name for the clone.
|
|
*/
|
|
void storeAsClone(int tab, String name);
|
|
|
|
/**
|
|
* @return The world this entity exists in.
|
|
*/
|
|
IWorld getWorld();
|
|
|
|
/**
|
|
* Updates the entity's state.
|
|
*/
|
|
void updateEntity();
|
|
}
|