001 package org.bukkit.entity; 002 003 import org.bukkit.Location; 004 import org.bukkit.EntityEffect; 005 import org.bukkit.Server; 006 import org.bukkit.World; 007 import org.bukkit.event.entity.EntityDamageEvent; 008 import org.bukkit.metadata.Metadatable; 009 import org.bukkit.util.Vector; 010 011 import java.util.List; 012 import java.util.UUID; 013 import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; 014 015 /** 016 * Represents a base entity in the world 017 */ 018 public interface Entity extends Metadatable { 019 020 /** 021 * Gets the entity's current position 022 * 023 * @return a new copy of Location containing the position of this entity 024 */ 025 public Location getLocation(); 026 027 /** 028 * Stores the entity's current position in the provided Location object. 029 * <p> 030 * If the provided Location is null this method does nothing and returns 031 * null. 032 * 033 * @return The Location object provided or null 034 */ 035 public Location getLocation(Location loc); 036 037 /** 038 * Sets this entity's velocity 039 * 040 * @param velocity New velocity to travel with 041 */ 042 public void setVelocity(Vector velocity); 043 044 /** 045 * Gets this entity's current velocity 046 * 047 * @return Current travelling velocity of this entity 048 */ 049 public Vector getVelocity(); 050 051 /** 052 * Returns true if the entity is supported by a block. This value is a 053 * state updated by the server and is not recalculated unless the entity 054 * moves. 055 * 056 * @return True if entity is on ground. 057 */ 058 public boolean isOnGround(); 059 060 /** 061 * Gets the current world this entity resides in 062 * 063 * @return World 064 */ 065 public World getWorld(); 066 067 /** 068 * Teleports this entity to the given location. If this entity is riding a 069 * vehicle, it will be dismounted prior to teleportation. 070 * 071 * @param location New location to teleport this entity to 072 * @return <code>true</code> if the teleport was successful 073 */ 074 public boolean teleport(Location location); 075 076 /** 077 * Teleports this entity to the given location. If this entity is riding a 078 * vehicle, it will be dismounted prior to teleportation. 079 * 080 * @param location New location to teleport this entity to 081 * @param cause The cause of this teleportation 082 * @return <code>true</code> if the teleport was successful 083 */ 084 public boolean teleport(Location location, TeleportCause cause); 085 086 /** 087 * Teleports this entity to the target Entity. If this entity is riding a 088 * vehicle, it will be dismounted prior to teleportation. 089 * 090 * @param destination Entity to teleport this entity to 091 * @return <code>true</code> if the teleport was successful 092 */ 093 public boolean teleport(Entity destination); 094 095 /** 096 * Teleports this entity to the target Entity. If this entity is riding a 097 * vehicle, it will be dismounted prior to teleportation. 098 * 099 * @param destination Entity to teleport this entity to 100 * @param cause The cause of this teleportation 101 * @return <code>true</code> if the teleport was successful 102 */ 103 public boolean teleport(Entity destination, TeleportCause cause); 104 105 /** 106 * Returns a list of entities within a bounding box centered around this 107 * entity 108 * 109 * @param x 1/2 the size of the box along x axis 110 * @param y 1/2 the size of the box along y axis 111 * @param z 1/2 the size of the box along z axis 112 * @return List<Entity> List of entities nearby 113 */ 114 public List<org.bukkit.entity.Entity> getNearbyEntities(double x, double y, double z); 115 116 /** 117 * Returns a unique id for this entity 118 * 119 * @return Entity id 120 */ 121 public int getEntityId(); 122 123 /** 124 * Returns the entity's current fire ticks (ticks before the entity stops 125 * being on fire). 126 * 127 * @return int fireTicks 128 */ 129 public int getFireTicks(); 130 131 /** 132 * Returns the entity's maximum fire ticks. 133 * 134 * @return int maxFireTicks 135 */ 136 public int getMaxFireTicks(); 137 138 /** 139 * Sets the entity's current fire ticks (ticks before the entity stops 140 * being on fire). 141 * 142 * @param ticks Current ticks remaining 143 */ 144 public void setFireTicks(int ticks); 145 146 /** 147 * Mark the entity's removal. 148 */ 149 public void remove(); 150 151 /** 152 * Returns true if this entity has been marked for removal. 153 * 154 * @return True if it is dead. 155 */ 156 public boolean isDead(); 157 158 /** 159 * Returns false if the entity has died or been despawned for some other 160 * reason. 161 * 162 * @return True if valid. 163 */ 164 public boolean isValid(); 165 166 /** 167 * Gets the {@link Server} that contains this Entity 168 * 169 * @return Server instance running this Entity 170 */ 171 public Server getServer(); 172 173 /** 174 * Gets the primary passenger of a vehicle. For vehicles that could have 175 * multiple passengers, this will only return the primary passenger. 176 * 177 * @return an entity 178 */ 179 public abstract Entity getPassenger(); 180 181 /** 182 * Set the passenger of a vehicle. 183 * 184 * @param passenger The new passenger. 185 * @return false if it could not be done for whatever reason 186 */ 187 public abstract boolean setPassenger(Entity passenger); 188 189 /** 190 * Check if a vehicle has passengers. 191 * 192 * @return True if the vehicle has no passengers. 193 */ 194 public abstract boolean isEmpty(); 195 196 /** 197 * Eject any passenger. 198 * 199 * @return True if there was a passenger. 200 */ 201 public abstract boolean eject(); 202 203 /** 204 * Returns the distance this entity has fallen 205 * 206 * @return The distance. 207 */ 208 public float getFallDistance(); 209 210 /** 211 * Sets the fall distance for this entity 212 * 213 * @param distance The new distance. 214 */ 215 public void setFallDistance(float distance); 216 217 /** 218 * Record the last {@link EntityDamageEvent} inflicted on this entity 219 * 220 * @param event a {@link EntityDamageEvent} 221 */ 222 public void setLastDamageCause(EntityDamageEvent event); 223 224 /** 225 * Retrieve the last {@link EntityDamageEvent} inflicted on this entity. 226 * This event may have been cancelled. 227 * 228 * @return the last known {@link EntityDamageEvent} or null if hitherto 229 * unharmed 230 */ 231 public EntityDamageEvent getLastDamageCause(); 232 233 /** 234 * Returns a unique and persistent id for this entity 235 * 236 * @return unique id 237 */ 238 public UUID getUniqueId(); 239 240 /** 241 * Gets the amount of ticks this entity has lived for. 242 * <p> 243 * This is the equivalent to "age" in entities. 244 * 245 * @return Age of entity 246 */ 247 public int getTicksLived(); 248 249 /** 250 * Sets the amount of ticks this entity has lived for. 251 * <p> 252 * This is the equivalent to "age" in entities. May not be less than one 253 * tick. 254 * 255 * @param value Age of entity 256 */ 257 public void setTicksLived(int value); 258 259 /** 260 * Performs the specified {@link EntityEffect} for this entity. 261 * <p> 262 * This will be viewable to all players near the entity. 263 * 264 * @param type Effect to play. 265 */ 266 public void playEffect(EntityEffect type); 267 268 /** 269 * Get the type of the entity. 270 * 271 * @return The entity type. 272 */ 273 public EntityType getType(); 274 275 /** 276 * Returns whether this entity is inside a vehicle. 277 * 278 * @return True if the entity is in a vehicle. 279 */ 280 public boolean isInsideVehicle(); 281 282 /** 283 * Leave the current vehicle. If the entity is currently in a vehicle (and 284 * is removed from it), true will be returned, otherwise false will be 285 * returned. 286 * 287 * @return True if the entity was in a vehicle. 288 */ 289 public boolean leaveVehicle(); 290 291 /** 292 * Get the vehicle that this player is inside. If there is no vehicle, 293 * null will be returned. 294 * 295 * @return The current vehicle. 296 */ 297 public Entity getVehicle(); 298 }