Commit Graph

47 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 445baa7607 Added missing BlockState functions. Addresses BUKKIT-807
By: TomyLobo <stabelweb@gmx.de>
2012-02-22 20:08:55 +01: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 75fd934339 Deprecation cleanup.
By: Erik Broes <erikbroes@grum.nl>
2012-01-30 21:32:48 +01:00
Bukkit/Spigot bacfd8931d [Bleeding] Add BrewingStand API. Thanks N3X15 & md_5
By: Erik Broes <erikbroes@grum.nl>
2012-01-17 17:11:23 +01:00
Bukkit/Spigot 4ad64ea3f5 [Bleeding] Added Block.breakNaturally and Block.getDrops
By: Zeerix <zeerix@draig.de>
2012-01-12 03:08:31 +01:00
Bukkit/Spigot 94bc6ec0e6 [Bleeding] Added Block.getLightFromSky and getLightFromBlocks
By: Mike Primm <mike@primmhome.com>
2011-12-29 13:26:01 -06:00
Bukkit/Spigot 4c80a49933 Generic cleaning
By: Erik Broes <erikbroes@grum.nl>
2012-01-15 14:37:30 +01:00
Bukkit/Spigot 35da0ddfa3 Added 5 new biomes as included in MC 1.1 as part of #BUKKIT-496
By: Nathan Adams <dinnerbone@dinnerbone.com>
2012-01-14 13:13:25 +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 b2c01fec3c Added new biome enum values
By: Nathan Adams <dinnerbone@dinnerbone.com>
2011-11-22 21:21:09 +00:00
Bukkit/Spigot b50b4ca047 Few more style cleanups
By: Nathan Adams <dinnerbone@dinnerbone.com>
2011-10-11 02:16:44 +01:00
Bukkit/Spigot 429eb80d6e Small javadoc cleanup
By: Nathan Adams <dinnerbone@dinnerbone.com>
2011-10-10 21:58:44 +01:00
Bukkit/Spigot cae1a829df Remove Jukebox MaterialData in favour of Jukebox BlockState
By: Celtic Minstrel <celtic.minstrel.ca@some.place>
2011-08-22 01:27:48 -04: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 bffd335a52 Ok, so we need this. *shifty eyes*
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-09-15 01:42:07 +01:00
Bukkit/Spigot 920854a915 Added missing Note getNote().
By: EvilSeph <evilseph@gmail.com>
2011-07-28 01:29:04 -04: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 ed47624667 Deprecated Block.getFace(Face) and Block.getFace(Face,int); use getRelative()
By: Erik Broes <erikbroes@grum.nl>
2011-07-17 15:01:15 +02:00
Bukkit/Spigot 86ab32254f Added Block.getPistonMoveReaction, BlockPistonExtend and BlockPistonRetractEvent
By: Erik Broes <erikbroes@grum.nl>
2011-07-15 23:59:12 +02:00
Bukkit/Spigot 656403dc86 Added additional BlockFace enum members and fixed Sign class.
By: sunkid <sunkid@iminurnetz.com>
2011-07-13 14:14:04 -07:00
Bukkit/Spigot c68daa00bd Added helper methods World.getHighestBlockAt, Block.isEmpty, Block.isLiquid. Added methods to safely retrieve biome/temperature/humidity data for a block without generating the block.
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-07-13 06:52:19 +01:00
Bukkit/Spigot 43c34bae27 Added Sky biome for the Skylands. Thanks robin0van0der0v!
By: EvilSeph <evilseph@unaligned.org>
2011-06-21 15:41:47 -04:00
Bukkit/Spigot f1a6e194ef Added Instrument enum, Note class and get/setNote functions. Thanks xZise!
By: EvilSeph <evilseph@unaligned.org>
2011-06-17 03:00:49 -04:00
Bukkit/Spigot 855f4133b6 Whitespace + general cleanup
By: Erik Broes <erikbroes@grum.nl>
2011-05-14 23:22:54 +02:00
Bukkit/Spigot ab33042e35 Added NoteBlock.play(instrument, note).
By: sk89q <the.sk89q@gmail.com>
2011-05-02 01:19:57 -07:00
Bukkit/Spigot 2556140901 Updated README for line-ending demands, also fixed line-endigs.
By: Erik Broes <erikbroes@grum.nl>
2011-04-25 13:24:32 +02:00
Bukkit/Spigot 26c1772bd8 added the MaterialData subclass Door
By: sunkid <sunkid@iminurnetz.com>
2011-03-25 14:54:58 -07:00
Bukkit/Spigot 1a8031fc8f Reworked BlockDamageEvent to match with the latest Mojang client/server changes.
By: Erik Broes <erikbroes@grum.nl>
2011-03-23 16:53:52 +01:00
Bukkit/Spigot 1ddbee3e40 added methods for getting redstone power
By: Tahg <tahgtahv@gmail.com>
2011-03-10 13:23:54 -05:00
Bukkit/Spigot de5eddce7d Purged deprecated MobType and MobSpawner
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-03-07 16:29:03 +00:00
Bukkit/Spigot 9cadbbc93d You shouldn't be here, little method. We already have a getData.
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-03-04 14:10:55 +00:00
Bukkit/Spigot 3cc14ab40f refactor Items
By: Tahg <tahgtahv@gmail.com>
2011-02-21 19:57:06 -05:00
Bukkit/Spigot ffe5fb2dfb When deprecating, the alternative should be provided.
By: EvilSeph <evilseph@unaligned.org>
2011-02-19 06:00:55 -05:00
Bukkit/Spigot ca55cacd67 Renamed MobType->CreatureType and MobSpawner->CreatureSpawner.
This is to bring the names in line with the rest of bukkit.

Deprecated code has been left in to ensure nothing breaks as
a result of refactoring MobType.
This will be removed after 1 week, to give plugin devs time to
migrate

By: Andrew Ardill <andrew.ardill@gmail.com>
2011-02-17 14:19:57 +11:00
Bukkit/Spigot 474817bf11 General cleanup (deprecated+whitespace)
By: Erik Broes <erikbroes@grum.nl>
2011-02-02 00:02:08 +01:00
Bukkit/Spigot 4de2b0d48e Added NoteBlock.play, Dispenser.dispense
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-02-01 23:21:53 +00:00
Bukkit/Spigot ba1010e494 Added Block.isBlockPowered(), block.isBlockIndirectlyPowered().
By: sk89q <the.sk89q@gmail.com>
2011-01-28 10:24:34 -08:00
Bukkit/Spigot b880bd518f Added full tile entity data support for all block types that use it, including chests, dispensers, furnaces, mob spawners, and note blocks.
By: sk89q <the.sk89q@gmail.com>
2011-01-23 00:37:36 -08:00
Bukkit/Spigot 5fcc3b626c Block instance getLocation() method.
By: Adam Tanner <adam@adamtanner.org>
2011-01-21 19:39:31 +08:00
Bukkit/Spigot a92c284ca1 Added Block.getRelative(BlockFace).
By: sk89q <the.sk89q@gmail.com>
2011-01-15 19:33:39 -08:00
Bukkit/Spigot 73edbc4902 Moved block stuff from org.bukkit to org.bukkit.block
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-01-15 21:37:08 +00:00
Bukkit/Spigot 550e518848 Global ID -> Id rename
By: Erik Broes <erikbroes@grum.nl>
2011-01-15 20:53:43 +01:00
Bukkit/Spigot 4d7b10c59d Added MaterialData from BlockState
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-01-15 00:08:49 +00:00
Bukkit/Spigot 0d4ef412af Added state update()
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-01-07 16:53:29 +00:00
Bukkit/Spigot 9fbfe7e412 Make a start on BlockState stuff
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-01-07 16:17:54 +00:00
Bukkit/Spigot ef59e4c706 Added Sign interface
By: Dinnerbone <dinnerbone@dinnerbone.com>
2011-01-07 14:52:28 +00:00