summaryrefslogtreecommitdiffstats
path: root/src/main/java/net/minecraft/server/ServerConfigurationManagerAbstract.java
Commit message (Collapse)AuthorAgeLines
* Update CraftBukkit to Minecraft 1.4.6feildmaster2012-12-20-825/+0
|
* [Bleeding] Check visibility API for sounds. Fixes BUKKIT-3114mbax2012-12-18-12/+2
| | | | | | | With 1.4, entity sound tracking changed for the better. Our previous method additions can now be removed. All that's left is checking if the source can be seen by the recipient of the sound packet. Thanks, Mojang!
* Load chunks asynchronously for players.Travis Watkins2012-12-12-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 a custom shutdown message set in bukkit.yml. Addresses BUKKIT-3031feildmaster2012-12-05-1/+1
|
* Don't add player to world if join event did it already.Travis Watkins2012-11-18-2/+6
| | | | | | | | On join we unconditionally add the player to the world they logged out in. If a plugin teleports a player during PlayerJoinEvent in a way that adds them to a world (cross-world teleport) we end up with one player in two places. To avoid this we check to see if the player has changed worlds or is already added to the world we have we skip adding them again.
* Update CraftBukkit to Minecraft 1.4.4.Travis Watkins2012-11-13-34/+20
|
* [Bleeding] Prevent players from appearing to be sneaking after they change ↵md_52012-10-30-1/+1
| | | | dimensions whilst doing so.
* Fix bug preventing non bed-reliant spawns from being successfully set. Fixes ↵EvilSeph2012-10-29-1/+1
| | | | BUKKIT-2708
* Update CraftBukkit to Minecraft 1.4(.2).Travis Watkins2012-10-27-21/+122
|
* [Bleeding] Check visibility API for sounds. Fixes BUKKIT-2210mbax2012-09-14-0/+15
| | | | | | | | | | | | This implementation of a visibility API check for sounds was created by adding extra methods carrying the source entity in WorldManager and ServerConfigurationManagerAbstract and adding a test for canSee in the SCMA sendPacketNearby method. This approach involves no logic copying, just method addition. I opted to cast to WorldManager as: 1) IWorldAccess is not in CraftBukkit at the moment 2) There is no other IWorldAccess implemented in CraftBukkit, nor is there likely to be one soon. If that day comes, easy fix.
* Fix BUKKIT-2419: PlayerAbilities not being updated on teleport/respawnfeildmaster2012-08-27-0/+1
| | | | | | Minecraft resets abilities based on what it knows client side, when someone dies and is in "survival," by default they should be in "survival." However, we allow modification of the PlayerAbilities, so we send this update out to the client. Oh and, the format of the commit is like this to see if it looks any good. :)
* Update to 1.3.2Travis Watkins2012-08-25-6/+2
|
* Call PlayerQuitEvent in correct location. Fixes BUKKIT-2193Travis Watkins2012-08-15-8/+7
|
* Don't use Packet56 and clear client cache on world changes.Travis Watkins2012-08-05-0/+2
|
* Implement new AsyncPlayerChatEvent. Addresses BUKKIT-2064Wesley Wolfe2012-08-03-1/+1
| | | | | | | | | | | | | | | | | | | | | Added two utility collections for use with PlayerChatEvents allowing lazier initialization of events and less need to synchronize against the player list. Provided a hidden queue system for similar logic to pre-1.3 chat. When a plugin is listening for the deprecated PlayerChatEvent, all chat will be delayed to be mirror executed from the main thread. All developers are encouraged to immediately update to the developmental Bukkit chat API as a minimum transition for server stability. Additionally, changes were required to bring thread-safety to the flow logic. CopyOnWriteArrayList is the only viable means to produce thread safety with minimal diff; using a sane pre-implemented collection would require reworking of sections of NMS logic. As a minor change, implemented expected functionality for PlayerCommandPreProcessEvent. Setting the player should now change the player executing the command.
* Update CraftBukkit to Minecraft 1.3.1feildmaster2012-08-02-0/+726