summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeLines
* 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.
* Lower compression level to avoid overloading the thread. Fixes BUKKIT-2963Travis Watkins2012-11-18-1/+2
| | | | | | | | | | | | | | | | | When sending chunks to a player we use their writer thread to do chunk compression to avoid blocking the main thread with this work. However, after a teleport or respawn there are a large number of chunk packets to process. This causes the thread to spend a long period handling compression while we continue dumping more chunk packets on it to handle. The result of this is a noticable delay in getting responses to commands and chat immediately after teleporting. Switching to a lower compression level reduces this load and makes our behavior more like vanilla. We do, however, still give this thread more work to do so there will likely still be some delay when comparing to vanilla. The only way to avoid this would be to put chunk compression back on the main thread and give everyone on the server a poorer experience instead.
* Implement sound changes for Minecraft 1.4.2 changes. Fixes BUKKIT-2849Karl Fritsche2012-11-17-26/+67
|
* Use correct itemstack for dispenser behavior chaining. Fixes BUKKIT-2886James Clarke2012-11-17-29/+27
| | | | | | | When an event changes the item to be dispensed we check to see if the new item has special behavior for dispensing and if so pass it on to that behavior handler. However, we are actually checking the old itemstack and passing the new itemstack so this check fails.
* [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
|
* Don't kick player when they travel too far. Fixes BUKKIT-2968Travis Watkins2012-11-17-1/+2
| | | | | | | | | If a player travels past 32,000,000 blocks on the X or Z coordinates they will be kicked for having an illegal position. On kick their player data is saved which includes their (illegal) position. This means on join they are immediately kicked again for the same reason and are stuck. Instead of kicking at all in this case just teleport the player back to their previous position just like the moved wrongly check does.
* Implement API for Skeleton and Zombie types. Fixes BUKKIT-2818James Clarke2012-11-17-1/+27
|
* Fire BlockSpreadEvent for vine growth. Fixes BUKKIT-1097Travis Watkins2012-11-17-7/+36
|
* Add BlockVine.java from mc-dev for diff visibility.Travis Watkins2012-11-17-0/+293
|
* Fire BlockFadeEvent when soil turns back to dirt. Fixes BUKKIT-1854Travis Watkins2012-11-17-2/+12
|
* Don't wait for main thread when processing commands.Travis Watkins2012-11-17-42/+54
| | | | | | | | In order to correctly handle disconnects for invalid chat we setup a Waitable and pass it to the main thread then wait for it to be processed. However, commands are also chat packets and they are already on the main thread. In this case, waiting will deadlock the server so we should just do a normal disconnect.
* Don't create tile entity when block placement fails. Fixes BUKKIT-2924Travis Watkins2012-11-16-0/+6
| | | | | | | | | End portals can only be placed in the end during the dragon's death. Attempts to place them outside of this window causes the block to remove itself. However, we still create the tile entity for the portal which leads to exceptions spamming the console about a tile entity existing without the appropriate block. In these cases we should not place the tile entity at all.
* Ignore empty custom payload packets. Fixes BUKKIT-2957Travis Watkins2012-11-16-0/+6
|
* Use synchronous calls and wait for chat disconnect. Fixes BUKKIT-2946Wesley Wolfe2012-11-16-4/+59
| | | | | | | When invalid chat is detected we currently drop the connection with no hint as to why as anything else is not allowed while we're off the main thread. To give valid disconnect reasons and fire proper events instead pass these off to the main thread and wait for it to process them.
* Update tile entity when interact event is cancelled.Travis Watkins2012-11-16-0/+5
| | | | | | | If a plugin cancels a PlayerInteractEvent when left clicking a block the client may have removed this block if they are in creative mode or if the block breaks in a single hit. In this case, we need to update the client's tile entity as well as telling it the block still exists.
* Update CraftBukkit to Minecraft 1.4.5.Travis Watkins2012-11-16-4/+8
|
* Remove fire ticks if damage has been canceled. Fixes BUKKIT-2933feildmaster2012-11-15-0/+3
|
* Don't thread single chunk compression. Fixes BUKKIT-2927Travis Watkins2012-11-15-32/+3
| | | | | | | | | | | | | Packet 51 is used to send updates about large changes to single chunks and to remove chunks from the client when they get out of range. In the first case a single packet object is created and queued for all relevant players. With our current chunk compression scheme this means the first player to have the packet processed will start the compression and get the packet correctly but the rest will get garbage. Since this packet never contains much data it is better to simply handle compression of it on the main thread like vanilla does instead of putting in locks and dealing with their overhead and complexity.
* Update tile entity on client on cancelled block break. Fixes BUKKIT-2935Travis Watkins2012-11-14-1/+11
| | | | | | | | When a client tries to break a block it assumes it has done so unless told otherwise by the server. This means the client also wipes out any tile entity data it has for the block as well. We do not send this data when updating the client so clients lose things like text on signs, skull type, etc when they aren't allowed to break the block.
* Rework skull dropping. Fixes BUKKIT-2930 and BUKKIT-2820Travis Watkins2012-11-14-22/+24
| | | | | | | | | 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.
* Add crafting result slot for sheep breeding. Fixes BUKKIT-2926Travis Watkins2012-11-14-0/+1
| | | | | | | | | Sheep now use the crafting system when breeding to determine what color their baby should be. This triggers an event but the event wants the crafting inventory to have a result slot which sheep do not have. This event could be useful for plugins to control the output of sheep breeding so instead of disabling it we add a result slot so the event fires without issue.
* Clear out empty extended block ID array. Fixes BUKKIT-2923Travis Watkins2012-11-14-0/+14
| | | | | | | | | | | | If a chunk gets a block added to it that requires the extended block id nibble array (block id greater than 255) the array is created and saved with the chunk. When the blocks are verified to make sure they exist these entries are erased but the extended block id array is not. This causes the server and client to disagree about how much data a chunk has which makes the client crash while trying to load the chunk for rendering. To resolve these issues we now clear the extended block id array on chunk load if there is no valid data in it.
* Potentially fix glitch with falling entities.Travis Watkins2012-11-13-0/+1
| | | | | | | | | | | When a block creates a falling entity the block is not immediately removed from the world. Instead, the falling entity is responsible for removing it but only if the block still exists. Due to certain piston mechanics it is possible to move the block before this check happens and thus the block is not removed. This should be fine as the entity will kill itself in this situation. However, the code does not stop here and continues running the rest of the entity logic which includes either placing a block in the world or placing a block item in the world depending on the circumstances.
* Add EntityFallingBlock from mc-devTravis Watkins2012-11-13-0/+178
|
* Correct digging behavior. Fixes BUKKIT-2780Travis Watkins2012-11-13-11/+10
| | | | | | | | | | | If a block is air we return immediately so miss the cleanup work that would normally happen in this case in vanilla. This causes us to get in to a situation where, due to odd packet sending from the client, we never properly stop an attempt by the client to break a block and thus it eventually breaks. We also use our own variable for block damage and never sync it up with the vanilla one so damage reporting to other clients is not always correct.
* Update CraftBukkit to Minecraft 1.4.4.Travis Watkins2012-11-13-2713/+3234
|
* Migrate world data with world when switching from vanilla Minecraft toEvilSeph2012-11-02-0/+9
| | | | Bukkit. Fixes BUKKIT-2816 and BUKKIT-2760
* [Bleeding] Fix mistranslation affecting time of the server vs time of day.md_52012-11-02-5/+5
| | | | Fixes BUKKIT-2797
* Improved the potion test to detect missing PotionType values.Wesley Wolfe2012-11-02-1/+31
|
* 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/+30
| | | | | | | | | | | | 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.
* Fire HangingBreakEvent when explosions remove hanging entities. Fixes ↵EvilSeph2012-10-31-6/+6
| | | | BUKKIT-2764
* Add inventory and slot types for new containers. Fixes BUKKIT-2741Travis Watkins2012-10-31-0/+22
|
* Fix NPE when blowing up an item frame. Fixes BUKKIT-2763Travis Watkins2012-10-31-1/+1
|
* Implement API for ambient mob spawn limit. Add spawn-limit.ambient toTravis Watkins2012-10-31-1/+26
| | | | bukkit.yml. Adds BUKKIT-2765
* Use BlockCommandSender for dispatching Command block commandsTravis Watkins2012-10-31-10/+55
| | | | 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-14/+42
|
* Hook command block up to ConsoleCommandSender. Fixes BUKKIT-2684Travis Watkins2012-10-31-4/+64
| | | | | This will need to have its own CommandSender but this makes command blocks work for now with any command console can run.
* Implement the API for ItemFrames. Adds BUKKIT-2668h31ix2012-10-31-1/+62
|
* [Bleeding] Fire damage is no longer a valid reason for hanging entity removalh31ix2012-10-31-13/+2
|
* [Bleeding] Implement new Hanging events. Adds BUKKIT-2754h31ix2012-10-31-40/+64
|
* Remove Anvil debug. Fixes BUKKIT-2732EvilSeph2012-10-30-1/+1
|
* [Bleeding] Prevent players from appearing to be sneaking after they change ↵md_52012-10-30-1/+1
| | | | dimensions whilst doing so.
* Disable portal support for entities for now. Restore allowNether check.EvilSeph2012-10-30-3/+3
| | | | | Relates to: BUKKIT-2695 BUKKIT-2675
* Expose API for clearing a player's inventory with a successful countEvilSeph2012-10-30-0/+27
| | | | return. Adds BUKKIT-2745
* Update map cursors to reflect 1.4 changes. Fixes BUKKIT-2740feildmaster2012-10-29-2/+1
|