I have worked in the past months here and there to prepare for the rough outlines of 1.8 by introducing a table of UUIDs (long series of numbers and letters which will replace usernames in the code) and block names (which will replace block numbers).
So far the backend of the whole thing works, and I have the new data for pretty much everything and everyone. The issue however is that the code still uses numbers for blocks (in the shop for example) and usernames to identify people (pretty much everywhere). It is time now, with 1.8 coming, to end that.
So right now I am going through the whole code form top to bottom and change every time where someone is identified with a username to their UUID. At the same time, I have to go through all the tables, add a UUID field, populate that with the UUID that matches the username in the line and then change the code that calls the table to use that new UUID field. Then I can remove the username field from the table.
The biggest advantage of this is that I do not have to deal with differently capitalized usernames anymore: Users used different capitals in-game than when registering on the blog. Some plugins who use tables use capitals, others do not. If I am not sure if 2 tables use the same methods, lookups between two tables have to be done with a “IF a LIKE b” instead of “IF a = b”, which is much, much slower. For example, the fact that the user list takes more than 30 seconds to be generated, is because of this issue.
So expect some small bugs while I am working on the code :). It will probably take 1-2 weeks, depending on what comes up.