* (improvement) implement playing sound by string ID
I've replaced enum-based sound playing events with string-based equivalents, which should open the door for server customization and other enhancements in the future
- Added SoundLookup class with different registry lookup methods depending on server version.
- Added the ability to configure what sounds are played depending on event, with a fallback built into SoundType.
- Removed getCrippleSound as SoundLookup can now fall back to the original default sound if the mace sound doesn't exist on the server's Minecraft version.
- Added a EnableCustomSounds config variable that will skip SoundLookup ID checking and just pass the sound string directly to the client, mainly due to the fact that it isn't possible to verify if resource pack values exist.
- Cleaned up a few switch statements to match how the original getSound had it formatted.
I'd love to see/do a further expansion of sound configuration for each ability now that we can just fall back to generic, but that may be for another PR.
* Fix getIsEnabled using wrong key
* always use registry, simplify custom sound enabling logic, optimize reflection calls
* forgot we need this for legacy versions
---------
Co-authored-by: nossr50 <nossr50@gmail.com>