- Breaking: All constraints defined prior to this version will need to be rewritten using the new constraint system
- Constraints are now parsed once when the command file is parsed and give a reusable predicate to lower computational cost of constraint checks
- Constraints can now dynamically generate error messages based on the sender, constraint conditions, and supplied value
- Refactored constraint definitions for default number types to avoid copying code
- Constraints for number types now show more specific error messages
- Added ArgType#getDefault to get a default ArgType by name