Commit graph

560 commits

Author SHA1 Message Date
Zach Brown 68cdc4fa90
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:41:11 -05:00
Aikar ce9e19cfed 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 2e57c5774e
Don't check velocities on Projectiles
Closes GH-217
2016-04-17 13:32:19 -05:00
Aikar 8ba4b64739 Configurable RCON IP address to bind to 2016-04-16 00:46:01 -04:00
Aikar ba9266a37b 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 845090e570 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 8672653871
Check the block water mobs spawn in, not the block under 2016-04-15 15:49:39 -05:00
Aikar 77cdcc281b 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 794a848857
Revert "Only check for async callers, do not remove potentially used variables"
This reverts commit da7320fc42.
2016-04-14 19:26:57 -05:00
Zach Brown 8ccd31ed38 Water mobs should only spawn in the water
Closes GH-199
2016-04-14 18:06:29 -05:00
Zach Brown da7320fc42 Only check for async callers, do not remove potentially used variables
Potentially resolves GH-138
2016-04-14 16:48:52 -05:00
Zach 2924ae631e Merge pull request #205 from kashike/feature/handshake
Add handshake event
2016-04-13 23:10:34 -05:00
kashike 66d3688b39
Add handshake event to allow plugins to handle client handshaking logic themselves 2016-04-13 21:12:57 -07:00
Zach Brown d07eac31bc
Update bungeecord chat API graduations 2016-04-13 22:21:42 -05:00
Zach Brown 0084b02703
Re-add Configurable Player Collision
Nothing to see here, move along
2016-04-13 16:12:44 -05:00
Jedediah Smith 7ab9a51731 Fix some players not being kicked on shutdown
Closes GH-8
2016-04-13 16:04:21 -05:00
Jedediah Smith 15cdfc7472 Update SB's affectsSpawning API to use filters
Closes GH-169
2016-04-13 16:03:49 -05:00
Aikar 4ee5d3eb31 Configurable Player Collision - Resolves #161 2016-04-13 02:11:40 -04:00
Aikar d98f9cc5ae Don't tick Skulls - unused code - Fixes #202 2016-04-13 00:32:05 -04:00
Aikar e177666bfb Remove unused World Tile Entity List
Massive hit to performance and it is completely unnecessary.
2016-04-13 00:27:38 -04:00
Aikar 3f68b7f930 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 189235906d
Update upstream 2016-04-12 11:31:54 -05:00
Zach Brown ef3f6a481a
Update upstreams 2016-04-11 10:30:12 -05:00
Aikar a0d38c0b55 update MCUtil.cmpFromMessage to use proper JSON 2016-04-11 01:06:28 -04:00
Aikar 8f89e0f84c SPIGOT-1903: Update PlayerConnection on world change - Fixes #120 2016-04-10 22:36:56 -04:00
Zach Brown a3358b1915
Ugly workaround for SPIGOT-1915 & GH-114
Closes GH-114
2016-04-10 03:24:54 -05:00
Zach Brown 6fc0a013a5
Apply the Ensure inv drag is in bounds patch properly
Closes GH-174
2016-04-09 21:33:29 -05:00
Zach Brown a97fe29d9d
Can't expect others to follow formatting if I don't 2016-04-09 13:54:47 -05:00
Zach Brown 4ed5672cd9
Backport a memory cleanup change from 16w14a 2016-04-09 13:50:56 -05:00
Zach Brown 38d2939ff1
Update upstreams and rebuild 2016-04-08 17:24:26 -05:00
Zach Brown 44a1d43781
Simplify vanilla scoreboard nickname coloring patch
Closes GH-195
2016-04-07 17:31:09 -05:00
Zach Brown 6b75dac6f4
Add basic support for using vanilla style, world-based, scoreboard name coloring
Closes GH-188
2016-04-06 01:10:26 -05:00
Aikar 11d1937145 Include Redstone Torches in the redstone physics event optimization 2016-04-05 23:20:46 -04:00
Aikar 539e1e024c 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 cdd926c1e9 Re-add fastutil map to Chunk map. Amaranth confirmed its faster by 3x 2016-04-05 20:43:11 -04:00
Aikar 8e68f444f1 Fix Nether/End world unloading spawn chunks - Fixes #92 2016-04-05 19:53:30 -04:00
Zach Brown bce92696c6 Update upstream and rebuild 2016-04-04 09:53:03 -05:00
Aikar 94fd16aa4a fix keep spawn loaded config 2016-04-03 23:08:13 -04:00
Aikar 62071aad36 Fix errorneous call of EntityDismountEvent 2016-04-03 19:11:25 -04:00
Aikar d46dec88b4 Fix Cancelling BlockPlaceEvent triggering physics 2016-04-03 17:49:31 -04:00
Aikar e11a8f0bd5 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:38 -04:00
Aikar 47221671ba 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
kashike 73fc582824 Fix reducedDebugInfo not initialized on client 2016-04-03 05:09:42 -05:00
Zach Brown f6782d5738 Rebuild 2016-04-03 05:06:48 -05:00
Zach Brown d463cc6139 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 2f79610112 Mark chunk as active if ChunkUnloadEvent is cancelled
Potentially related to GH-169
2016-04-03 02:02:06 -05:00
Zach Brown bb265b967d We don't need to go fast anymore 2016-04-03 02:00:35 -05:00
kashike 871920f2f5 Add PlayerUseUnknownEntityEvent 2016-04-02 18:10:41 -07:00
Aikar cd3d8fb27e Update upstream 2016-04-01 22:08:40 -04:00
DemonWav 2b99b1095e <~Z750> sex it up for me 2016-04-01 01:59:59 -05:00
Zach Brown d8c6c41507 gottagofast 2016-04-01 01:33:12 -05:00
Aikar 081420d738 improve implementation of chunk access patch 2016-04-01 00:35:44 -04:00
Aikar c0e1410682 Fix pom to be compile instead of provided for fastutil 2016-04-01 00:35:21 -04:00
Aikar c92ce02363 Move fastutil from a patch file to a library, and improve EAR 2016-04-01 00:18:18 -04:00
Aikar 78202f87b7 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 22:17:33 -04:00
Aikar d03da137f2 Fix isEdgeOfChunk check for MCUtils 2016-03-31 22:17:33 -04:00
Aikar 578af64827 Update upstream for memory leak patch 2016-03-31 21:47:17 -04:00
Aikar dea2d41b86 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 0ba94906ad 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 fb52abdf7e Upstream merge CB, rebuild patch 2016-03-31 12:58:20 -05:00
Zach Brown 582ad801b5 Missed diff, unused config entry, general cleanup
cc GH-170
2016-03-30 22:56:30 -05:00
Aikar 3b2d6fd59e add null check to getEntity API 2016-03-30 21:56:07 -04:00
Aikar fb74f6dbfd Use paperclip.properties so CI can work 2016-03-30 21:27:13 -04:00
Aikar 38df6e505c Paper 1.9.2 Update 2016-03-30 20:50:23 -04:00
Aikar f051ea2ab3 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 09:43:11 -05:00
Zach Brown a785a9460e Skip dead entities in getEntity(UUID) API 2016-03-30 09:41:12 -05:00
DemonWav 4bf9c3c177 Add getEntity by UUID API 2016-03-30 01:20:36 -05:00
Zach Brown d46c56abf0 Put this patch in the patches folder, so it's actually used 2016-03-29 13:56:19 -05:00
Antony Riley af65eaaa3b Sanitise RegionFileCache and make cache size configurable. 2016-03-29 19:09:43 +03:00
Fabse d71444f966 Add a workaround for bugged Minecart drop names 2016-03-28 22:41:27 -05:00
Aikar 48dff29f31 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 c09424fd33 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:05:22 -04:00
Aikar b99e8381ab 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 9ff01b16ab 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 fb3834f805 And AddTo is a different event than RemoveFrom 2016-03-28 20:58:42 -04:00
Aikar 53309e9172 Actually fire those events 2016-03-28 20:57:15 -04:00
Aikar 89c912061b 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 22b248d631 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 030de0f42a Update upstream 2016-03-28 20:27:56 -04:00
Aikar d52a49cfa1 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 0363644455 Don't set spawn world in PlayerInitialSpawnEvent
Fixes GH-85 and GH-157
2016-03-28 13:00:47 -05:00
Zach Brown 249e52e7a8 Fix player tab list API 2016-03-28 10:41:04 -05:00
Zach Brown b210aa7dfe Update upstream B/CB/Spigot and rebuild 2016-03-27 20:48:50 -05:00
Zach Brown bf877b9a72 Check async spawn chunk check, remove unused variables, GH-159 2016-03-27 20:31:23 -05:00
DemonWav 34973fe898 Add same infi-loop fix to other identical block of code I missed earlier 2016-03-27 05:42:02 -05:00
Zach 5108183346 Merge pull request #153 from kashike/feature/slot
Access items by EquipmentSlot
2016-03-27 02:24:12 -05:00
Zach Brown 85ee80938b Update upstream and rebuild 2016-03-27 01:40:17 -05:00
kashike eeb64630cd Access items by EquipmentSlot 2016-03-26 22:23:42 -07:00
DemonWav ef3d40bf2a Prevent possible infinite loop in BlockPosition iterator 2016-03-26 22:06:33 -05:00
Gabscap f356b447b7 Load chunk before player teleport - Fixes #147 2016-03-26 19:05:31 +01:00
Zach Brown 79c54e4434 Pull in ArrowPickupItemEvent and legacy dataconverter fix from SportBukkit 2016-03-26 03:38:02 -05:00
Zach Brown 47b71ea411 Update upstream CB/Spigot
cc GH-146
2016-03-26 01:38:02 -05:00
Zach Brown 451ede36cf Merge upstream changes and rebuild patches 2016-03-25 18:21:38 -05:00
Byteflux 8b76c66f4b Entity#getOrigin() should return a cloned Location 2016-03-25 09:39:58 -07:00
Byteflux 5bd7a9ab62 Always try to load entity origin location from new NBT tag 2016-03-25 09:32:20 -07:00
Byteflux ced183982a 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:24:27 -07:00
Zach Brown a6a5b12b9e Re-add TileEntity removal list, fix build 2016-03-25 02:50:56 -05:00
Zach Brown dab9d40bfd Update upstream CB 2016-03-25 02:30:39 -05:00
Byteflux 074838e0f3 Fix timings config being removed by another patch 2016-03-24 23:46:53 -07:00
Byteflux 3fd3544a36 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