Commit Graph

26 Commits

Author SHA1 Message Date
Bukkit/Spigot
dd1bee786b [Bleeding] Added a Metadata framework for Entities, Blocks, and Worlds
This metadata implementation has the following features:

- All metadata is lazy. Metadata values are not actually computed until another plugin requests them. Memory and CPU are conserved by not computing and storing unnecessary metadata values.

- All metadata is cached. Once a metadata value is computed its value is cached in the metadata store to prevent further unnecessary computation. An invalidation mechanism is provided to flush the cache and force recompilation of metadata values.

- All metadata is stored in basic data types. Convenience methods in the MetadataValue class allow for the conversion of metadata data types when possible. Restricting metadata to basic data types prevents the accidental linking of large object graphs into metadata. Metadata is persistent across the lifetime of the application and adding large object graphs would damage garbage collector performance.

- Metadata access is thread safe. Care has been taken to protect the internal data structures and access them in a thread safe manner.

- Metadata is exposed for all objects that descend from Entity, Block, and World. All Entity and World metadata is stored at the Server  level and all Block metadata is stored at the World level.

- Metadata is NOT keyed on references to original objects - instead metadata is keyed off of unique fields within those objects. Doing this allows metadata to exist for blocks that are in chunks not currently in memory. Additionally, Player objects are keyed off of player name so that Player metadata remains consistent between logins.

- Metadata convenience methods have been added to all Entities, Players, Blocks, BlockStates, and World allowing direct access to an individual instance's metadata.

- Players and OfflinePlayers share a single metadata store, allowing player metadata to be manipulated regardless of the player's current online status.

By: rmichela <deltahat@gmail.com>
2011-12-08 00:33:33 -05:00
Bukkit/Spigot
6e054ddf7f [Bleeding] Added EntityType to replace CreatureType.
By: Celtic Minstrel <celtic.minstrel.ca@some.place>
2012-02-14 23:52:38 -05:00
Bukkit/Spigot
0c182ec82d Fixed documentation of getNearbyEntities in Entity. Thanks to epuidokas for the PR.
By: Nathan Adams <dinnerbone@dinnerbone.com>
2012-01-15 07:38:14 +00:00
Bukkit/Spigot
39874ebf1a Added entity.playEffect, thanks to main-- in an (unfortunately old) PR.
By: Nathan Adams <dinnerbone@dinnerbone.com>
2012-01-14 17:35:52 +00:00
Bukkit/Spigot
aaab1cba23 Generic cleanup of warnings, whitespace and style.
By: Erik Broes <erikbroes@grum.nl>
2011-12-25 16:02:30 +01:00
Bukkit/Spigot
f3ddaaf09f Added cause to PlayerTeleportEvent
By: Nathan Adams <dinnerbone@dinnerbone.com>
2011-12-04 11:03:32 +00:00
Bukkit/Spigot
ef674c0b83 Added new entity.get/setTicksLived for identifying an entity's age
By: Nathan Adams <dinnerbone@dinnerbone.com>
2011-10-11 02:22:38 +01:00
Bukkit/Spigot
a8e72bdb91 Many javadoc fixes thanks to Celtic Minstrel
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-09-25 02:56:40 +01:00
Bukkit/Spigot
68a6f96ea6 Removed deprecated methods.
getNote() that returns a byte has been replaced by getRawNote().
teleportTo(Location) has been replaced by teleport(location).
teleportTo(Entity) has been replaced by teleport(Entity).
SnowForm event has been replaced by BlockForm event.

By: EvilSeph <evilseph@gmail.com>
2011-07-27 21:09:07 -04:00
Bukkit/Spigot
b91a8f0389 Added UniqueId to entities. Thanks Afforess!
By: EvilSeph <evilseph@unaligned.org>
2011-06-07 04:21:11 -04:00
Bukkit/Spigot
12a93a05ff Added get/setLastDamageCause. Thanks sunkid!
By: EvilSeph <evilseph@unaligned.org>
2011-05-16 00:20:58 -04:00
Bukkit/Spigot
855f4133b6 Whitespace + general cleanup
By: Erik Broes <erikbroes@grum.nl>
2011-05-14 23:22:54 +02:00
Bukkit/Spigot
97fd93727d added some API for entities
By: Tahg <tahgtahv@gmail.com>
2011-04-04 00:44:52 -04:00
Bukkit/Spigot
db2b313ee6 Added getNearbyEntities
By: Stephen <stephen@jazer.com>
2011-03-27 19:43:35 -04:00
Bukkit/Spigot
cd5056a7f6 Entity.isDead returns true if the entity has been marked for removal
By: afforess <afforess@gmail.com>
2011-04-02 01:07:41 -04:00
Bukkit/Spigot
d17f2813d9 Move passenger-handling to Entity
By: Erik Broes <erikbroes@grum.nl>
2011-03-29 23:09:05 +02:00
Bukkit/Spigot
e492d55dc4 Replaced void teleportTo(Location) with boolean teleport(Location).
- The return value indicates if the teleport was successful.
 - void teleportTo(...) should delegate to the new teleport(...).

By: Byron Shelden <byron.shelden@gmail.com>
2011-03-23 00:15:46 -07:00
Bukkit/Spigot
7e9974d53c All previous deprecated methods removed (OH GOD EVERYTHING BROKEN)
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-03-14 15:05:46 +00:00
Bukkit/Spigot
0ebd910f1b Deprecated momentum on player (remove tomorrow), added velocity
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-03-05 18:48:32 +00:00
Bukkit/Spigot
5673661da0 Added entity.get/setMomentum
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-03-04 14:24:09 +00:00
Bukkit/Spigot
858c8bee96 ConsoleCommandSender no longer has a default constructor, use ConsoleCommandSender(server). Added entity.getServer
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-02-23 11:33:03 +00:00
Bukkit/Spigot
d3a7253d68 Added Entity.remove() which marks an entity for removal.
By: sk89q <the.sk89q@gmail.com>
2011-02-18 20:00:18 -08:00
Bukkit/Spigot
09916f398f Added setFireTicks(), getFireTicks() and getMaxFireTicks().
By: Protected <myshelter@gmail.com>
2011-02-14 17:35:43 +00:00
Bukkit/Spigot
474817bf11 General cleanup (deprecated+whitespace)
By: Erik Broes <erikbroes@grum.nl>
2011-02-02 00:02:08 +01:00
Bukkit/Spigot
40364131cb Implementation of the EntityDamage*Events.
A new event EntityDamageByProjectileEvent was created. EntityDamageByProjectileEvent
adds the ability to get the projectile entity (such as an egg) and also set if
the projectile 'bounces'. New interfaces were created to facilitate all kinds
of projectile entities. Changes were made to facilitate the new event, and
enable other events, for plugins and event listeners.

By: Andrew Ardill <andrew.ardill@gmail.com>
2011-01-13 00:15:31 +11:00
Bukkit/Spigot
e2fd2dfd00 All entity stuff in org.bukkit moved to org.bukkit.entity
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-01-15 21:20:59 +00:00