summaryrefslogtreecommitdiffstats
path: root/src/main/java
Commit message (Collapse)AuthorAgeLines
* Implement banning API. Adds BUKKIT-3535mbax2014-02-08-20/+184
| | | | | | | | | | | | | | | | | | | | | | | | | Previously no implementation existed to access various additional information fields regarding bans. This implementation expands on the information outlined in the sister Bukkit commit to provide access to the Minecraft implementation of the ban system. This implementation of the banning API contains 2 new classes which provide access to the internal workings of the built-in banning system within Minecraft. The CraftBanEntry class simply supports the representation of an internal Minecraft BanEntry object. The data that may be modified within this new object must be manually saved to the list contained within the CraftBanEntry using it's save() method. The CraftBanList class supports the representation of an internal Minecraft BanList object through proxy methods. These methods do validation on the passed objects where needed to ensure safe input to the backed Minecraft objects. These changes additionally re-route the existing banning API to the newer, more detailed, system. Functionality prior to this change still behaves as documented by the contract defined by the methods changed.
* [Bleeding] Correctly enchant books. Fixes BUKKIT-5302t00thpick12014-02-06-9/+6
| | | | | | | | | | | | | | Books can now recieve more than one enchantment. As such, breaking out of the loop after only 1 enchantment is applied is not the correct behavior. This commit also reworks some of the logic surrounding the application of enchantments to the item. By checking if the event doesn't add any enchantments rather than if the original enchantments list is empty, the application code is only reached if enchantments are applied, rendering the "applied" boolean no longer necessary. The ItemStack's Item should only be set once, so it is now set outside of the loop based upon whether or not "flag" is true (with "flag" being whether or not the ItemStack's Item is a book).
* Update clients when ItemFrame direction is set. Fixes BUKKIT-3371EdGruberman2014-02-02-0/+14
| | | | | | | | | | | | Hanging entities are placed into the entity tracker and updates are sent out to clients for the initial placement. Thereafter data watchers are configured to monitor the item inside the frame. However, if the direction the ItemFrame facing changes the entity tracker will not send out updates. This commit removes and recreates the ItemFrame entity in the same way that was already done for Painting entities. This causes clients to be updated appropriately.
* Implement SpawnReason.NETHER_PORTAL and DISPENSE_EGG. Fixes BUKKIT-3148Kodekpl2014-02-01-3/+10
| | | | | | | | | | | | | | | | Previously any entities spawned through dispensers (monster eggs) or by nether portals were given the incorrect SpawnReason of SPAWNER_EGG. This made it impossible to distinguish what exactly happened in regards to the creature being spawned. A method in ItemMonsterEgg has been added to further fine tune reasons for spawning creatures. This permits the DISPENSE_EGG reason to be used correctly and accuratly as well as the NETHER_PORTAL reason due to how BlockPortal spawns the mobs. The redirected method, a(World, int, double, double, double), is still called by the ItemMonsterEgg itself and therefore uses the default reason of SPAWNER_EGG. This does not change previous behaviour.
* [Bleeding] Handle players disconnecting during respawn. Fixes BUKKIT-4327turt2live2014-02-01-5/+15
| | | | | | | | | | | | | | | | Prior to this commit, a player disconnected during a respawn event would remain in memory. This causes a ghosting issue of players in the slot count and player list, as well as a reference leak. This commit avoids re-adding the player to the player list (and world) if they are disconnected. This ensures that the remainder of the respawn logic is completed as well as ensuring a duplicate player is not left on the server. This commit also saves the player's file at the end of the method if they have been disconnected to ensure that their next login is accurate to the respawn event's actions. A player that was revived and disconnected will reconnect as revived.
* Load all already generated chunks via async chunk systemTravis Watkins2014-02-01-37/+40
| | | | | | | | | | | | | Currently we use the async chunk loading system only when players trigger chunk loading. If a chunk is loaded for any other reason it goes through a separate codepath. This means if a player has trigged a chunk load and before the chunk loads something else wants the same chunk we will load it twice and throw away the second result. With this change we instead use the sync processing feature of the AsynchronousExecutor to load the chunk which will pull it out of the queue if it was already queued to load. This means we only ever load a chunk once. Because chunk generation is not thread safe we still fallback to the vanilla chunk loading system if the chunk does not currently exist.
* Allow AsynchronousExecutor.getSkipQueue() to pull tasks from the queueWesley Wolfe2014-02-01-6/+12
|
* Don't call duplicate interact air events. Fixes BUKKIT-5359Travis Watkins2014-01-31-11/+1
| | | | | | | | | | | | Previously we attempted to call interact events in cases that were missing by modifying the arm swing logic. This, however, was too broad and started triggering events in cases we already covered leading to duplicates. Since the only case we can handle cleanly and the primary point of the previous fix was fluids we now instead simply treat fluids as air for this check. This also ensures we do not get duplicate events when the player is in a fluid and hits a normal block, unlike the previous change. This reverts commit 68b702f7 and replaces it with a better fix.
* [Bleeding] Store correct block type when hitting blocks. Fixes BUKKIT-5209t00thpick12014-01-30-1/+1
| | | | | | | The block obtained and stored within the block object higher up does not reflect the block at the location being hit, rather it is the air block the arrow was previously in. Thusly when the variable is used to check if the arrow is still in the block, it fails.
* [Bleeding] Fix support for several entities in World.spawn(). Fixes BUKKIT-3284t00thpick12014-01-30-8/+8
|
* [Bleeding] Use correct yaw and pitch when spawning arrows. Fixes BUKKIT-3320t00thpick12014-01-30-1/+1
|
* [Bleeding] Directly set direction in EntityFireball. Fixes BUKKIT-1154t00thpick12014-01-30-2/+10
| | | | | | Because EntityFireball.setDirection() adds a random offset to passed parameters, it is not appropriate for use in an API method. As such, the values need to be directly set to remain accurate.
* [Bleeding] Implement setCharged and getCharged for WitherSkull. Addresses ↵t00thpick12014-01-30-0/+10
| | | | BUKKIT-3060
* [Bleeding] Implement ProjectileSource API. Addresses BUKKIT-1038, BUKKIT-1156t00thpick12014-01-30-33/+267
|
* Add setCritical and isCritical methods to CraftArrow.java. Adds BUKKIT-5113MorphanOne2014-01-30-0/+8
|
* Add methods to get and set arrow knockback. Adds BUKKIT-5103Likaos2014-01-30-1/+11
|
* [Bleeding] Re-add EntityShootBowEvent lost in ↵GJ2014-01-30-1/+13
| | | | | | e93a3eb3b4c5234e3e3936bc697d566a42d3b30e. Fixes BUKKIT-4214 In the 1.2 update for CraftBukkit, a missed diff resulted in Skeletons no longer firing an EntityShootBowEvent when they shoot an arrow.
* [Bleeding] Add support for ThrownExpBottle and Fish to ↵GJ2014-01-30-0/+9
| | | | | | | | | launchProjectile(...). Fixes BUKKIT-1536 Previously, trying to launch a ThrownExpBottle or Fish projectile would result in an IllegalArgumentException. This commit adds support for both ThrownExpBottle and Fish, which means that all current projectiles are now properly supported by this method.
* [Bleeding] Instantiate logger earlier in CraftServer. Fixes BUKKIT-4253.GJ2014-01-30-2/+1
| | | | | | | | Previously, if an error occurred during CraftServer initialization before the logger was instantiated, it would cause an NPE and the server would never finish loading properly. By instantiating the logger before attempting to load anything else in CraftServer, we ensure that a logger will always be available in the case of any errors.
* [Bleeding] Fire interact events for Weighted Pressure Plates. Fixes BUKKIT-5053GJ2014-01-30-1/+26
| | | | | | | | In 1.7, Minecraft changed Weighted Pressure Plates to allow players and entities to interact with them, rather than simply changing redstone signal based on the number of items on the pressure plate. This commit adds calls to PlayerInteractEvent or EntityInteractEvent for every entity that steps on the plate.
* Add BlockPressurePlateWeighted.java for diff visibilityGJ2014-01-30-0/+35
|
* Relocate NaN check on PacketPlayInFlying.Nate Mortensen2014-01-29-7/+7
|
* Readd connection throttleTravis Watkins2014-01-28-0/+45
|
* Fix stacking for items after setting empty meta. Fixes BUKKIT-5331Wesley Wolfe2014-01-23-1/+1
| | | | | | | | | ItemStacks do not stack if one has null for a tag, while the other has an empty tag. In CraftItemStack, if you set an item to an empty ItemMeta, it will create an empty tag for the internal ItemStack. This changes the setItemMeta function to check for empty meta, and then use null for the tag instead of an empty NBTTagCompound.
* Implement API for ServerListPingEvent. Adds BUKKIT-5121, BUKKIT-2465Wesley Wolfe2014-01-19-3/+69
|
* [Bleeding] Properly handle EntityBreakDoor event canceling. Fixes BUKKIT-5318t00thpick12014-01-18-1/+1
| | | | | | The method being called was renamed during the 1.4.2 update process but the function call was not replaced accordingly, leading to a missed diff from 314051580a0a8e4745d3a539f232b552916eb302.
* [Bleeding] Account for null in EntityDamageEvent handling. Fixes BUKKIT-5317t00thpick12014-01-18-1/+3
| | | | | | Damage caused by explosions will return null for the event as of 6588d6f72bbca74bf150de65593ac575b846111b. As such, a null check is now necessary when handling non-living entity damage events.
* [Bleeding] Check that vanilla recipes actually exist. Fixes BUKKIT-5277t00thpick12014-01-18-10/+15
| | | | | | When falling back to vanilla recipes in the iteration of recipes, a check is necessary to ensure that vanilla recipes are present. RecipeIterator has been modified to account for the multi-map setup.
* [Bleeding] Implement methods for /achievement command. Addresses BUKKIT-4932t00thpick12014-01-16-0/+29
|
* [Bleeding] Fix Achievements and Statistics API. Fixes BUKKIT-5305t00thpick12014-01-16-50/+324
|
* Add StatisticManager.java for diff visibility.t00thpick12014-01-16-0/+61
|
* Implement UnsafeValues for give command. Addresses BUKKIT-5286Wesley Wolfe2014-01-14-1/+42
|
* [Bleeding] Implement setIdleTimeout and getIdleTimeout. Addresses BUKKIT-4932.t00thpick12014-01-14-0/+8
|
* Consider repair cost when checking ItemMeta emptiness. Fixes BUKKIT-5304Wesley Wolfe2014-01-14-1/+1
|
* Only delay removing containers. Fixes BUKKIT-5238Travis Watkins2013-12-24-2/+12
| | | | | | | | In commit f94b7af8 I delay removing the block until after running the block's cleanup code to avoid errors. However, this causes problems of its own due to blocks not being written with this in mind. To avoid blocks getting recursively removed we now only delay removing containers since they are the only ones we had problems with to begin with.
* Process block cleanup first. Fixes BUKKIT-4103Travis Watkins2013-12-24-1/+2
| | | | | | | | | | When setting a block the server sets the new block ID, calls the cleanup on the old block, then calls the placement logic for the new block. This would normally work correctly but we have logic to prevent errors that is causing one here. When trying to clean up the old block we notice the block ID has changed and try to fix things, this causes the cleanup logic to fail. To ensure cleanup happens correctly we now do all the cleanup before changing the block which avoids triggering the fixup code.
* [Bleeding] Handle custom furnace recipes separately. Fixes BUKKIT-1657, ↵t00thpick12013-12-20-3/+22
| | | | | | | | | | BUKKIT-3846 Due to vanilla blanket comparing data values, and the unspecified order of hashmap iterators, we need to run through custom recipes first, and therefore separately, to ensure that they are actually used. By not adding the custom results to the experience table, we do not override the experience gains from vanilla smelting recipes.
* [Bleeding] Fix crash involving horse passengers. Fixes BUKKIT-5212t00thpick12013-12-20-1/+1
| | | | | | Setting a horse's passenger to a non-living entity will cause a server crash when the horse ticks, we need to check that it is a living entity before casting, and skip otherwise.
* [Bleeding] Call event when reflecting fireballs. Adds BUKKIT-5214t00thpick12013-12-20-0/+12
|
* [Bleeding] Send short version string on ping. Addresses BUKKIT-5206t00thpick12013-12-20-2/+2
| | | | | | | With the update in 1.7 that improved the server ping, it was made to include a long version string for CraftBukkit. This value is too long for proper display so we now send a shortened string consisting of the server implementation and the minecraft version.
* Account for different reach limit in Survival/Creative. Fixes BUKKIT-4257EvilSeph2013-12-20-4/+6
| | | | | | | | | When we first added the reach limiter in CraftBukkit there was no difference between how far the client could reach in vanilla while in Survival or Creative. At some point in Minecraft's cycle Creative was given a block extra to work with and our protection was not updated to account for this. We need to respect the possibility of different game modes in Minecraft providing the client with varying reach distances.
* Fix attributes not clearing on death. Fixes BUKKIT-5213EvilSeph2013-12-20-1/+1
| | | | | | | | Due to an incorrect mapping of this method to a friendly name, we're unfortunately calling the wrong method within EntityPlayer.reset() to reset attributes. Instead of what we've mapped as "removeAllEffects", we should be calling EntityLiving.aP(). This mapping should be corrected in the next naming version.
* [Bleeding] Correctly generate torches on portal. Fixes BUKKIT-746t00thpick12013-12-17-4/+4
| | | | | | | In the CraftBlockState implementation, updating the blockstate onto a block will force the block state data value onto the block. Unlike vanilla which relied on block data being set when the type changed, we must instead explicitely set the data in the blockstate.
* Add new setResourcePack method. Fixes BUKKIT-5015Nate Mortensen2013-12-17-4/+6
| | | | | | | | | | | | Minecraft now uses resource packs instead of texture packs, which broke the setTexturePack method, as the client no longer listens on the MC|TPack channel. This commit fixes the issue by adding in a setResourcePack method, and by deprecating setTexturePack and rewriting it to call the newly added setResourcePack. In order to simplify the method and prevent this from happening in the future, setResourcePack calls EntityPlayer.a(String) to use the same logic as minecraft when sending resource packs.
* Process URLs as clickable. Adds BUKKIT-4917mbax2013-12-17-26/+39
| | | | | | | | | | In Minecraft 1.7, URL processing was removed from the client while the server gained the ability to designate a URL to be launched in response to clicking text. However, this functionality is not implemented in the vanilla server. This commit adds that functionality to messages sent to the client, processing URLs as clickable. Additionally, char array iteration is replaced with regex.
* Check pending blocks before falling back to world. Fixes BUKKIT-5122Travis Watkins2013-12-17-0/+14
| | | | | | | | | | When growing trees we use a BlockChangeDelegate which queues up the block changes so plugins can modify/block/log tree growing. However, we always check the actual world when checking for existing blocks. This means when the tree growing code checks to see if putting a leaf in a block is valid it may incorrectly overwrite a log block that should exist in that location. To ensure trees grow correctly we now check the delegate itself for blocks that match the queried location before checking the world.
* Fix mistranslation issue for PlayerToggleFlightEvent. Fixes BUKKIT-5172EvilSeph2013-12-17-1/+1
| | | | Thanks for pointing it out RingOfStorms!
* Remove references to chunklist. Fixes BUKKIT-5190frymaster2013-12-17-3/+0
| | | | | | | | | | Commit c576054539790bdeb35285f62863d74b48c0782d removed the chunklist collection stored in ChunkProviderServer, however it has been partially restored in some places by 7e1ac0a77129b169704c1e222ff2deb3ab6cd2d2. As not all references to this were restored, this has caused the chunklist and chunks collections to become out of sync, resulting in a memory leak. This commit removes chunklist from ChunkProviderServer again.
* [Bleeding] Fix incorrect Cocoa Bean orientation. Addresses BUKKIT-5182t00thpick12013-12-17-1/+6
| | | | | | | When ItemDye is used to place a Cocoa Block, the postPlace() method should not be called, as data is handled within the ItemDye class. However, if Cocoa is placed via its block item, postPlace() should still be called to mirror vanilla behavior.
* Add missed tree types for Minecraft 1.7. Adds BUKKIT-5042BlackHole2013-12-16-0/+6
| | | | | | | This commit adds support for the Tree Types that weren't added in the initial update to Minecraft 1.7. Pulled from PR #1277