MCLink is a service that allows you to link your Minecraft account and a third party account, like Patreon, Twitch or GameWisp. The primary purpose is to allow people to do automatic whitelist management on servers.
A bit of history
Way back in 2013 I created a system to allow Twitch subscribers to automatically log in to a Minecraft server run by a streamer, if they had the same usernames.
Then I added a textbox to allow players to enter their own usernames.
This system then evolved into a monster of PHP, NodeJS and handwritten SQL to connect it all. The NodeJS was there to emulate a Minecraft server and allow players to log in to make sure the usernames actually belonged to whomever claimed them.
I have wanted Patreon integration for a long time, but when I first checked there was no proper API support and there was not enough interest to further investigate. Fast forward to 3 weeks ago, when I got a request from a user asking for Patreon support.
Turns out the API was now available, and upon bothering the nice people of the support team, I was told that the API platform was only a week away from launching. I then decided to put in a whole lot of effort, completely rewrite everything as a Python (Flask) project, with a different Minecraft Server emulation library (quarry.
Now the new system is finally live!
The website: mclink.dries007.net (Yes, I know the site is not the prettiest thing, if someone wants to do some design work, I’d take the help.)
I’ve already written a mod for Minecraft Forge 1.12.2 (Modded Minecraft).
I’m still working on a Spigot (Bukkit) version.
(The mods have not been released, since I want to test them properly.)
I wrote this during an hour of downtime I had in school, I’ll be uploading
some more information, with schreenshots, when I have the time to make them.
Hopefully I can get a streamer I know (she’s a creator on Patreon) to
broadcast it as I tutorial I can snip out and share.
I’m hoping to use her Patreons as Guinea Pigs in the remaining testing
phase.
I may opensource the code, but for now if anyone’s interested, I’ll add
them on GitHub.
If a picture is better than a thousand words, what’s 1 minute’s worth of pictures then?
This is how long it takes, after that a player can log into any creator’s server they have access through via Twitch, Patreon and GameWisp subscriptions.
The authorization is instant, so you do not have to wait for any hourly job to add you to a list etc.
The creator (or their server admins) have to do the setup on the server side, but all they need for it is the API token returned by the /api command, a regular player doesn’t need that.
Entering that into the config, they can then also input what service can authorize access, for example, you can allow only 10+$ patreons and non-Amazon-Prime (a kind of free trial subscription) Twitch subscribers to log in, or any combination.
This is of course dependant on what server software they use, exact instructions will be included on the mod info/download pages.
This is pretty fantastic!
Sure you’ve already thought of this, but having some way for the link to open in the user’s browser automatically (as oppose to pasting the url) would be improve that account authorization flow. That’s something I’ve been struggling with myself with my Adobe extensions.
Very very cool! @tal and I went through the flow and looks like it could be awesome! How’s this going? What feedback are you getting? If you had to identify bottlenecks/blockers for users what are you seeing from responses?
We had a bit of a hard time testing this out though
I’d love to, but that’s quite a list of questions, some of them I’ll have to edit/add pages to the site for, so it may take a little while still.
The feedback has been limited, as the people I have on the service already have used the previous version before, so they know what to do / expect.
The bottleneck (I expect) is getting people to set this up. Most server owners I know seem to do all of this whitelist management by hand because they don’t know this (or similar projects) exist.
I just hope the instructions for setting up a server are simple enough too, I’m thinking about making a (video) tutorial for it, if you think that’s a good idea. (I don’t think screenshots would cover it well.)
And I agree, this is both valuable and a tough thing to conceptualize before seeing it walked through like your video. A screencast sounds like it would help a lot of people.
We’re pretty pumped over here about seeing the amount of use cases and creators this can impact!
I’ve made a more in depth video, with voice instead of text. Hopefully this is even clearer than the previous, it also goes in detail about how to setup a server.
Again, any feedback on this is highly valued.
I’ve also made some adjustments to the Legal/About page to add a Privacy policy and more structured ToS, as this was required for the Patreon integration / app spotlight thing.
Hey @tal I send you an email about some of the details of my app on the app portal (the author & icon),
It’s been a while now and I thought I might as well ask about it here.
Besides that, a little update: I’ve noticed I can no longer link accounts. I get a 401 back after quite a long delay (>60 seconds). I’m still investigating, It might be an issue on my side, but so far it doesn’t seem like it.
I set a timeout of 15 seconds and now it’s magically fixed…
Second, do you have a source example of an auth mod? I would be interested in one for linking with our Discord server, so that only members of our Discord server can join our Minecraft server.
The backend code is not open source, because I don’t want a million clones (the idea is that everyone should only have to link once, not per server) but i do pledge to release the source if I quit with the service.
The mod part however is, mainly because I want people to be able to help me with porting to other platforms if they would like.
There is no Discord integration, but I would actually like to do that in the future. Although everything Minecraft related is going at very low speed at the moment as I have other priorites in my life atm.