Hello just wanted to leave some feedback on stuff that could be changed regarding the ribbons field in the Pokemon API class.
For starters the field doesn't really need to be an ArrayList it should just be an EnumSet not like it is intended to contain duplicate elements (Pokemon#addRibbon does prevent this but not when a user gets the field itself from Pokemon#getRibbons) and if for nothing else it is more efficient.
Secondly Pokemon#addRibbon could do with a new method where the user can specify if they wish the added Ribbon to be set as displayed, the existing method could simply pass in true for the new method, there are instances where you do not intend to replace the current displayed Ribbon and from our experience more often then not it would just confuse the player, obviously you can just cache the displayed ribbon prior to adding the ribbon then restore it but a lot more convenient to just have a built in method.
Finally Pokemon#getRibbons should just return an immutable collection, this would prevent unintented adding of Ribbons such as duplicate elements in the current implementation and even assigning the developer ribbons which Pokemon#addRibbon prevents.
Proposed implementation