Use correct SlotType's for merchants. Fixes BUKKIT-2257
Call PlayerQuitEvent in correct location. Fixes BUKKIT-2193
Removed unneeded mc-dev imports. Fixes BUKKIT-682
Don't extend pistons until data is set. Fixes BUKKIT-2153
Add CrashReport for diff visiblity
Add more detailed CrashReport for CraftBukkit. Addresses BUKKIT-2319
Fix issues with chunk saving. Fixes BUKKIT-2158, BUKKIT-2018 and BUKKIT-2229
Updated version to 1.3.1-R2.0 in pom.xml for RB.
Updated version to 1.3.1-R2.1-SNAPSHOT for development towards next release.
Add files from mc-dev for diff visibility
[Bleeding] Optimize chunk loading

ChunkSection.e() is called once per chunk section loaded and is quite
expensive (about 20% of CPU time for loading the chunk). This changes the
logic to add a fast path when extended block data is not being used and
reorganizes the loops for more optimal array traversal. Overall this saves
about 20-30% CPU time in this method.
Add iterator cache to UnsafeList and use it in hotspots

Adds a specialized iterator for the list and a pool of iterators to avoid
object churn. Also optimizes the clear() method to reduce object creation.
Optimize entity AI goal selector

Remove redundant ArrayList to avoid excessive object creation and CPU
overhead, the entries are added to the list then immediately iterated through
to run so just run them directly.

Swap order of some conditionals to perform the more efficient check first
as if it fails the list lookup will not be executed.

Remove profiling hooks including some rather expensive calls to getSimpleName.
[Bleeding] Change Vec3DPool to a stack based pool

Avoid overhead of using an ArrayList and resizing it. Also allows for reuse
of objects in the pool during the same tick by explicitly releasing them
back to the pool. This allows for much better cache performance as well
as reduced cache footprint.
Use TrigMath in hotspots

Use our implementation of atan2 in AI routines as profiling shows these are
hotspots and (for these cases) our implementation is much faster.
Add LongObjectHashMap and LongHashSet

Replace uses of LongHashtable and LongHashset with new implementations.
Remove EntryBase, LongBaseHashtable, LongHashset, and LongHashtable as they
are no longer used.

LongObjectHashMap does not use Entry or EntryBase classes internally for
storage so has much lower object churn and greater performance. LongHashSet
is not as much of performance win for our use case but for general use is
up to seventeen times faster than the old implementation and is in fact
faster than alternatives from "high performance" java libraries. This is
being added so that if someone tries to use it in the future in a place
unrelated to its current use they don't accidentally end up with something
slower than the Java collections HashSet implementation.
[Bleeding] Remove redundant chunkList from ChunkProviderServer

This ArrayList duplicates part of the functionality of the much more
efficient chunk map so can be removed as the map can be used in the few
places this was needed.
[Bleeding] Cache packet ID instead of doing lookups each time it is needed
[Bleeding] Strip out unused HashSet in IntHashMap
[Bleeding] Stub out MethodProfiler class

Instead of trying to track down every place this class is used we can
simply stub out the entire class so it has no extra overhead.