Commit graph

2033 commits

Author SHA1 Message Date
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
0a01580011 Upstream merge CB, rebuild patch 2016-03-31 12:58:20 -05: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
82b10bbf43 use original paperclip name 2016-03-30 20:53:39 -04:00
Aikar
f16d938497 Paper 1.9.2 Update 2016-03-30 20:50:23 -04:00
Zach Brown
e96190ed9e Update CB/Spigot : Add 1.9.2 protocol
/me rolls eyes
2016-03-30 11:03:20 -05:00
Zach Brown
bb5359725b Update CB/Spigot : Add 1.9.1 protocol 2016-03-30 10:15:07 -05: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
Zach Brown
572da383b9 Merge pull request #167 from DemonWav/getentity
Add getEntity by UUID API
2016-03-30 01:30:29 -05:00
DemonWav
443a949bac Add getEntity by UUID API 2016-03-30 01:20:36 -05:00
Aikar
e007d80c16 Move Timings v2 TimingHandler to FastUtil Int map 2016-03-30 01:59:47 -04:00
Aikar
092dbc4bea Add Minimal FastUtil int/long collections.
Importing the full library would double the jar size... its way too large.
So lets just import the basic int/long based collections to then use
to improve performance on these kind of collections.
2016-03-30 01:57:56 -04:00
Aikar
aceb2cf3b5 Update contributing information to be more accurate 2016-03-30 01:03:27 -04:00
Zach Brown
3a4b55aa5d Put this patch in the patches folder, so it's actually used 2016-03-29 13:56:19 -05:00
Zach Brown
0c7a0d7c98 Merge pull request #163 from cybertiger/region-file-cache
Sanitise RegionFileCache and make cache size configurable.
2016-03-29 11:15:30 -05:00
Zach Brown
a3b6db55c2 Merge pull request #162 from cybertiger/region-file-io-ops
Reduce IO ops opening a new region file.
2016-03-29 11:15:23 -05:00
Antony Riley
4b5902de92 Sanitise RegionFileCache and make cache size configurable. 2016-03-29 08:27:14 +03:00
Aikar
f3f0cb6bb2 Link to contributing for PR section 2016-03-29 00:07:27 -04:00
Aikar
314d1711d5 update README for PR instructions 2016-03-28 23:59:04 -04:00
Antony Riley
337de6e8af Reduce IO ops opening a new region file. 2016-03-29 06:57:26 +03:00
Zach Brown
3685425eaa Merge pull request #158 from Minefabser/fix-minecart 2016-03-28 22:41:54 -05:00
Aikar
6e496985f5 Update upstream 2016-03-28 23:19:49 -04: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
7d7810721e Remove last patch, doesn't exactly do what I thought it was doing 2016-03-28 22:28:52 -04:00
Aikar
a3d5c47c8a Remove Invalidated Metadata
Bukkit was using an unimplemented method to invalidate plugin meta.
2016-03-28 22:15:23 -04:00
crast
97c1f9402f Reduce thread synchronization in MetadataStoreBase
Use ConcurrentHashMap to allow thread-safe access methods and very
limited synchronized portions to allow much higher concurrency in
MetadataStore as well as far less locking, especially on reads
2016-03-28 22:10:01 -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
7c38e54a9d Remove some code from Timings v2 that was only for EMC. 2016-03-28 21:41:17 -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
b442921643 Update module urls 2016-03-28 20:38:51 -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
56d7782945 Update upstream 2016-03-28 20:26:11 -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
35fa26813f Update upstream B/CB
Notably to limit byte array length
2016-03-28 15:21:26 -05:00