The mod I'm working on is planned to eventually have a LOT of mobs in it. I want to create a sort of bestiary (almost like the pokedex from Pokemon) that stores info about the animals the player has encountered/fought/tamed. It would be a sort of book item, but I don't want the knowledge to be lose-able-- as in, if you lose your bestiary, you can make a new one and it will still contain the data you've uncovered. Or maybe it's not item-centric and could just be a GUI interface. I would like entries to unlock one at a time as applicable, and maybe have additional tiers of info per entry, like below:
1. Basic info upon seeing the animal (where does it live, when does it sleep, what does it eat, is it naturally aggressive, etc.)
2. Advanced info upon taming the animal (how you tamed it, more specific dietary needs, etc.)
3. Genetic info upon breeding the animal (how do you breed it, can it be hybridized and if so with what?)
What I'd need to do is have info saved per-player as to what they've unlocked. I know you can do this with capabilities, but I'm not sure if that's the most efficient method to do so or not for something like this (or if I should be concerned about overloading the player data somehow). The data would need to be accessed when a player completes an objective, views the bestiary, or encounters a circumstance that requires data to be updated (i.e. if the player dies the data needs to be restored to the new version of the player). It does need to be server compatible as well.
I imagine the actual bestiary text wouldn't need to be stored in the variable itself. There's nothing about the text that would change per player-- it would just unlock at different rates. So I wouldn't need to be generating dynamic strings of info and storing them, or anything. It'd most likely just be a simple int for each entry that would tell you if it's unlocked or not and if so, how much is unlocked.
Given these factors, are capabilities still the way to go? Or is there another system that I'd be better off using for a system that potentially could require a high number of variables? Are there any concerns I should keep in mind for the possible methods I could use?
Thanks, and have a great day!