summaryrefslogtreecommitdiffstats
path: root/src/main/java/net
Commit message (Collapse)AuthorAgeLines
* Update to Minecraft 1.8Thinkofdeath2014-11-28-63889/+0
| | | | For more information please see http://www.spigotmc.org/
* Implement ability to keep items on death via plugins. Adds BUKKIT-5724Jerom van der Sar2014-08-17-2/+2
| | | | | | | | | | | | | When a player dies their inventory is normally scattered over the the area in which they died. Plugins should be able to modify this behaviour by defining whether or not the player's inventory will be dropped on the ground or waiting for the player when they eventually respawn. This commit implements the methods included in the Bukkit half for the new behaviour by acting upon the boolean flag. The boolean flag is tested prior to clearing the inventory as well as prior to dropping the items on the ground. If the flag is true (indicating "keep inventory"), the items are not removed from the player's inventory and are not dropped on the ground.
* Modify the invalid item set to permit command blocks. Fixes BUKKIT-4342Starbuck Johnson2014-08-17-1/+1
| | | | | | | | | | | | When using a "vanilla" Minecraft server using the "pick block" key on a command block yields the invoker with a command block within their inventory while in creative mode. Implications of the invalid items set containing the command block also include having a "ghost" item that cannot be placed due to it not actually existing. This commit resolves the problem and brings Craftbukkit closer to vanilla behaviour by removing the command block item ID, 137, from the invalid items set.
* Fix PlayerFishEvent not correctly cancelling. Fixes BUKKIT-5396myiume2014-08-17-6/+3
| | | | | | | | | | | | | Prior to this commit cancelling the PlayerFishEvent would cause various states of the fishing routine to be incorrectly or wrongly fired. This incorrect behaviour was due to the miscommunication between the server and client regarding the fishing state. When the event was cancelled, the bobber entity was removed and caused the client to incorrectly determine what the "next state" was to logically be. This commit resolves the issue by ensuring the client is made aware of the correct changes at the correct time regarding the bobber entity, therefore keeping the logical steps of "fishing" proper and in-tact.
* Fix cancelling PlayerDropItemEvent. Fixes BUKKIT-3313ase342014-08-04-1/+13
| | | | | | | | | | | | Up until this commit the PlayerDropItemEvent, if cancelled, would return items to the first available slot in the inventory - which is clearly undesirable as a player and plugin author to deal with. This commit changes that by ensuring that the item is returned to where it came from in the player's inventory. This still supports modifying the drop from the player and will default to "first available slot" if the item has changed since the event was fired. Other remaining behaviour of the event is still in tact and has not been modified.
* Fix removal of items from Item Frames. Fixes BUKKIT-5736feildmaster2014-08-02-1/+1
|
* Don't confuse client with sound coordinates outside view distance.Travis Watkins2014-07-15-3/+52
|
* Handle uniform block ids greater than 127. Fixes BUKKIT-5686Travis Watkins2014-07-10-4/+4
|
* Put damage modifiers in Functions for event. Fixes BUKKIT-5681Travis Watkins2014-07-09-39/+69
|
* Update CraftBukkit to Minecraft 1.7.10Travis Watkins2014-07-08-1111/+1116
|
* [Bleeding] Fix checks for non-living entities. Fixes BUKKIT-5667t00thpick12014-06-24-2/+2
|
* Use compact memory format for uniform chunk section data.Travis Watkins2014-06-23-59/+272
| | | | | | | | | | | Many chunk sections contain parts of their data that are the same for every block they contain. In these cases we can save memory by saving a single value instead of an array of 4096 copies of that value. Block light and block data are most likely to be uniform followed closely by sky light data. Block ids are far less likely to be uniform but give the largest saving when they are. Because of this we use a compact format for every part of the chunk. Memory saved from this technique will vary based on the world but seems to be about 50% on normal Minecraft generated chunks.
* [Bleeding] Set projectile source for reflected fireballs. Fixes BUKKIT-5661t00thpick12014-06-22-0/+1
|
* [Bleeding] Implement new damage api. Fixes BUKKIT-5326, BUKKIT-3878.t00thpick12014-06-22-192/+149
| | | | | | | | | | | | | | This commit centralizes event handling to where damage is actually applied to the entity to avoid bugs that have resulted from nodamageticks, modifications to damage after the event has been called, and similar mishaps. This also implements new API for getting and setting of modifications made to the damage amount actually applied to the entity. This is done by storing the change in the damage amount as each modifier is applied by vanilla code. The method that actually damages the armor worn by an entity has been relocated beneath the event called as to not apply durability loss when the event has been cancelled.
* [Bleeding] Repair missing diff in Explosion. Fixes BUKKIT-5662t00thpick12014-06-22-3/+4
| | | | | | The blast protection enchantment dampers explosions, however the functionality was only added to block explosions, and not entity explosions.
* Avoid checking for loaded chunks for lighting and entity ticking.Travis Watkins2014-06-21-4/+76
| | | | | | | | | | | | | | When a chunk is loaded the server tries to ensure it has its initial light calculations done before sending it to the player. When ticking entities the server tries to ensure the entity does not walk into an unloaded chunk. To accomplish these the server checks a one chunk radius around the chunk to be lit or a two chunk radius around the chunk the entity is in. These lookups happen every tick even though their result is unlikely to change that often. To reduce the cost of these checks we replace them with a system to keep track of what neighbor chunks a chunk has loaded and update it when chunks load or unload which is a much less frequent action. On a server with ten players this change removes about 100,000 calls a tick to LongObjectHashMap's containsKey method.
* Don't check unload queue before ticking things anymore.Travis Watkins2014-06-21-29/+11
| | | | | | | | | | | In commits 71a238ee and c8591397 we added checks while ticking to ensure we never ticked anything in a chunk meant to be unloaded. We did this to prevent these chunks being removed from the unload queue and leaked. However, this causes a ridiculously large number of lookups on the queue for a somewhat rare occurance. We also now have the chunk GC which will take care of these leaked chunks when they do happen. With this in mind we now remove these checks which removes almost all uses of the LongHashSet backing the unload queue.
* Add special case for handling place event with lilies. Fixes BUKKIT-5641bloodshot2014-06-01-1/+9
|
* Improve ItemStack filtering.Travis Watkins2014-06-01-0/+10
|
* Some assumptions are better than others.Nate Mortensen2014-06-01-5/+3
|
* Handle null targets in target event. Fixes BUKKIT-5635Travis Watkins2014-05-26-3/+10
|
* Fix ItemStack state during BlockPlaceEvent. Fixes BUKKIT-5632Nate Mortensen2014-05-26-5/+15
|
* Rework mob item dropping on death. Fixes BUKKIT-5625Travis Watkins2014-05-26-688/+119
| | | | | | | | | | | | | | | | | | | After the changes in d611cff2 we started including a mob's equipment when calling EntityDeathEvent so plugins can access this data. However, the changes to enable this triggered a bug that makes skeletons and pig zombies no longer drop equipment because they handle this differently than the rest. On top of this we don't handle dropping equipment for mobs that cannot pick up items in vanilla even though vanilla does drop equipment for them if you summon them with it. We also do not include a horse's inventory in the event so they drop their saddle, armor, chest, and chest contents with no way for a plugin to control this. To solve this issues we revert mob item dropping back to vanilla logic and instead just capture all their drops in the method they all call to spawn them into the world. We also move horse inventory dropping so it happens at a time when we're capturing these drops. With these changes all items mobs drop on death should now be included in the event and we have less diff to worry about for future updates.
* Ensure we always log commands and log the right thing.Travis Watkins2014-05-14-1/+2
| | | | | | | | Waiting to log until after PlayerCommandPreprocessEvent makes the server not log anything if the event is cancelled. It also makes the server log what a plugin changed the command to instead of what the player actually tried to run. As the point of the log is to have a record of every command a player attempts to run these are both not desirable.
* Handle chat packets correctlyWesley Wolfe2014-05-13-4/+4
|
* Handle inventory max stack sizes even better. Fixes BUKKIT-5595Travis Watkins2014-05-13-1/+6
| | | | | | | | | | | | In 7e37cf96 we modified the container logic to handle custom max stack sizes better and ensure the client stays in sync with this scenario. This had the effect of sending an extra set slot packet for every inventory click a player did which was not wanted. These extra packets also cause the client to recalculate recipes which breaks the result slot for custom recipes. To avoid the extra packets in general we now only send them if the max stack is not the one we started with. In the case of a setting a custom max stack size on a workbench this is still not enough so we also now send another extra packet to make sure the result slot is always correct.
* [Bleeding] Fix stack overflow with Ender Crystals. Fixes BUKKIT-5583GJ2014-05-03-3/+3
|
* [Bleeding] Recheck persistence for chicken jockeys each tick. Fixes BUKKIT-5577GJ2014-04-29-0/+5
|
* [Bleeding] Include equipment in EntityDeathEvent loot. Fixes BUKKIT-5566GJ2014-04-29-4/+23
|
* [Bleeding] Correct issues with MEGA_REDWOOD trees. Fixes BUKKIT-5568GJ2014-04-28-1/+1
| | | | | | In commit 6efeddfe57, TALL_REDWOOD was used instead of the proper TreeType of MEGA_REDWOOD. Additionally, this fixes an issue in CraftWorld with an improper boolean flag related to the generation of MEGA_REDWOOD trees.
* Refactored BlockPlaceEvent and BlockChangeDelegate. Adds BUKKIT-5558bloodshot2014-04-23-2593/+250
| | | | | | | | | | | | | | | | | | | | | | | | | 23 classes have been removed as they are no longer needed using the new capture logic. This should help quite a bit with future MC updates. BlockPlaceEvent Refactor Before calling Item.interactWith, a recording flag is turned on for setTypeAndData to capture a blockstate for each block that attempts to be set. When a block place event is cancelled, the recorded blockstate, stack size, and metadata will revert back to the captured state. If the event is not cancelled, a notification will be sent to clients and block physics will be updated. BlockChangeDelegate Refactor Now that we have the ability to capture blockstates through world, there is no need to modify world gen classes with BlockChangeDelegate. Instead we will simply capture blocks during world generation in order to "replay" all of the captured blockstates to send back to delegates. StructureGrowDelegate and BlockSapling.TreeGenerator have also been removed as part of this change. BlockSapling and BlockMushroom will capture blockstates the same as block placement and revert back any grow events if needed.
* Don't limit anvil stack size.Travis Watkins2014-04-23-1/+0
| | | | | | After the changes in c549609d anvils started incorrectly limiting their inputs to single item stacks. Vanilla allows for full size stacks here and this is useful for using materials to repair items so now we do too.
* Handle inventory max stack sizes better. Fixes BUKKIT-5564Travis Watkins2014-04-23-8/+33
| | | | | | | | Make sure we check the inventory's max stack size where appropriate and don't assume the inventory slot is able to take our entire stack just because it is empty. We also ensure the client is updated with the correct slot contents and cursor contents in cases where the max stack changes result in different behavior than the client expected.
* Faux sleepers wake up normally. Fixes BUKKIT-3667Yariv Livay2014-04-18-1/+1
|
* Allow plugins to enchant normally unenchantable items. Adds BUKKIT-1849Andre LeBlanc2014-04-18-1/+7
| | | | | | | | | | It's currently not possible for a plugin to allow enchanting of an otherwise un-enchantable item using the enchanting table. This commit causes EnchantItemEvent to be called with an empty list of enchantments, allowing a plugin to provide it's own set of enchantments when vanilla Minecraft would not allow any. It also bypasses the unsafe enchantment check since a plugin should be permitted to apply any enchantments they like, and vanilla should not generate unsafe enchantments of its own.
* Update client stack when block place is cancelled. Fixes BUKKIT-5284bloodshot2014-04-18-1/+3
| | | | | | | | | Currently, whenever a player places a block in a protected area the equipped itemstack size on client is never updated properly since the client thinks the block was placed. The reason this happens is because ItemStack.matches returns true since the server does not decrement stack size if a BlockPlaceEvent is cancelled. To correct this on cancel we set the flag to always update the client regardless of matching.
* Update chest animation after cancelling open event. Fixes BUKKIT-1440bloodshot2014-04-18-12/+44
| | | | | | | Currently if a plugin cancels an InventoryOpenEvent for vanilla chests, the chest animation for clients is stuck in the open state since IInventory's closeContainer method is never called. To fix the issue, closeContainer is called before exiting the display GUI method.
* Call event when boat is destroyed by falling. Fixes BUKKIT-5500Brokkonaut2014-04-18-7/+14
|
* Removing broken chunk caching from World. Fixes BUKKIT-5425Brokkonaut2014-04-18-16/+1
| | | | | | | | Chunk caching in the World class does not know about outdated cache values. This caused various problems when accessing previously unloaded chunks. The caching also did not improve the performance so it is removed. Synchronization is also not necessary, because all accesses to getChunkAt may only come from the main thread.
* [Bleeding] Call EntityTargetEvent in many new places.GJ2014-04-18-11/+48
| | | | | Adds BUKKIT-5388, BUKKIT-5387, BUKKIT-5386, BUKKIT-5483, BUKKIT-5484. Fixes BUKKIT-5389.
* Add files from mc-dev for diff visibility.GJ2014-04-18-0/+99
|
* [Bleeding] Call BlockRedstoneEvent for all rails. Adds BUKKIT-4080GJ2014-04-18-1/+15
| | | | | | Previously, Detector Rails were the only rails that properly called BlockRedstoneEvent when they changed from powered to unpowered. This commit adds BlockRedstoneEvent calls for both Powered Rails and Activator Rails.
* Add BlockPoweredRail.java from mc-dev for diff visibility.GJ2014-04-18-0/+132
|
* [Bleeding] Ice in the nether fades to air. Fixes BUKKIT-5373GJ2014-04-18-1/+1
| | | | | | | | Previously, whenever BlockFadeEvent was called for ice melting, it returned the new BlockState with a type of Material.STATIONARY_WATER. However, in the Nether, ice melting does not form water, but is simply replaced by air instead. This changes the event to use the proper BlockState based on whether the block is located in the Nether or not.
* [Bleeding] Fix some inventories not using maxStack. Fixes BUKKIT-2883GJ2014-04-18-3/+9
| | | | | | | CraftBukkit adds the ability to specify the maxStack size for most inventories. However, some inventories were not overriding the getMaxStack method properly, and so the functionality was unavailable. This fixes the maxStack setting for Anvils, Minecarts, PlayerInventory, and Hoppers.
* [Bleeding] Add all blocks needed to PortalCreateEvent. Fixes BUKKIT-5464GJ2014-04-18-3/+9
| | | | | | | | | | Due to changes in how portals were created in Minecraft 1.7, the code that was previously used to find the blocks involved in the PortalCreateEvent no longer detected all blocks. Additionally, in the process of updating to 1.7.2, a missed diff resulted in some blocks that were found not being properly added to the blocklist. This commit corrects that missed diff, while also adding a check to ensure that the top and bottom of the portal frame are included in the blocklist.
* [Bleeding] Add many missing SpawnReasons.GJ2014-04-18-11/+14
| | | | | | | | | | Adds BUKKIT-5370, BUKKIT-5377, BUKKIT-5378, BUKKIT-5379, BUKKIT-5380, BUKKIT-5381, BUKKIT-5382. Adds reasons for zombies infecting villagers and zombie villagers being cured. Readds reason for a skeleton being spawned as a spider jockey. Adds reason to distinguish ocelot babies from the parent they spawned with. Adds reasons for chunk generation causing the ender dragon, villagers, and witches to spawn. And finally, adds a reason for spawning a chicken mount for a baby zombie.
* Add files from mc-dev for diff visibility.GJ2014-04-18-0/+622
|
* [Bleeding] Add many missing event calls.GJ2014-04-18-40/+152
|
* Add BlockTallPlant.java from mc-dev for diff visibility.GJ2014-04-18-0/+160
|