Post by stretch_ca on Apr 4, 2014 20:10:45 GMT
At the beginning of the year Mojang started dropping hints of their plan to switch from a name based accounts system to a universally unique identifier (UUID) based accounts system, ultimately moving towards allowing people to change their Minecraft name. With much of Minecraft currently relying on a name based accounts system (bans, whitelist, ops to name a few) along with plugins using names to keep track of players (permissions, ownership, protections), this change has a high potential to break both plugins and servers if server admins and developers are not prepared for it. At the time of writing, Mojang have said they're planning to enable name changing around the time Minecraft 1.8 is released and with Minecraft 1.8 slated to release in May, the window for preparations is quickly closing.
What is a UUID?
A Universally Unique IDentifier is a fairly long series of hexadecimal numbers commonly used in software to uniquely identify something. With Minecraft, Mojang is planning to use UUIDs to identify player accounts, with each Mojang account tied to a UUID. For example: Notch's account now has the UUID "069a79f4-44e9-4726-a5be-fca90e38aaf5".
Potential Server Breakage
Up until this switch to UUIDs, Minecraft has relied on names for many of its core systems (bans, the whitelist, ops, etc.) and plugins have used names for permissions and protections. Once Mojang allow players to change their names at will with Minecraft 1.8, these systems’ accuracy can no longer be relied on. For Minecraft, Mojang have said they'll be handling the transition of bans, whitelist, etc. for the most part, but most Bukkit plugins will need to be updated to use UUIDs to track players instead of names.
To prepare servers for the switch to UUIDs, server admins should perform an audit on their plugins to determine which ones currently use names for player identification. It is recommended that server admins communicate with the developers of the plugins that they use to ensure that they're preparing for the switch to UUIDs. The types of plugins that will likely be affected include (but are not limited to): permissions, region protection, world protection, chest protection, ownership, teleportation, economy, chat, and ban management plugins.
Basically, it comes down to this: neglecting to prepare for the switch to UUIDs is the equivalent of running your server in offline mode. With player names no longer being static, anyone could potentially pick up an Admin's username and take over your server or bypass your protections.
Plugin Developer Considerations
Yesterday (March 29th, 2014) we went live with our UUID migration plan (Bukkit commit, CraftBukkit commit), where I made the decision to make use of Java's deprecation system as a means to get the attention of our plugin developers and make sure they're aware of the problems this switch to UUIDs is going to cause. This deprecation sweep was intended as a companion to this article. Information on this switch to a UUID based system has been hard to come by, with the majority of it coming from tweets from Mojang. As a result, while we have somewhat devised a migration plan, it is purely based on guesswork and assumptions which could be far off the mark by the time the system goes live.
Points for Developers to Consider:
Names will no longer be a unique identifier for a player
String based lookups still work, they've just been deprecated to raise awareness of the upcoming changes. Some of the deprecations will be removed in the future. See our Current Migration plan below for more information.
Any data stored about users should be updated to use UUIDs
Since Minecraft 1.7, a player's UUID can be acquired through Player.getUniqueId();
Server.getOfflinePlayer(UUID) is a blocking, inefficient temporary hack provided for you to prepare a migration plan of your own.
You need to use Mojang’s AccountsClient or evilmidget38's UUIDFetcher (recommended) to convert Name to UUID. We may or may not provide our own built-in solution for this.
Our Current Migration Plan, for reference:
Minecraft 1.7.5
Deprecate string based player lookups to raise developer awareness of the switch to UUIDs and the impact it would have
Add a temporary hack to allow for early support for name lookup by UUID, which is currently inefficient and blocking◦This is provided for plugins to prepare a migration plan of their own and NOT for use in production.
Minecraft 1.7.6+
UUID lookup will become the most efficient lookup method: check if UUID matches stored player data on disk
Name lookup will then become the least efficient lookup method
Minecraft 1.8
UUID awareness deprecations will be removed as time for preparation has passed, if they haven't been removed already
General Notes:
A Mojang account is required if you want to change your name
Names need to be unique; you can't change your name to one that is already in use
Name changing is free but will probably be limited in some way to prevent abuse
If you haven't migrated your account to a Mojang one, you should do so as soon as possible to secure your name
Name changing is slated to go live when the web service has been updated and around the time Minecraft 1.8 releases
Once you have changed your name, your previous name is now up for grabs. This is not a traditional local nickname system, it is a global claim-based system. It is unknown if there will be a grace period or any protection against name sniping.
What is a UUID?
A Universally Unique IDentifier is a fairly long series of hexadecimal numbers commonly used in software to uniquely identify something. With Minecraft, Mojang is planning to use UUIDs to identify player accounts, with each Mojang account tied to a UUID. For example: Notch's account now has the UUID "069a79f4-44e9-4726-a5be-fca90e38aaf5".
Potential Server Breakage
Up until this switch to UUIDs, Minecraft has relied on names for many of its core systems (bans, the whitelist, ops, etc.) and plugins have used names for permissions and protections. Once Mojang allow players to change their names at will with Minecraft 1.8, these systems’ accuracy can no longer be relied on. For Minecraft, Mojang have said they'll be handling the transition of bans, whitelist, etc. for the most part, but most Bukkit plugins will need to be updated to use UUIDs to track players instead of names.
To prepare servers for the switch to UUIDs, server admins should perform an audit on their plugins to determine which ones currently use names for player identification. It is recommended that server admins communicate with the developers of the plugins that they use to ensure that they're preparing for the switch to UUIDs. The types of plugins that will likely be affected include (but are not limited to): permissions, region protection, world protection, chest protection, ownership, teleportation, economy, chat, and ban management plugins.
Basically, it comes down to this: neglecting to prepare for the switch to UUIDs is the equivalent of running your server in offline mode. With player names no longer being static, anyone could potentially pick up an Admin's username and take over your server or bypass your protections.
Plugin Developer Considerations
Yesterday (March 29th, 2014) we went live with our UUID migration plan (Bukkit commit, CraftBukkit commit), where I made the decision to make use of Java's deprecation system as a means to get the attention of our plugin developers and make sure they're aware of the problems this switch to UUIDs is going to cause. This deprecation sweep was intended as a companion to this article. Information on this switch to a UUID based system has been hard to come by, with the majority of it coming from tweets from Mojang. As a result, while we have somewhat devised a migration plan, it is purely based on guesswork and assumptions which could be far off the mark by the time the system goes live.
Points for Developers to Consider:
Names will no longer be a unique identifier for a player
String based lookups still work, they've just been deprecated to raise awareness of the upcoming changes. Some of the deprecations will be removed in the future. See our Current Migration plan below for more information.
Any data stored about users should be updated to use UUIDs
Since Minecraft 1.7, a player's UUID can be acquired through Player.getUniqueId();
Server.getOfflinePlayer(UUID) is a blocking, inefficient temporary hack provided for you to prepare a migration plan of your own.
You need to use Mojang’s AccountsClient or evilmidget38's UUIDFetcher (recommended) to convert Name to UUID. We may or may not provide our own built-in solution for this.
Our Current Migration Plan, for reference:
Minecraft 1.7.5
Deprecate string based player lookups to raise developer awareness of the switch to UUIDs and the impact it would have
Add a temporary hack to allow for early support for name lookup by UUID, which is currently inefficient and blocking◦This is provided for plugins to prepare a migration plan of their own and NOT for use in production.
Minecraft 1.7.6+
UUID lookup will become the most efficient lookup method: check if UUID matches stored player data on disk
Name lookup will then become the least efficient lookup method
Minecraft 1.8
UUID awareness deprecations will be removed as time for preparation has passed, if they haven't been removed already
General Notes:
A Mojang account is required if you want to change your name
Names need to be unique; you can't change your name to one that is already in use
Name changing is free but will probably be limited in some way to prevent abuse
If you haven't migrated your account to a Mojang one, you should do so as soon as possible to secure your name
Name changing is slated to go live when the web service has been updated and around the time Minecraft 1.8 releases
Once you have changed your name, your previous name is now up for grabs. This is not a traditional local nickname system, it is a global claim-based system. It is unknown if there will be a grace period or any protection against name sniping.