summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit
Commit message (Collapse)AuthorAgeLines
* ItemStack.asBukkitStack(null) should return Air. Fixes BUKKIT-3170feildmaster2012-12-15-4/+5
|
* Fix EntityEquipment positions being reversed. Fixes BUKKIT-3157deathmarine2012-12-12-6/+6
|
* Load chunks asynchronously for players.Travis Watkins2012-12-12-0/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a player triggers a chunk load via walking around or teleporting there is no need to stop everything and get this chunk on the main thread. The client is used to having to wait some time for this chunk and the server doesn't immediately do anything with it except send it to the player. At the same time chunk loading is the last major source of file IO that still runs on the main thread. These two facts make it possible to offload chunks loaded for this reason to another thread. However, not all parts of chunk loading can happen off the main thread. For this we use the new AsynchronousExecutor system to split chunk loading in to three pieces. The first is loading data from disk, decompressing it, and parsing it in to an NBT structure. The second piece is creating entities and tile entities in the chunk and adding them to the world, this is still done on the main thread. The third piece is informing everyone who requested a chunk load that the load is finished. For this we register callbacks and then run them on the main thread once the previous two stages are finished. There are still cases where a chunk is needed immediately and these will still trigger chunk loading entirely on the main thread. The most obvious case is plugins using the API to request a chunk load. We also must load the chunk immediately when something in the world tries to access it. In these cases we ignore any possibly pending or in progress chunk loading that is happening asynchronously as we will have the chunk loaded by the time they are finished. The hope is that overall this system will result in less CPU time and pauses due to blocking file IO on the main thread thus giving more consistent performance. Testing so far has shown that this also speeds up chunk loading client side although some of this is likely to be because we are sending less chunks at once for the client to process. Thanks for @ammaraskar for help with the implementation of this feature.
* Add utility class AsynchronousExecutorWesley Wolfe2012-12-12-0/+294
| | | | | | This class is a general purpose task execution system, that uses stages to separate processing blocks for asynchronous and synchronous executions.
* Missed a renamefeildmaster2012-12-10-1/+1
|
* Add EntityEquipment API. Adds BUKKIT-3103feildmaster2012-12-10-1/+209
| | | | | | | | Adds: - Getting/Setting equipment - getting/setting drop rates - getting/setting ability to pick up items -- As an added feature, players with this flag start off with a canceled PlayerPickupItemEvent
* [Bleeding] Correct getEyeHeight value. Fixes BUKKIT-3130h31ix2012-12-10-1/+1
|
* Only display help aliases when there are aliases. Fixes BUKKIT-1621feildmaster2012-12-10-3/+6
|
* Pass null help values values as empty strings to HelpTopicsfeildmaster2012-12-10-10/+10
| | | | Fixes BUKKIT-2618 and BUKKIT-2561
* [Bleeding] Fix NPE with a null bedSpawnLocation. Fixes BUKKIT-1500EdGruberman2012-12-10-2/+6
|
* [Bleeding] Fix NPE in getBedSpawnLocation. Fixes BUKKIT-1949EdGruberman2012-12-08-0/+2
|
* Correctly shoot arrows with the spawnArrow Method. Fixes BUKKIT-3116Dark Arc2012-12-08-2/+5
|
* Provide a faster way to get a location. Adds BUKKIT-3120Travis Watkins2012-12-07-0/+39
| | | | | | | | | | | | | | | | Currently when a plugin wants to get the location of something it calls getLocation() which returns a new Location object. In some scenarios this can cause enough object creation/destruction churn to be a significant overhead. For this cases we add a method that updates a provided Location object so there is no object creation done. This allows well written code to work on several locations with only a single Location object getting created. Providing a more efficient way to set a location was also looked at but the current solution is the fastest we can provide. You are not required to create a new Location object every time you want to set something's location so, with proper design, you can set locations with only a single Location object being created.
* Use shooter constructor for Fireballs. Fixes BUKKIT-3121feildmaster2012-12-07-8/+6
| | | | Fixes fireballs exploding in the shooter's face and not having a shooter for the projectile. (Two birds with one stone!)
* Add the ability to launch WitherSkulls. Fixes BUKKIT-3106feildmaster2012-12-07-3/+6
|
* Implement API for wolves collar color. Adds BUKKIT-3109feildmaster2012-12-05-0/+9
|
* Add a custom shutdown message set in bukkit.yml. Addresses BUKKIT-3031feildmaster2012-12-05-0/+4
|
* Allow placing blocks in spawn if ops.txt is empty. Fixes BUKKIT-3004Travis Watkins2012-12-05-0/+1
|
* Fire EntityFormBlockEvent for FallingBlocks. Adds BUKKIT-3078Wesley Wolfe2012-12-04-1/+1
|
* Implement API for mob despawn when away from players. Adds BUKKIT-2986Travis Watkins2012-12-04-0/+8
| | | | | | | | As of 1.4 mobs have a flag to determine if they despawn when away from a player or not. Unfortunately animals still use their own system to prevent despawning instead of making use of this flag. This change modifies them to use the new system (defaults to true) and to add API for plugins to adjust this.
* [BREAKING] Update BlockFace directions. Fixes BUKKIT-1567, BUKKIT-3069feildmaster2012-12-01-26/+26
| | | | The answer is 42
* Add data values to EntityChangeBlockEvent. Adds BUKKIT-3077, BUKKIT-3076Wesley Wolfe2012-11-30-11/+13
| | | | This change affects Endermen and Silverfish, adding a data value for the block change event.
* Fix teleporting entities with vehicles/passengers teleporting you illegally. ↵feildmaster2012-11-20-2/+11
| | | | | | Fixes BUKKIT-2821 Also some formatting...
* No teleporting people back into the server. Fixes BUKKIT-2298Wesley Wolfe2012-11-19-3/+2
| | | | | | Stale player references will add a player back into the world when teleporting them, causing a cascade of issues relating to ghost entities and servers failing to stop.
* Don't do case lookups when we have the right case already.Travis Watkins2012-11-18-1/+1
| | | | | | | | This is a missed part of the original "[Bleeding] Use case from player data for OfflinePlayer. Fixes BUKKIT-519" commit. It avoids doing (somewhat expensive) lookups of player data to find the correct capitalization inside getOfflinePlayers() as we're already loading their name from the player data and thus have the correct capitalization.
* Implement sound changes for Minecraft 1.4.2 changes. Fixes BUKKIT-2849Karl Fritsche2012-11-17-26/+67
|
* [Bleeding] Use case from player data for OfflinePlayer. Fixes BUKKIT-519EdGruberman2012-11-17-0/+15
| | | | | | | | | | | | If a plugin looks up a player that is offline they may not know the correct capitalization for the name. In this case they're likely to get it wrong and since we cache the result even after the player joins the server all future request for an OfflinePlayer will return one with incorrect case. When looking up a player who has played on the server before we can get the correct case from the player data file saved by the server. If the player has never played before this point we cannot do anything and will still have the same issue but this is not a solvable problem.
* Don't show a player on map if they're vanished. Fixes BUKKIT-1882Travis Watkins2012-11-17-2/+10
|
* Implement API for Skeleton and Zombie types. Fixes BUKKIT-2818James Clarke2012-11-17-0/+26
|
* Fire BlockSpreadEvent for vine growth. Fixes BUKKIT-1097Travis Watkins2012-11-17-0/+13
|
* Rework skull dropping. Fixes BUKKIT-2930 and BUKKIT-2820Travis Watkins2012-11-14-9/+1
| | | | | | | | | Skulls need their tile entity in order to create an item correctly when broken unlike every other block. Instead of sprinkling special cases all over the code just override dropNaturally for skulls to read from their tile entity and make sure everything that wants to drop them calls this method before removing the block. There is only one case where this wasn't already true so we end up with much less special casing.
* Fixed some async tasks running synchronously. Fixes BUKKIT-2934Wesley Wolfe2012-11-14-39/+37
| | | | Additionally refactored cancel method to be more object-oriented.
* Update CraftBukkit to Minecraft 1.4.4.Travis Watkins2012-11-13-189/+22
|
* [Bleeding] Fix mistranslation affecting time of the server vs time of day.md_52012-11-02-2/+2
| | | | Fixes BUKKIT-2797
* Fix compile issue with chunk generation.Travis Watkins2012-11-02-0/+2
|
* Delegate recreateStructures to nms provider. Fixes BUKKIT-2760feildmaster2012-11-01-1/+6
| | | | This was a miss when updating to 1.4.2
* Add CraftArt mappings for Wither. Fixes BUKKIT-2667.Wesley Wolfe2012-11-01-7/+7
| | | | | | | | | | | | The static assertions are not normally evaluated in the JVM, and failed to fail when the enums went from size 25 to size 26. This meant missing values would not be detected at runtime and instead return null, compounding problems later. The switches should never evaluate to null so will instead throw runtime assertion errors. Additional unit tests were added to detect new paintings and assure they have proper, unique mappings. The test checks both that a mapping exists, is not null, and does not duplicate another mapping.
* Change ItemFrame to actually provide a defensive copy. Fixes BUKKIT-2784Wesley Wolfe2012-11-01-1/+14
| | | | | | | If a defensive copy is not used in the API, changes to the item are reflected in memory, but never updated to the client. It also goes against the general contract provided in Bukkit, where setItem should be the only way to change the underlying item frame.
* Add inventory and slot types for new containers. Fixes BUKKIT-2741Travis Watkins2012-10-31-0/+22
|
* Implement API for ambient mob spawn limit. Add spawn-limit.ambient toTravis Watkins2012-10-31-0/+21
| | | | bukkit.yml. Adds BUKKIT-2765
* Use BlockCommandSender for dispatching Command block commandsTravis Watkins2012-10-31-0/+42
| | | | Also allow commands that don't start with a / to match vanilla behavior
* Expose API for managing and using GameRules. Adds BUKKIT-2757feildmaster2012-10-31-0/+22
|
* Implement the API for ItemFrames. Adds BUKKIT-2668h31ix2012-10-31-1/+62
|
* Expose API for clearing a player's inventory with a successful countEvilSeph2012-10-30-0/+27
| | | | return. Adds BUKKIT-2745
* Expose API for giving and taking experience levels for use with ExpCommand's ↵EvilSeph2012-10-29-0/+4
| | | | new behaviour with Minecraft 1.4. Adds BUKKIT-2739
* Revert changing EntityType.FIREBALL to LARGE_FIREBALLfeildmaster2012-10-29-1/+1
|
* Get skull data before destroying block. Fixes BUKKIT-2723Travis Watkins2012-10-29-4/+15
| | | | | | | | | Skull blocks store their type in a tile entity and use their block data as rotation. When breaking a block the block data is used for determining what item to drop. Simply changing this to use the skull method for getting their drop data is not enough because their tile entity is already gone. Therefore we have to special case skulls to get the correct data _and_ get that data before breaking the block.
* Add isHardcore API to check if the server is in hardcore mode or not. Adds ↵EvilSeph2012-10-29-0/+4
| | | | BUKKIT-2707
* Add new entities to World.spawn method. Fixes BUKKIT-2658Travis Watkins2012-10-28-3/+19
|
* Remove spawn-radius setting in bukkit.yml in favour of spawn-protection inEvilSeph2012-10-28-1/+10
| | | | server.properties. Fixes BUKKIT-2657