Add proper logic check for invalid Other Type challenges.
- If VaultHook is enabled required money should be more then 0, otherwise challenge is not valid.
- If LevelAddon is exists required level should be more then 0, otherwise challenge is not valid.
- If required experience is less then 0, challenge is not valid.
- If Level addon is missing, nut it requires some level, then challenge is not valid.
- If VaultHook is missing, nut it requires some money, then challenge is not valid.
Add methods isLevelDone() and addCompletedLevel() to ChallengesPlayerData object.
Add isLevelCompleted(), validateLevelCompletion() and setLevelComplete() to ChallengesManager.
Add check in TryToComplete after completing challenges first time.
Implement all methods that were only placeholders.
Remove all unnecessary old methods.
Implement new methods in all classes.
User and Admin command now opens new GUI.
Challenge now will not know their world, as it is not necessary.
Remove ICON type, as it is useless.
Rename Level to Other, as under it will be not only level things.
Rename slot to order, as it was weird that users could define slot but not order. Order is easier to understand and use.
ChallengesLevel now knows all their levels.
Each challenge level only will be for single world.
Rename some variables.
ChallengesPlayerData was just adapted with changes in challenges and level classes.