Commit graph

738 commits

Author SHA1 Message Date
Aikar
c9bf3f3819 Fix issue with chests being erased - #322 Fixed 2016-06-07 03:03:51 -04:00
Aikar
85df861eda more chunk unload queue fixes, hopefully fix various odd bugs 2016-06-07 02:08:59 -04:00
Aikar
49c8b34653 Fix bug with lootable refresh not saving inventory if on 2016-06-06 19:56:51 -04:00
Martin Panzer
74a3b887ff Make falling block height nerf respect doEntityDrops 2016-06-06 21:14:35 +02:00
Aikar
fbcd3ce763 Add sub timings to chunk map 2016-06-05 00:10:50 -04:00
Zach Brown
ebfc40dde6 Merge pull request #317 from MyPlayPlanet/fix-fence-fallblock
Fix fallingblocks getting stuck on fences
2016-06-04 18:24:27 -05:00
Zach Brown
d9e7de59e9 Fix a few global configuration options being unavailable 2016-06-04 17:26:11 -05:00
Aikar
e18cef3e72 remove part of my hopper patch, not sure its doing what I intended 2016-06-04 11:52:25 -04:00
Martin Panzer
fb10fff9b0 Fix fallingblocks getting stuck on fences 2016-06-04 10:11:03 +02:00
Aikar
ba0a4c75bd Only send Dragon/Wither Death sounds to same world
Also fix view distance lookup
2016-05-31 23:56:19 -04:00
Aikar
a9ec7b3a75 Fix skeleton horse spawn chance ignoring difficulty modifier if custom set
Also reduce diff
2016-05-30 12:50:57 -04:00
Zach Brown
44857e00e2 Merge pull request #310 from MyPlayPlanet/server-name-param
Add server-name as server parameter
2016-05-29 18:35:03 -05:00
Zach Brown
a618f33267 Stop relocating jopt-simple
Workaround for GH-189
Relocation breaks the lookup of a resource bundle, and this is easier than forking and maintaining our own version
 AFAIK this should be fine to do. Guess we'll see
2016-05-29 18:26:35 -05:00
Martin Panzer
805e5c6be7 Add server-name as server parameter 2016-05-28 12:02:57 +02:00
Aikar
d9971432c2 re-add timing that spigot missed 2016-05-27 22:29:09 -04:00
Aikar
e9c7cca230 Ensure chunks never load async
Force operation to main thread if it occurs async
2016-05-27 22:28:23 -04:00
Zach Brown
ff2c1ee38e Update upstreams 2016-05-27 21:22:18 -05:00
Aikar
cac7bbc139 Remove unneeded mob spawn cap patch - Fixes #235
I misread the code and thought the code kept looping until the mob spawn cap was hit.

Upon furthur review, this is not true, so this patch doesn't do anything sane.
2016-05-27 21:35:28 -04:00
Aikar
45aa7db5c4 Update Upstream 2016-05-25 12:37:17 -04:00
Martin Panzer
bd2fb5d530 Optimize Redstone torch list removal 2016-05-24 20:08:40 -05:00
Zach Brown
50277c2ceb Remove comment and fix build }}}}} 2016-05-22 21:20:15 -05:00
Zach Brown
4e74c43218 Re-add some method synchronization and move to a SingleThreadedExecutor in MCUtils 2016-05-22 21:14:17 -05:00
Zach Brown
87366c4f4d Temporarily remove synchronization from UserCache optimizations
In regards to GH-301
2016-05-22 21:07:40 -05:00
Zach Brown
5f6f6c6321 Update old TNT cannon mechanics patch to 1.9.4
Behavior may be buggy or otherwise broken, testing with the option is needed.
`fix-cannons` has been removed in favor of `enable-old-tnt-cannon-behaviors`
2016-05-22 20:26:15 -05:00
Zach Brown
32ea7542d2 Update upstream CB
Closes GH-303
2016-05-21 22:07:14 -05:00
Zach Brown
143ab568d4 Update B/CB/S
Closes GH-288
2016-05-20 17:32:50 -05:00
Aikar
8bee892ded Avoid blocking on Network Manager creation
Fixes #294

Use a pending list to handle new connections so that the netty threads
do not block waiting for the main thread to finish ticking
2016-05-16 23:21:26 -04:00
Aikar
c623104ffa MC-99914 - ensure EntityItem loads before EntityPotion 2016-05-16 22:54:48 -04:00
Aikar
4bead5b898 bump the default maxMobSpawns default to 250, and add support for unlimited
Use -1 to represent vanilla/unlimited.
Updated PaperWorldConfig to also update the individual worlds limit if it was set
to the new default value.

Should hopefully help #235
2016-05-16 22:07:12 -04:00
Aikar
478f246490 Optimize UserCache / Thread Safe
Because Techable keeps complaining about how this isn't thread safe,
easier to do this than replace the entire thing.

Additionally, move Saving of the User cache to be done async, incase
the user never changed the default setting for Spigot's save on stop only.
2016-05-16 21:14:28 -04:00
Aikar
1a5414bc4e Add Async Helper method to MCUtil 2016-05-16 20:50:09 -04:00
Aikar
e4c179e827 Refactor Lighting Queue System
may help #284

Cleans up the lighting queue system, reducing diff and improving implementation.

We no longer stop chunk unloads due to lighting updates, and instead simply flush the lighting queue.
The cost of forcing the chunk (and its neighbors!) to stay loaded waiting for its
lighting work to finish is much greater than simply taking the hit and doing the work.

This change also helps reduce the diff and avoid bugs with missed diffs by removing
duplicated logic.

Also switches to a more effecient data structure (ArrayDeque instead of LinkedList) for the queue itself.
2016-05-15 18:48:39 -04:00
Zach Brown
b9c321ff21 TileEntityLootable can call processRefill with a null player
Seems specific to EntityMinecartChest
Fixes GH-290
2016-05-15 01:41:36 -05:00
Aikar
0c78971552 More cases of avoiding marking active for chunks, to stop potential leaks 2016-05-13 22:27:20 -04:00
Aikar
016dca3390 Bring back an EAR optimization from 1.9.2 2016-05-13 01:39:03 -04:00
Aikar
b6d0dd32c6 Fix chunk leak issue with queued light updates 2016-05-13 01:34:37 -04:00
Zach Brown
f30c245be2 Make watchdoge disabler its own patch file
Change implementation, smaller diff, less NPE
2016-05-12 23:04:49 -05:00
BlackHole
b2087ca1af Override BlockPosition.MutableBlockPosition.isValidLocation()
Fixes GH-281
2016-05-12 12:56:48 -05:00
Aikar
4e3d8a41ee Fix T/TE removal list bug
Thanks @Cat6363
2016-05-12 08:55:35 -04:00
Aikar
1850ae22cf unmark chunk as unloading when unload is cancelled
no obviousy bugs caused by this at the moment, but we may need to clean up process to be like
how I use to have it before vanilla did it, and we shouldn't leave this boolean in an invalid state.
2016-05-12 02:07:39 -04:00
Aikar
a1916005e1 Fix chunk unload leak issues due to neighbor updates 2016-05-12 01:55:53 -04:00
Aikar
34fcd8ccc2 Paper 1.9.4 Update 2016-05-11 22:07:46 -04:00
Zach Brown
324bde1f10 Make beacons force secondary potion effect application
Fixes GH-273
Missed case from earlier fix 29dccccac4
2016-05-08 15:33:53 -05:00
Aikar
68f8205a32 Don't save empty scoreboard teams to scoreboard.dat - Fixes #244
While I can't think of any reason to do this except some REALLY weird workflow, I still added a config
to let you save them incase someone runs into issues.
2016-05-07 23:39:22 -04:00
Aikar
e7be15b884 fix bug with lootable API
was returning the NMS instance of objects instead of the Bukkit API objects
2016-05-07 21:16:38 -04:00
Gabscap
b9cdcf1d68 Add null-check to "Entity Tracking Improvement" 2016-05-06 16:09:52 +02:00
Zach Brown
b6da0fdf02 Move this somewhere sane 2016-05-05 20:18:20 -05:00
Zach Brown
da5cd0a63e Revert "Add debug property to disable the watchdog"
This reverts commit d1c470756f962801e7d3bc19bee9440f33a4706e.
2016-05-05 20:10:32 -05:00
Zach Brown
139c4ccf0d Add debug property to disable the watchdog
Use at your own risk, we will not waste our time with support
if your server times out and you cant put 2+2 together to
figure out that its because you killed the watchdoge
2016-05-05 20:02:38 -05:00
Aikar
5c5c2b0a22 Fix hopper suck in patch bug
was checking for ItemStack's instead of EntityItem
2016-05-05 20:22:01 -04:00
Aikar
2570184ba1 Implement getNMSWorld on EntityMinecartContainer
Was missed because the class is abstract and nothing implementing the class was imported in Paper
2016-05-04 20:33:16 -04:00
Aikar
37eafdba1b Entity Tracking Improvements
If any part of a Vehicle/Passenger relationship is visible to a player,
send all passenger/vehicles to the player in the chain.
2016-05-04 20:10:22 -04:00
Aikar
7947dd83ae Do not load chunks for pathfinding 2016-05-04 19:53:33 -04:00
Aikar
3da6be053f LootTable API & Replenishable Lootables Feature
Provides an API to control the loot table for an object.
Also provides a feature that any Lootable Inventory (Chests in Structures)
can automatically replenish after a given time.

This feature is good for long term worlds so that newer players
do not suffer with "Every chest has been looted"

API and Event added to control the Auto Replenish feature for players.
2016-05-01 23:54:08 -04:00
Aikar
496b49861c Rename a Timings class and split up Tracker timings 2016-04-29 21:23:40 -04:00
Aikar
b1e4588ae7 Improve Maps (in item frames) performance and bug fixes
Maps used a modified version of rendering to support plugin controlled
imaging on maps. The Craft Map Renderer is much slower than Vanilla,
causing maps in item frames to cause a noticeable hit on server performance.

This updates the map system to not use the Craft system if we detect that no
custom renderers are in use, defaulting to the much simpler Vanilla system.

Additionally, numerous issues to player position tracking on maps has been fixed.
2016-04-29 20:04:12 -04:00
Aikar
156b1cc524 comment out the other update call instead
otherwise might break stuff
2016-04-27 22:22:35 -04:00
Aikar
1652bda38d Improve Minecraft Hopper Performance
Removes unnecessary extra calls to .update() that are very expensive
Also reset cooldown each hopper tick that a hopper is full.
2016-04-27 22:15:57 -04:00
willies952002
4d7ed88be2 Reimplement PlayerEditBookEvent 2016-04-26 23:00:23 -04:00
Riley Park
f7f0155c11 Add ability to disable, and to set min/max next tick delay, of frosted_ice. Resolves #172 2016-04-21 23:54:34 -07:00
Riley Park
9d57423ba3 Merge pull request #230 from kashike/feature/arrow-pickup
Arrow pickup rule API
2016-04-25 13:27:51 -07:00
Zach Brown
c2407019bf SPIGOT-1401: Fix dispenser/dropper/furnace placement being different from SP 2016-04-24 19:56:04 -05:00
Aikar
8b2f631d9b Fix Player View Distance API corrupting Chunk Sending - Fixes #207
The Player View Distance patch has been screwing with the configured world view distance.

The world a player was created in would set the players view distance, which would be locked to that distance.

Then switching worlds would not give you an updated view distance.

This then caused issues with what view distance the player should have in the chunk map and did not send chunks to the client correctly during movement.

This patch has now been changed to use a -1 default for "default" and will not override view distance until someone has actually used the API to change it.
2016-04-23 21:39:22 -04:00
Aikar
b91603c782 remove potentially bad check 2016-04-23 13:10:55 -04:00
Aikar
73c44798c5 Fix a vanilla bug thats likely causing the mob spawn issues 2016-04-23 12:27:46 -04:00
Aikar
2a2540e76c improve the jackass test 2016-04-23 11:57:39 -04:00
Riley Park
7735f35e04 Fix wrong variable being checked. Fixes #233 2016-04-22 19:02:57 -07:00
Zach Brown
088c935ff4 Check entity count adds and mark entities removed as needed 2016-04-22 20:35:24 -05:00
Zach Brown
2c501cabe6 More involved workaround for vehicle event cancellation 2016-04-22 17:01:28 -05:00
Zach Brown
1ed12cfca6 Fix EntityDismountEvent and VehicleExitEvent cancellation
Perhaps "workaround" would be the better term
2016-04-22 15:45:22 -05:00
Riley Park
a1de1619c6 Arrow pickup rule API 2016-04-22 00:07:16 -07:00
Zach Brown
ebff483051 EntityHealthRegain isFastRegen API 2016-04-22 01:48:49 -05:00
Zach Brown
c385ec89b5 Merge pull request #212 from willies952002/feature/permReload
Also Reload Plugin-Defined Permissions
2016-04-22 00:58:32 -05:00
Zach Brown
08cfefeb50 Update upstream CB and rebuild 2016-04-20 11:58:49 -05:00
willies952002
9762849407 Also Reload Plugin Defined Permissions
Closes https://github.com/PaperMC/Paper/issues/210
2016-04-19 17:29:33 -04:00
Zach Brown
2197b74f38 Re-add PlayerLocaleChangeEvent implementation
Apparently this was missed at some point, likely during the 1.9 update"
2016-04-19 14:24:55 -05:00
Zach Brown
dea3485028 Remove non-zero BlockIterator block and Loading chunks earlier in player TP patches
Allowing only non-zero BlockIterators breaks an API contract explicitly allowing them
(*eyeroll*)

And loading chunks earlier in the TP patch did not resolve the original issue, and now
that it is resolved, shouldn't actually provide any tangible benefits
2016-04-18 09:40:58 -05:00
Aikar
d306bc67aa Prevent Fire from loading chunks
This causes the nether to spam unload/reload chunks, plus overall
bad behavior.
2016-04-17 17:28:16 -04:00
Zach Brown
f44524249f Don't check velocities on Projectiles
Closes GH-217
2016-04-17 13:32:19 -05:00
Aikar
06e483502f Configurable RCON IP address to bind to 2016-04-16 00:46:01 -04:00
Aikar
d46f2997c2 Allow capping number of attempts at spawning mobs
By default, this logic would loop endlessly trying to fill the world
with entities until it hits the worlds spawn.

This patch will cap the # of attempts to so that the tick does not spend
extra long time on mob spawning
2016-04-15 22:35:03 -04:00
Aikar
75eb8243f7 Ensure we actually removed entity from chunk before decrementing counts
If a plugin hacks into NMS and triggers entity removal, it could
result in an entity being attempted to remove from the chunk twice.

The 2nd pass will return false, as it did not find the entity in the list.

We should not touch entity counts if the entity was not removed, to avoid
going negative.
2016-04-15 21:31:12 -04:00
Zach Brown
d42782457e Check the block water mobs spawn in, not the block under 2016-04-15 15:49:39 -05:00
Aikar
82c08cfbda Fix Bugs with Spigot Mob Spawn Logic - Fixes #138
Spigot drastically altered vanilla mob spawn logic and caused a few issues.
1) Used only spawnable chunks vs entire world for entity counting, resulting in ignoring
other entities in the world, and causing the world to go over its intended limit.

Specially with servers using smaller mob spawn ranges than view distance, as well as affects spawning API

2) Spigot was using 16x16 division instead of vanilla 17x17 division.

Issues got worse in 1.9 due to more chunks being loaded due to 1.9 changes, that fall out
of the monster spawn radius.

This patch returns mob counting to use all loaded chunks, and 17x17 division.
2016-04-14 21:03:57 -04:00
Zach Brown
19eb02cab0 Revert "Only check for async callers, do not remove potentially used variables"
This reverts commit 271e7c5cb4.
2016-04-14 19:26:57 -05:00
Zach Brown
9f0a7201a1 Water mobs should only spawn in the water
Closes GH-199
2016-04-14 17:49:11 -05:00
Zach Brown
271e7c5cb4 Only check for async callers, do not remove potentially used variables
Potentially resolves GH-138
2016-04-14 16:48:52 -05:00
Zach Brown
92d86e55ed Merge pull request #205 from kashike/feature/handshake
Add handshake event
2016-04-13 23:10:34 -05:00
Riley Park
30175bcf9d Add handshake event to allow plugins to handle client handshaking logic themselves 2016-04-13 20:23:07 -07:00
Zach Brown
567224a84c Update bungeecord chat API graduations 2016-04-13 22:18:46 -05:00
Zach Brown
0472876995 Re-add Configurable Player Collision
Nothing to see here, move along
2016-04-13 02:11:40 -04:00
Jedediah Smith
1f9d65d57c Fix some players not being kicked on shutdown
Closes GH-8
2016-04-13 16:02:59 -05:00
Jedediah Smith
4588a80cdc Update SB's affectsSpawning API to use filters
Closes GH-169
2016-04-13 15:57:34 -05:00
Aikar
1fc2eb982f Configurable Player Collision - Resolves #161 2016-04-13 02:11:40 -04:00
Aikar
2e00b8d691 Don't tick Skulls - unused code - Fixes #202 2016-04-13 00:32:05 -04:00
Aikar
bfdc936100 Remove unused World Tile Entity List
Massive hit to performance and it is completely unnecessary.
2016-04-13 00:27:38 -04:00
Aikar
e0b057c30f Update PlayerConnection for all teleportation of players
Previous fix for SPIGOT-1903 only applied to world changes, but many other
cases of players been teleporting can cause that same bug. So call it any time
setPosition is called to ensure we never falsely trigger "moved too quickly"

And this commit may be considered evil to some people.
2016-04-12 23:26:42 -04:00
Zach Brown
14f6bee0a1 Update upstream 2016-04-12 11:31:54 -05:00
Aikar
87deb42c1c update MCUtil.cmpFromMessage to use proper JSON 2016-04-11 01:06:28 -04:00
Aikar
b602d093ec SPIGOT-1903: Update PlayerConnection on world change - Fixes #120 2016-04-10 22:36:56 -04:00
Zach Brown
348469459d Ugly workaround for SPIGOT-1915 & GH-114
Closes GH-114
2016-04-10 03:24:54 -05:00
Zach Brown
88d2d15bb4 Apply the Ensure inv drag is in bounds patch properly
Closes GH-174
2016-04-09 21:33:29 -05:00
Zach Brown
5cbb907ff1 Can't expect others to follow formatting if I don't 2016-04-09 13:54:47 -05:00
Zach Brown
b605f1f95f Backport a memory cleanup change from 16w14a 2016-04-09 13:48:06 -05:00
Zach Brown
c7bdf516da Update upstreams and rebuild 2016-04-08 17:24:26 -05:00
Zach Brown
d6b1996ab3 Simplify vanilla scoreboard nickname coloring patch
Closes GH-195
2016-04-07 17:31:06 -05:00
Zach Brown
b9f596b8d2 Add basic support for using vanilla style, world-based, scoreboard name coloring
Closes GH-188
2016-04-06 01:10:26 -05:00
Aikar
1223fcc8bb Include Redstone Torches in the redstone physics event optimization 2016-04-05 23:20:46 -04:00
Aikar
a161d480b4 Remove Debug checks from DataBits
These are super hot and causing noticeable hits

Before: http://i.imgur.com/nQsMzAE.png
After: http://i.imgur.com/nJ46crB.png
2016-04-05 21:55:07 -04:00
Aikar
48ba10bc77 Re-add fastutil map to Chunk map. Amaranth confirmed its faster by 3x 2016-04-05 20:43:11 -04:00
Aikar
0726de949b Fix Nether/End world unloading spawn chunks - Fixes #92 2016-04-05 19:53:30 -04:00
Zach Brown
3506f09ca7 Update upstream and rebuild 2016-04-04 09:53:03 -05:00
Aikar
56de8ba1a4 fix keep spawn loaded config 2016-04-03 23:08:13 -04:00
Aikar
f718f4dbd7 Fix errorneous call of EntityDismountEvent 2016-04-03 19:11:25 -04:00
Aikar
3c0a1bcc25 Fix Cancelling BlockPlaceEvent triggering physics 2016-04-03 17:49:31 -04:00
Aikar
57b915a706 Configurable Keep Spawn Loaded range per world
This lets you disable it for some worlds and lower it for others.
2016-04-03 17:34:15 -04:00
Aikar
746d46f6bb Configurable Grass Spread Tick Rate
Raise this value to make grass spread slower. Set to 0 to turn off grass spreading all together.
2016-04-03 16:29:39 -04:00
Riley Park
7fa8b081c4 Fix reducedDebugInfo not initialized on client 2016-04-03 05:08:46 -05:00
Zach Brown
d7c909b5cb Merge branch 'feature/unknown-use' of https://github.com/kashike/Paper into kashike-feature/unknown-use 2016-04-03 04:52:36 -05:00
Zach Brown
9fe95d850e Mark chunk as active if ChunkUnloadEvent is cancelled
Potentially related to GH-169
2016-04-03 02:02:00 -05:00
Zach Brown
b6e39d3f5c We don't need to go fast anymore 2016-04-03 02:00:35 -05:00
Riley Park
67ec2cd957 Add PlayerUseUnknownEntityEvent 2016-04-02 18:10:38 -07:00
Aikar
9fcb513a2e Update upstream 2016-04-01 22:08:40 -04:00
DemonWav
3125accf7d <~Z750> sex it up for me 2016-04-01 01:54:53 -05:00
Zach Brown
d89da5a2ad gottagofast 2016-04-01 01:33:12 -05:00
Aikar
e5d103dd3f improve implementation of chunk access patch 2016-04-01 00:35:44 -04:00
Aikar
0706403fa6 Fix pom to be compile instead of provided for fastutil 2016-04-01 00:35:21 -04:00
Aikar
1ac9958e8b Move fastutil from a patch file to a library, and improve EAR 2016-04-01 00:18:18 -04:00
Aikar
a4d29fef6a Remove Long2ObjectHashMap for Chunks
Speaking with Amaranth, his point of his implementation was that most
of the lookups are on loaded chunks, so that code is optimized for that case.

While Long2Object should be faster as a general purpose map,
for MC uses, Amaranth's version should be faster. Will try to benchmark
the 2 at some future.
2016-03-31 21:45:30 -04:00
Aikar
809051d050 Fix isEdgeOfChunk check for MCUtils 2016-03-31 21:43:37 -04:00
Aikar
775169422d Update upstream for memory leak patch 2016-03-31 21:43:21 -04:00
Aikar
baf8797e8f Do not load chunks for light checks
Should only happen for blocks on the edge that uses neighbors light level
(certain blocks). In that case, there will be 3-4 other neighbors to get a light level from.
2016-03-31 19:29:06 -04:00
Aikar
8b77debaf3 Fix Massive Memory Leak
Pathfinder objects are storing references to ChunkCache's, and never cleaning up.

These ChunkCache's then leak other entity objects. Those entity objects then have leaks to their
own chunk cache. A recursive problem....

Clean up the ChunkCache reference after it is done being used.
2016-03-31 19:08:27 -04:00
Zach Brown
a01a25ff57 Missed diff, unused config entry, general cleanup
cc GH-170
2016-03-30 22:55:46 -05:00
Aikar
4e89e1f0c7 add null check to getEntity API 2016-03-30 21:56:07 -04:00
Aikar
9fc220ea02 Use paperclip.properties so CI can work 2016-03-30 21:27:13 -04:00
Aikar
f16d938497 Paper 1.9.2 Update 2016-03-30 20:50:23 -04:00
Aikar
fb94038453 Use FastUtil Long/Int HashMap's
For DataWatcher, swap out plain Integer key HashMap for a Int2ObjectOpenHashMap
For ChunkProviderServer, swap out CB's custom LongHashMap with Long2ObjectOpenHashMap

These collections are super fast as seen
http://java-performance.info/hashmap-overview-jdk-fastutil-goldman-sachs-hppc-koloboke-trove-january-2015/
2016-03-30 02:10:27 -04:00
Zach Brown
50811b1ca5 Skip dead entities in getEntity(UUID) API 2016-03-30 09:41:12 -05:00
DemonWav
443a949bac Add getEntity by UUID API 2016-03-30 01:20:36 -05:00
Zach Brown
3a4b55aa5d Put this patch in the patches folder, so it's actually used 2016-03-29 13:56:19 -05:00
Antony Riley
4b5902de92 Sanitise RegionFileCache and make cache size configurable. 2016-03-29 08:27:14 +03:00
Fabse
2a3cfd15eb Add a workaround for bugged Minecart drop names 2016-03-28 00:52:36 +02:00
Aikar
88ef71592b Remove, not invalidate, Metadata on reload
Objects loaded over different class loaders are not the same. Nasty dragons lie here.

Also clean up the previous patch to no longer butcher imports.
2016-03-28 22:43:05 -04:00
Aikar
553319f958 Prevent Waterflow BlockFromToEvent from loading chunks
Many protection plugins would unintentionally trigger chunk loads
by calling .getToBlock() on an unloaded chunk, killing performance.

Simply skip the event call. as CraftBukkit blocks changing the block
of unloaded chunks anyways.

This keeps behavior consistent, vs inconsistent flowing based on plugin triggered loads.
2016-03-28 22:04:43 -04:00
Aikar
2b55c92307 EntityPathfindEvent
Fires when an Entity decides to start moving to a location.

This is not the same as a move event. This only fires when an entity chooses
to start moving to a location, and allows cancelling that pathfind.

Additionally, only get is supported for now. Unsure if changing target location
is safe to do.
2016-03-28 21:24:45 -04:00
Aikar
0623a754d8 Add MCUtils helper
This will be used by my next commit. But trying to get the build going
since CI blew up
2016-03-28 21:01:42 -04:00
Aikar
1180a5dd87 And AddTo is a different event than RemoveFrom 2016-03-28 20:58:42 -04:00
Aikar
dab09d46bc Actually fire those events 2016-03-28 20:57:15 -04:00
Aikar
9148dbbf4a Configurable Chunk Inhabited Timer
Vanilla stores how long a chunk has been active on a server, and dynamically scales some
aspects of vanilla gameplay to this factor.

For people who want all chunks to be treated equally, you can disable the timer.
2016-03-28 20:47:46 -04:00
Aikar
a661a1737f Entity AddTo/RemoveFrom World Events
These events will give plugins a reliable way to track every entity that is added
or removed from a world, so that one may always ensure they are in a desired state.
2016-03-28 20:33:10 -04:00
Aikar
2e4f0cb627 Option to disable BlockPhysicsEvent for Redstone
Not sure of any reason a plugin would need to act on a Physics event
for redstone. There is a BlockRedstoneEvent that plugins can also use
for accessing redstone activity.

Defaulting this to false will provide substantial performance improvement
by saving millions of event calls on redstone heavy servers.
2016-03-28 19:57:13 -04:00
Zach Brown
51c738e817 Don't set spawn world in PlayerInitialSpawnEvent
Fixes GH-85 and GH-157
2016-03-28 13:00:44 -05:00
Zach Brown
010e7652b3 Fix player tab list API 2016-03-28 10:41:04 -05:00
Zach Brown
587aaefcc4 Update upstream B/CB/Spigot and rebuild 2016-03-27 20:48:50 -05:00
Zach Brown
4634458d72 Check async spawn chunk check, remove unused variables, GH-159 2016-03-27 20:31:23 -05:00
DemonWav
4e5569e6cd Add same infi-loop fix to other identical block of code I missed earlier 2016-03-27 05:42:02 -05:00
Zach Brown
8ec0ce4b89 Merge pull request #153 from kashike/feature/slot
Access items by EquipmentSlot
2016-03-27 02:24:12 -05:00
Zach Brown
1109dc8d70 Update upstream and rebuild 2016-03-27 01:38:58 -05:00
Riley Park
d880c248bf Access items by EquipmentSlot 2016-03-26 22:23:42 -07:00
DemonWav
92aa154184 Prevent possible infinite loop in BlockPosition iterator 2016-03-26 21:38:36 -05:00
Gabscap
3ed9c2917e Load chunk before player teleport - Fixes #147 2016-03-26 18:45:15 +01:00
Zach Brown
32ac0a9a4b Pull in ArrowPickupItemEvent and legacy dataconverter fix from SportBukkit 2016-03-26 03:38:02 -05:00
Zach Brown
95adcf7863 Merge upstream changes and rebuild patches 2016-03-25 18:21:38 -05:00
Byteflux
5532826f02 Entity#getOrigin() should return a cloned Location 2016-03-25 09:39:37 -07:00
Byteflux
fc3f55ddc8 Always try to load entity origin location from new NBT tag 2016-03-25 09:32:09 -07:00
Byteflux
bcc957e753 Add Entity Origin API
This replaces the TNT and Falling Block Source Location API with a more
general purpose API that works with all entities.
2016-03-25 02:02:35 -07:00
Zach Brown
eb5c119269 Re-add TileEntity removal list, fix build 2016-03-25 02:50:56 -05:00
Byteflux
cadf65501b Fix timings config being removed by another patch 2016-03-24 23:46:53 -07:00
Byteflux
dd60ba4869 Add Lighting Queue
The lighting queue spreads out the processing of light updates across
multiple ticks based on how much free time the server has left at the end
of the tick.
2016-03-24 23:38:38 -07:00
Byteflux
fc2341a996 Relocate Timings v2 patch 2016-03-24 21:59:37 -07:00
Byteflux
d242dca587 Fix decompile errors in mc-dev imports patch 2016-03-24 19:57:01 -07:00
Gabscap
8fa4818d1b rebuild 2016-03-25 02:23:23 +01:00
Zach Brown
926ba9a3bb Update upstream B/CB
Remove patch 0099: Pulled into upstream CraftBukkit
2016-03-24 01:39:29 -05:00
Aikar
6f4bf57aa0 remove blockstate cache patch 2016-03-23 21:19:45 -04:00
Zach Brown
d1afdd87f4 Clean up title and tab list patch
Remember kids, the Ballmer peak is hard to hit https://xkcd.com/323/
Finally fixes #126 and #94 (I tested, it does, please, really, promise)
2016-03-23 01:05:09 -05:00
Aikar
7ab893447a Optimize isValidLocation for inlining - Resolves #123 2016-03-22 23:44:46 -04:00
Aikar
97e083b9b0 Setting the cache is important to access a cache 2016-03-22 23:44:35 -04:00
Zach Brown
fb05841421 How does typing work?
Closes GH-125
2016-03-22 14:55:42 -05:00
Zach Brown
71d9f402d5 Configurable spawn chances for skeleton horses
Closes feature request GH-111
2016-03-22 12:07:16 -05:00
Aikar
95b9e1e6f2 Optimize Chunk Access
getting a loaded chunk is one of the most hottest pieces of code in the game.
Often, getChunkAt is called for the same chunk multiple times in a row, often
from getType();

Optimize this look up by using a Last Access cache.
2016-03-22 01:46:32 -04:00
Aikar
87ebc85c3c Don't teleport dead entities
Had some issue with this in past, and this is the vanilla logic.
Potentially an old CB change that's no longer needed.
2016-03-22 00:56:09 -04:00
Aikar
bd75ff8b5b Use a Shared Random for Entities
Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created.
2016-03-22 00:36:20 -04:00
Gabscap
100cd60c65 Add "Waving banner workaround" 2016-03-21 15:34:09 +01:00
Aikar
d24502015a Make Chunk IO Thread Base count configurable 2016-03-21 23:51:58 -04:00
Aikar
37afe5e662 Fix skull cache case bug
missing cache hits on players with uppercase letters in name
2016-03-21 23:38:24 -04:00
Aikar
8abad348b6 Cache BlockState for Blocks
Improve performance for many plugins that call .getState() multiple
times for things like signs that have to "build" sign data.
2016-03-21 23:38:19 -04:00
Aikar
ae95189944 Another attempt at unload queue, including EAR improvements.
should be fully working now as I pretty much fell back to existing
methods so anything touching the unloadQueue set should behave correctly.

And maintained NMS Reflection safe change too
2016-03-21 22:51:14 -04:00
Aikar
9300f163fd fix rebuild patches and rebuild current patches 2016-03-21 20:46:54 -04:00
Daniel Ennis
4916cd2551 Merge pull request #91 from willies952002/feature/permReload
Allow Reloading of Custom Permissions - resolves #49
2016-03-21 20:24:27 -04:00
Zach Brown
044d463764 Use singleton in Village class to work around null issue that evades 2016-03-21 10:28:45 -05:00
Zach Brown
d4ba72a83f Support offline mode from the whitelist command
Closes GH-79
2016-03-21 00:53:32 -05:00
Zach Brown
71f8b70f10 Also handle original end case that spawned the issue
Final commit for GH-96 if there's any justine in the world
2016-03-20 23:15:37 -05:00
Zach Brown
c0d5c00a34 Merge pull request #118 from Techcable/fix/spigot-title-compatibility
Fix backwards compatibility with spigot title api
2016-03-20 22:53:57 -05:00
Techcable
acad27e9e7 Fix backwards compatibility with spigot title api
I shouldn't have assumed their api was anything other but a thin (and incomplete) wrapper over the packets.

Fixes #94
2016-03-20 20:45:13 -07:00
Zach Brown
614aee73bc Only mark player as invulnerable if they're actually changing worlds
Fixes GH-96
2016-03-20 22:38:31 -05:00
Zach Brown
84b79f3f41 Only mark player as invulnerable if they're going to the end
cc GH-96
2016-03-20 19:44:49 -05:00
Daniel Ennis
1098519c4d Catch Async PlayerChunkMap operations - Fixes #113 2016-03-20 15:24:24 -04:00
Aikar
6acff7d61d Disable Chunk Unload Queue Patch for now 2016-03-20 00:53:34 -04:00
Aikar
0b26bbd451 handle NaN health/absorb values and repair bad data
Undoes damage from Damage API bugs
2016-03-20 00:35:02 -04:00
Aikar
db0f31134f Improve chunk unload queue to maintain some previous expectations
While the previous logic was logically correct, some CB API's before
would request a chunk without removing it from the unload queue.

While this is logically wrong, some plugins seem to be causing unload issues.

This change will make anything using that one API that use to not remove from
queue, no longer remove from queue.

Hopefully other activities on the server will touch the chunk if it REALLY is in use.
2016-03-20 00:13:20 -04:00
Zach Brown
a424df3323 Update upstream and rebuild patches 2016-03-19 20:20:25 -05:00
Zach Brown
85451753d1 Remove patch pulled upstream and rebuild patches 2016-03-19 17:52:09 -05:00
William
13587006dc Allow Reloading of Custom Permissions
Add the ability to reload the custom permissions file by doing "/reload permissions"

Implements Feature Request: https://github.com/PaperMC/Paper/issues/49
2016-03-19 16:19:00 -04:00
Riley Park
0a9d183bd4 Set health before death event 2016-03-19 10:12:30 -07:00
Riley Park
6d01d7f9ea Custom replacement for eaten items 2016-03-19 09:57:19 -07:00
Aikar
d1c4507c9c Fixes #95 - Vanilla bug with Villages 2016-03-19 15:21:39 -04:00
Zach Brown
67a3d9cb57 Merge pull request #101 from DemonWav/master
Revert Spigot changes to blocking damage code
/me glances at imports
/me will fix later
2016-03-19 12:25:22 -05:00
DemonWav
4e7056af65 Revert Spigot changes to blocking code, fix issue where entities cannot die 2016-03-19 12:20:27 -05:00
Aikar
7efe31a331 Fix chunk unload issues - Resolves #97 2016-03-19 11:29:46 -04:00
Aikar
bb82a8a401 forgot to rebuild after last light change, another fix 2016-03-19 10:57:22 -04:00
Aikar
e59f9ab2e6 fix light level check on monsters 2016-03-19 10:45:28 -04:00
Aikar
d72abafa8f Optimized Light Level Comparisons
Use an optimized method to test if a block position meets a desired light level.

This method benefits from returning as soon as the desired light level matches.

Also Optimize Grass more
2016-03-18 23:55:31 -04:00
Zach Brown
eaccfc64b2 Re-add comment to navigation patch 2016-03-18 21:41:50 -05:00
Zach Brown
3727b119f2 Update upstream and rebuild patches 2016-03-18 21:37:58 -05:00
Zach Brown
659c43c6f3 Fix furnace cook time bug 2016-03-18 21:32:31 -05:00
Zach Brown
c7fec9299a Make spawner nerfed mobs float AI toggleable
closes GH-57
2016-03-18 21:10:20 -05:00
Zach Brown
29dccccac4 Force potion effect application in BeaconEffectEvent 2016-03-18 20:45:22 -05:00
Aikar
80dcb6c4a3 Optimize BlockStateList/BlockData
Mojang included some sanity checks on arguments passed to the BlockData.
This code results in the Hash look up occuring twice per call, one to test if it exists
and another to retrieve the result.

This code should ideally never be hit, unless mojang released a bad build. We can discover bugs with this as furthur code that never expects a null
would then NPE, so it would not result in hidden issues.

This is super hot code, so removing those checks should give decent gains.
2016-03-18 19:25:43 -04:00
Aikar
11a3044c3c Optimize Chunk Unload Queue
Removing chunks from the unload queue when performing chunk lookups is a costly activity.

It drastically slows down server performance as many methods call getChunkAt, resulting in a bandaid
to skip removing chunks from the unload queue.

This patch optimizes the unload queue to instead use a boolean on the Chunk object itself to mark
if the chunk is active, and then insert into a LinkedList queue.

The benefits here is that all chunk unload queue actions are now O(1) constant time.

A LinkedList will never need to resize, and can be removed from in constant time when
used in a queue like method.

We mark the chunk as active in many places that notify it is still being used, so that
when the chunk unload queue reaches that chunk, and sees the chunk became active again,
it will skip it and move to next.
2016-03-18 18:03:44 -04:00
Zach Brown
bccbc72945 Move config change into config patch 2016-03-18 16:41:26 -05:00
Aikar
57be47c2d1 Add comment to Navigation patch on why its done that way
to avoid accidently changing it in future and breaking things
2016-03-18 17:12:30 -04:00
Aikar
af73f87c66 Remove checkIfActive timings
Unneeded and adds extra timings cost to every entity tick
2016-03-18 17:11:53 -04:00
Aikar
3ce3b26186 Configurable Non Player Arrow Despawn Rate
Can set a much shorter despawn rate for arrows that players can not pick up.
2016-03-18 15:13:03 -04:00
Aikar
32a3169a1f Handle Item Meta Inconsistencies
First, Enchantment order would blow away seeing 2 items as the same,
however the Client forces enchantment list in a certain order, as well
as does the /enchant command. Anvils can insert it into forced order,
causing 2 same items to be considered different.

This change makes unhandled NBT Tags and Enchantments use a sorted tree map,
so they will always be in a consistent order.

Additionally, the old enchantment API was never updated when ItemMeta
was added, resulting in 2 different ways to modify an items enchantments.

For consistency, the old API methods now forward to use the
ItemMeta API equivalents, and should deprecate the old API's.
2016-03-18 14:56:16 -04:00
Aikar
944a964300 Fix Furnace cook time bug
If the server lags out and skips multiple ticks, Furnace cooking behavior would not
cook in the expected amount of time as the cook time was not decremented correctly.

This patch ensures that furnaces cook to the correct wall time expectation.
2016-03-18 14:27:53 -04:00
Aikar
91b4746fe0 Undead horse leashing
default false to match vanilla, but option to allow undead horse types to be leashed.
2016-03-18 14:20:11 -04:00
Aikar
63b6980015 Invalidate Metadata on reload
Metadata is not meant to persist reload as things break badly with non primitive types
This will invalidate metadata on reload so it does not crash everything if a plugin uses it.
2016-03-18 13:50:33 -04:00
Aikar
9da9b3a9d0 reduce sleep rate if file io thread sleep is enabled
so we will still give it time to sleep to avoid the issue, but reduce the
known negative effects of that sleeping.
2016-03-18 13:40:46 -04:00
Aikar
4d317d0ebe Default loading permissions.yml before plugins
Under previous behavior, plugins were not able to check if a player had a permission
if it was defined in permissions.yml. there is no clean way for a plugin to fix that either.

This will change the order so that by default, permissions.yml loads BEFORE plugins instead of after.

This gives plugins expected permission checks.

It also helps improve the expected logic, as servers should set the initial defaults, and then let plugins
modify that. Under the previous logic, plugins were unable (cleanly) override permissions.yml.

A config option has been added for those who depend on the previous behavior, but I don't expect that.
2016-03-18 13:23:48 -04:00
Aikar
3ad0e63a21 set default goals on all pom poms </cheer> 2016-03-18 02:13:51 -04:00
Aikar
0316152120 Chunk Save Reattempt
Sometimes a chunk region file is closed prematurely, resulting in a "Stream Closed" error on chunk saving.
Ultimately there is a race condition that causes it, but re-trying the save will avoid the issue.

Retry the save 5 times to try our best to avoid rollbacks due to chunk save failures.
2016-03-18 01:35:26 -04:00
Zach Brown
14d5dba144 Upstream changes 2016-03-17 23:29:51 -05:00
Techcable
a8d725eb23 Don't pass null title to constructor
Fixes #83
Fix resetTitle()
@Zbob750 shouldn't be doing these updates in the middle of the night
2016-03-16 18:58:48 -07:00
Zach Brown
59ca434484 Someone questioned my professionality today 2016-03-16 02:57:49 -05:00
Zach Brown
2a6b5b76de Fix the end credits toggle
I think its pretty clear that no one uses this given that it didn't work at all before
2016-03-16 02:21:39 -05:00
Aikar
82452cd373 Re-add chunk save queue improvements 2016-03-12 14:23:17 -06:00
Zach Brown
d230ac7ef2 Re-add Spigot's hopper-check feature
Closes GH-77
2016-03-12 13:41:26 -06:00
Zach Brown
a9f44f2240 Rebuild some patches 2016-03-12 00:40:16 -06:00
Zach Brown
716993c750 Fix BeaconEffectEvent
It is no longer 5 am
2016-03-11 20:36:47 -06:00
Zach Brown
67ae849417 Merge pull request #73 from kashike/feature/you-are-very-resourceful-you-know-yes-you-are-very-resourceful-yes 2016-03-09 19:45:55 -06:00
Zach Brown
4fba7d5bdc Merge pull request #71 from kashike/feature/what-are-these-pokey-things-OH-MY-GOD-HELP-THEY-HURT 2016-03-09 19:44:18 -06:00
Riley Park
a80a692e2b Add more complete resource pack API 2016-03-08 22:23:59 -08:00
Zach Brown
74b4a248ab Merge pull request #70 from starlis/fixCollisionLag
Disable Scoreboards for non players by default
2016-03-08 22:58:36 -06:00
Aikar
a1403cb641 Disable Scoreboards for non players by default
Entities collision is checking for scoreboards setting.
This is very heavy to do map lookups for every collision to check
this setting.

So avoid looking up scoreboards and short circuit to the "not on a team"
logic which is most likely to be true.
2016-03-08 23:42:08 -05:00
Riley Park
0eb02b3760 Add methods for working with arrows stuck in living entities 2016-03-08 20:21:08 -08:00
Riley Park
875d85b3ec Don't nest if we don't need to when cerealising text components 2016-03-08 18:29:39 -08:00
Aikar
ed8ebbc98a Improve NavigationListener patches.
reduces diff and cleans up implementation of goals greatly.
2016-03-08 19:31:47 -05:00
Zach Brown
4ff94ab64e Forcibly disable async light updates for the time being 2016-03-08 16:23:28 -06:00
Aikar
627ccd793f Optimize NavigationListener Iteration
I don't know what the person who wrote that code was smoking, but I
don't think it was good.

Gets rid of the WeakHashMap that mojang was abusing purely to be lazy
on clean up, and handles registering and deregistering navigation
upon world add/remove operations.
2016-03-07 22:59:12 -05:00