TVPT / VoxelGuest

The user management and administrative plugin from The Voxel Box.
http://voxelwiki.com/minecraft/VoxelGuest
Other
15 stars 9 forks source link

UUID Migration #112

Open nristock opened 10 years ago

nristock commented 10 years ago

Mojang will probably move to a UUID based system for player names. Hence migration code is required to make sure banned players stay banned.

Possible solution: An upgrade routine will go through all player names and query mojang's DB for corresponding UUIDs - player names in our DB will be replaced by their UUIDs. Commands with player name parameters will internally translate them into UUIDs so we are only using UUIDs internally. Messages outputting player names will have to translate UUIDs into names. - Mojang will eventually implement bi-diretional lookups.

itsjoekent commented 10 years ago

Relevant read: https://forums.bukkit.org/threads/psa-the-switch-to-uuids-potential-plugin-server-breakage.250915/

gabizou commented 10 years ago

Just to add to this:

Minecraft natively allows for UUID -> lastKnownName and Bukkit achieves this through Bukkit#getOfflinePlayer(UUID)

Considering 1.7.5/1.7.6 already allows for this in Bukkit, it would be possible to start the migration work now.

The only consideration is that when the MC server is started in offline mode, the UUID is generated and not recalled from Mojang's Servers (this also applies to NPC's created by plugins like Citizens).

Aerodog commented 10 years ago

Has there been any progress toward implementing UUID support? I'd love to be able to enable the Asshat Module again and dump the crappy external plugin I'm using now, :p.

gabizou commented 10 years ago

It should be possible. I personally haven't spent the time to touch VoxelGuest yet. I'll talk to TVPT and see if it's graspable to upgrade to UUID.

nristock commented 10 years ago

As mentioned in the issue description - UUIDs should be quite easy to implement. However, I'm busy with my finals at the moment which is part of the reason I haven't been working on VoxelGuest for the past couple of months. PRs would be very much appreciated ;)

Aerodog commented 10 years ago

Hah, I'm a complete noob when it comes to Java. I've been reading and gaining a general understanding of Java, but the most I've done is language fixes and a remapping of Minecraft classes (those arbitrary 3-letter names) within a mod from 1.7.5 to 1.7.9 (talk about tedious).

When do you expect to once again have the time to work on VG? :3

nristock commented 10 years ago

That's hard to tell :P I kinda expected to have time in June but well, I'm still somewhat occupied. I'll see if I can slip in a couple of hours of VG coding this weekend. - No promises, though.

Aerodog commented 10 years ago

Okay. hugs

gabizou commented 10 years ago

I can dedicate some time this weekend. I'm done with finals.

Aerodog commented 10 years ago

Yeah, I can't figure it out on my own. I see the new and the deprecated API and have a vague understanding, but implementing it is beyond my scope of knowledge.

nristock commented 10 years ago

Alright, it's done, finally :P - I'm going to do a little more testing and cleaning up this afternoon but you can expect a push/new snapshot build within the next ~12hrs.

Aerodog commented 10 years ago

You're incredible. Thank you so much. I had feared that the temporary closing of The Voxel Box would result in development hiatus for VG.

nristock commented 10 years ago

A little late, but I still had a nasty bug to fix. There is currently no way to migrate your old bans/mutes since they were all stored using lower-case names and Mojang's API requires exact names. I'll probably write a small migration job that'll at least try to upgrade some data (i.e. all players whose names are actually all-lower-case). Let me know if you encounter any issues. It looks like I'll have time to fix things this week and maybe the week after.

Aerodog commented 10 years ago

Migration isn't an issue; we've done "migrations" before (which consisted of the manual re-banning of about 200 people) since we'd been using a 'global' banning plugin that didn't save bans locally, but this time, we're granting people a second chance. This was planned to happen for 1.8, but now that VG is ready before then, we'll just do it now.

Anyway, nevermind that. I'm extremely grateful for your excellent work.

gabizou commented 10 years ago

Possibly one way is to keep the old data and if the player name matches (equalsIgnoreCase) add it to the new ban list via UUID. Just a thought. This way it can be "over time conversion". Toggle might be an added feature for this.