and allow changing of a players selected slot with
PacketPlayOutHeldItemChange.
Also introduces an event that can be used to change or cancel a player's
selected slot change.
I tried to follow the style and mannerisms of existing code, but what's
up with the Unsafe class? The class is okay, but why are the methods
named as such? Having all the methods named 'a' will be sure to cause
conflict once two methods take the same parameters.