Commit graph

540 commits

Author SHA1 Message Date
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