Before you get out your pitchforks, let me explain why I am suggesting this. I understand that a solution like this, in all likelihood, will piss a lot of people off, and I don't blame you. This is a rather drastic change, and I really didn't want to suggest something like this. This solution is not in any shape or form intended to inconvenience players on here, but to resolve a technical issue that would allow us to expedite migrating to UUIDs for player data.
The implementation
All player data in the TotalFreedomMod will be backed up, and then wiped. Everyone will be at a clean state, but can request to have their coins, shop items, and other types of data restored manually. In return, however, we will get a player data system with exponentially better stability. No more marking regular players as impostors when you use a different IP. No more losing player data when you change usernames. No more Discord verification.
Other solutions I've considered
Before coming to this solution, I had considered some other options that would do the same thing and keep player data automatically, however I realized that these solutions weren't viable for one reason or another.
Converting player data individually on join
This solution sounds feasible at a first glance, but it too has its fair share of problems. The main one is simple: multiple lookups would need to be performed on join if a player has no valid player data, which is dangerously bad for performance.
Converting all player data on startup
I tested this method using an older copy of the database used by the server, but found that attempting to get the UUID of a player using a name in itself is problematic, which make this approach far from viable.
- It's unreliable, as Spigot will automatically generate one (which won't actually link to a valid account) if there is no Minecraft account with the name.
- There is no way to get UUIDs of players using past usernames, meaning once you've changed your name, that name will return a "Not Found" error until someone takes the name.
- Spigot takes a long ass time to get player data for nonexistent accounts, which would cause the conversion process as a whole to take literal hours.