This pr reverts a change made in 2012 which allowed CraftItem to be a also other entities such as an arrow.
I don't see any practical reason why the original change was done, other than to allow plugin developers to do some stuff in a cursed way.
With the introduction of the PlayerPickupArrowEvent in 2016 there is also a way to access the arrow involved in a better way.
Generally I think the current behavior is a bit strange and should be reverted.
Changed assignment of pickup delays in such a way that they may not be larger than the value actually stored inside the NBT format that is Short.MAX_VALUE. Did not change method signature in order not to produce any shortening cast warnings in existing code. All values larger than 32767 are generally used to indicate that an item should never be picked up. Shortening this to 32767 will actually cause the pickup delay to never decrease, thus resulting in non-pickupable item stacks.
This should fix many issues with enchantments being lost, as the method used takes care of enchantments.
Additionally, use the new nms ItemStack constructor in places where appropriate.
Fixes (at least part of) BUKKIT-7. Need to identify any further places to fix.
Also, standardise getHandle and clean up in general.
getHandle is now using the 'entity' member variable instead of
super.getHandle, as this reduces the number of chained calls needed.