Mojang is preparing right now for people to be able to change their username. Instead of a username, people will have long, random code (called UUID, for example “87a39b0fd47b445dbd2e9ff86f0c70d3”) that will ensure their identity. They username will be just a kind of nickname which will not matter to minecraft anymore for identifying users.
While this is nice for minecraft, this is an issue for us since we store the username also in many databases and most prominently on this blog and forum to identify users.
In order to deal with this, there are several steps required:
- Make the custom-written code UUID-aware. Whenever some of the code is called that we wrote ourselves, it has to know the current username AND the UUID of the users. This is done already.
- Track username changes. The custom code has to be able to update it’s database whenever someone logs in after changing their username and potentially even keeps a history of usernames to be able to track actions back properly.
- Upgrade the minecraft and all plugins as they are released and start working with UUID instead of usernames. This is work in progress. The first plugin was released already. I also have tested briefly all the existing plugins with the new minecraft version and there does not seem to be a huge break in the system. So we might be able to upgrade to the latest minecraft version soon.
- Make the custom-written code able to deal with changing usernames. This is a major issue, since we store a LOT of information based on usernames. All the tables will have to be updated to use the UUID instead. This is a major coding effort that has to be done before we can upgrade to 1.8, whenever that is released.
- Make the blog UUID aware. We cannot continue to allow people to manage their lots, karma or other things on the blog if the username on the blog is not always the same as in the game. So we have to replace the logins of all users with their UUID, and then manipulate the login form so that you can enter the current username, the blog will then retrieve your UUID from the database and use that as your actual login. Instead of your userlogin, your nickname field will then be updated with your changing username as we go, so people can recognize commenters with their username instead of their UUID. This is the only way to ensure that your permissions and ownerships are safeguarded while you change your username over time.
So, as you can see, there is quite some work ahead with this. I am not sure when I will have time to work on all this, but the fact that I have now, after thinking about it for several days, come up with a comprehensive strategy to make this work out at all is a huge progress for myself. There are still a couple of things I am scratching my head over but hope I will see the solution once I start working on it before I go bald. One challenge for example is to deal with individual databases upgrading themselves along with plugins to be UUID-based instead of username based and my code having to be flexible enough to deal with the transition without me closing down the whole system for some hours of testing each time.