The EULA
The Minecraft EULA was a policy implemented in the summer of 2014. It limited the way Minecraft servers could operate. The biggest change was what servers could sell. Previously, such rules on what servers could and could not sell did not exist. For about a year this EULA was not enforced against servers. Starting in May of 2016 servers would be blacklisted for not complying with the EULA - meaning players could not join the server and would be given a fake error: java.net.SocketException: Network is unreachable. This blacklist went through the Minecraft netty so that the only way for players to join would be to use a modified client or to downgrade to 1.6.
Average cost of running a Minecraft server
Costs of maintaining a Minecraft server vary greatly. Everything depends on the server and its demands. Smaller servers are usaully shared hosting which is cheaper than dedicated hosting or virtual private servers which larger servers use. Depending on the CPU and hard drive specifications that the server needs, the price fluctuates greatly. Even calculating the amount of RAM needed has its problems as 10 players standing in one chunk will take far less RAM than 10 players spread out over an entire world.
A good equation is M + N*p where M is the base cost, N is the number of players, and p is the average amount of memory each player needs. Most sources say a good point for p is 75 MB. The cost will again fluctuate wildly. The cost per GB of RAM on MCProHosting is $10 USD and will be used as the average.
Keep in mind large servers like Hypixel won't follow this equation. The equation stated here is for the raw cost of RAM which is largely what providers charge by. Large servers like Hypixel have build costs, development costs, and many others.
Large server networks are incredibly expensive to run and are very time consuming. Most large networks run hundreds of Minecraft servers, along with enterprise DDOS protection, databases, dedicated proxies, and web infrastructure. In addition to that, many employ full time staff to manage the hundreds of hours of labor required for server maintenance and plugin development.
-Matt Sundberg, Owner of Shotbow Network
What the EULA states
The Minecraft EULA has several parts to it and only one of those parts applies to servers. These are the guidelines for server taken directly:
-
Therefore, if you comply with and follow the Brand and Asset Usage Guidelines and Naming Guidelines above YOU MAY:
- Charge for access to your server, including a server which hosts your Mods, BUT only if:
- you make a single charge per person that is the same for everyone;
- you give everyone you charge, access to all the Mods that you choose to have on your server (except only in respect of genuine admin tools / admin Mods which should be reserved to administrators);
- you only give access to your server to users who have a genuine paid for version of Minecraft;
- you own or control the server and continue to do so for the whole time that you charge for access to it - so, if you sell the actual servers or server space with Mods pre-installed on them, you must ensure that the person buying the server is aware that she must follow these rules. Essentially you can't get round the rules above by setting up servers with Mods on and then selling those set-ups; and
- overall your access charges should be targeted to cover your operational costs of running the server.
- ask for donations (as opposed to direct charges) IF you do not offer the individual donor something in exchange that only he or she can use. You may offer server wide rewards if donation goals are achieved though.
- sell cosmetic items, except for "Capes", IF the item sold does not give a user an unfair gameplay advantage over anyone else on the server - i.e there can be no "pay to win".
- sell positive effects or enhancements (other than "Capes") IF everyone on the server is positively affected in exactly the same way.
- provide in-game advertising opportunities, sponsorships, or product placement for 3rd parties IF they don't degrade or interfere with gameplay or give a user an unfair gameplay advantage over anyone else on the server.
- use in-game currencies IF (i) they are "soft currencies" i.e. a currency earned or expended only through gameplay that has no real world value and that cannot be cashed out, used or transferred across free or paid servers, or converted into "credits"; and (ii) you don't give the impression that it comes from or is associated with Mojang.
The full guidelines are available to read here.
Analysis
Analyzing the guidelines comes down to three points:
- Servers may only sell enhancements only if it affects everyone (Server-wide boosters)
- If servers are selling direct to the player the perks may only be cosmetic (Nametags, particles, etc.)
- Servers may advertise to get revenue. (Adventurize, AdBolt).
- Servers may make users pay for server entry but only if it is a single charge for all users.
- In-game currencies may be used as long as they cannot be purchased or cashed out for real world money.
This leaves 4 revenue models that are allowed by the EULA. Servers can:
- Sell server-wide boosters that affect everyone
- Sell cosmetic perks that do not affect gameplay
- Have in-game advertising
- Have access charges
Server wide boosters
Server wide boosters are when a server has a donation goal. Once this donation goal is reached, everyone on the server recieves that perk either permanently or temporarily. It has to be equal for all players across the server.
Server wide boosters are a good idea but they only seem to work on smaller servers. This system also relies on good samartians to donate to the server. Big servers with 100+ players will have to rely on good samartians to reach the donation goal.
Cosmetic perks
Cosmetic perks are perks that do not affect gameplay at all and give no advantages at all. Cosmetic perks are what big minigames servers like Hypixel and HiveMC are doing. Special particles and colored nametags are what these servers are mainly selling. This revenue model may prove quite good for large minigames servers. Servers that don't have ongoing gameplay but instead small short lived minigames with limited amounts of players. On minigames servers, items, armor, etc. don't transfer between games. Particles and cosmetics do.
This system is good for minigames servers, but not as well for other gametypes. On Survival, Factions, and Prison servers. On these types of servers, gameplay is much more long-term. Cosmetics don't make as much of a profound effect here. Cosmetics aren't as appealing as on a minigames server. Age demographics on servers may also contribute to this. Younger ages who play on minigames servers may be excited about showing off their new particles. Older ages who play on Factions, Prison, or Survival gametypes may simply not care as much about cosmetics.
In-game advertising
In-game advertising seems to lack in the revenue aspect. One of the most prominent advertisers is AdBolt. AdBolt pays based on impressions - the amount of players who see an advertisement and seems to pay about $1 USD per 1000 impressions. AdBolt's FAQ states that if a server has 20 players in an hour, 400 impressions are made. 400 divided by 20 equals 20. This means that 20 advertisements an hour must come to gain those impressions or about 1 advertisment every 3 minutes. Then again it would take 2.5 hours to make $1. Taking the formula M + N*p mentioned before and plugging in the numbers is 0+20*75=1500 MB. 1500 MB to GB is 1.5 GB.
Taking the MCProHosting prices also mentioned before yields a total of $15/month. Not all hours of the day will the server encounter these amount of players but it is actually a great model that may be sustainable. The current status of AdBolt is unknown, however. It is also unknown what kinds of ads AdBolt displays as server owners can easily sign up and advertise their own servers on others via AdBolt.
Looking at the other ad provider, Adventurize tells a slightly different story. Adventurize promises never to advertise other servers, however revenue is based upon clickthrough rates. Text-based advertisements may not have a very good clickthrough rate and without a large player base it may be nearly impossible to pay the server bills with Adventurize.
Access Charges
The 4th and final revenue model sactioned by the EULA is charging for server access. This model would most likely be the most unsuccessful. There doesn't seem to be very many servers that actually charge for access. A large advertising budget would be needed to get players to pay money to get into a server they haven't seen much of. Servers that do this will be competing with larger, free ones.
Pure Donations
Why don't servers simply run off of pure donations instead of selling items? The people who play Minecraft are fairly young in age. Items and perks are more appealing to this demographic. Minecraft servers are also businesses not charities; due to this people may not feel the same emotions when donating to a charity. Servers have large operating costs and the good samartians that donate may not be enough to keep the server giving fresh content. If Minecraft servers didn't make any profit, large servers like HiveMC, Hypixel, and Mineplex may not exist at all.
Review of Revenue Models
The summarized points of each EULA sanctioned revenue model.
Server wide boosters:
- Works better on smaller servers
- Rely on good samartians
- May not be enough to pay operating costs
- May not do as well on bigger servers
Cosmetic perks:
- Great for minigames servers
- Appeals to younger audience
- Unknown if appealing in other gametypes
AdBolt:
- Can advertise servers
- Current status unknown
- Pays by impressions
Adventurize:
- Promises not to advertise servers
- Pays by number of clicks
Access Charges:
- Has to compete against free servers
- Hopes players donate based on features alone without seeing server
Pure Donations:
- Rely on good samartians
- May not be enough
- Servers are businesses not charities and that my not be appealing
The best solution here would be AdBolt. AdBolt might be able to just pay hosting costs. It is unknown if AdBolt is still functioning and if they advertise servers or not. Obviously, AdBolt would not be the best solution for a big server as there are other costs besides hosting.
If a server isn't a minigames server and isn't particularly big the only solution may be to not follow the EULA at all.
Effects on Servers
Some of the most drastic effects of the EULA have been on servers. Now that the blacklist is in effect large servers that do not follow the EULA have been effectively forced to follow the EULA or lose all of their player base and subsequently their profit.
The enforcement of EULA was organized incredibly poorly. First, Mojang isn't communicating directly with the community except for 2 short posts on the EULA back in 2014. Any changes to the EULA are emailed directly to server owners. In fact, Mojang has never publicly stated anything about the blacklist. Most of what the community knows is based upon the emails from Mojang server owners have released.
For example, Mojang changed their opinions on vote rewards. Originally they were allowed. Then Mojang emailed server owners stating they weren't allowed due to the fact that players were "paying with time." Mojang agained changed their policies re-allowing vote rewards.
Conclusion
Minecraft servers add so much more content to the game. It's hard to think about Minecraft without the servers. The goals of the EULA may have been to make a more positive enviroment and take some of the blame about servers off of Mojang, but a one size fits all solution just doesn't seem to work. Mojang needs to start communicating with the community about any EULA changes made and about the blacklist.
We have millions of players hitting our servers every single month to play our custom games. I’d have thought that Mojang could see the same value in our custom games as they see in the YouTubers who are adding content to the gameplay experience and being able to do that full time through a proper revenue model. Especially as much of their content focuses on our custom gamemodes, mods, etc., most of which could only be created with the time and resources our models provide.
-Sterling, Director of Mineplex, from his open letter.
Footnote: Age Demographics
Several items about age demographics are mentioned here. Age demographics in Minecraft are hard to fully know. For example, a survey was done on Hypixel but it was posted to the forums. There is an average of about ~30K players on at any given point however there is only ~900,000 members on the Hypixel forums. Dividing these statistics would yield a statistic of 30% of Hypixel players are registered on the forums but that isn't a valid measure either. 30K is the amount of players on at a given time and the ~900,000 users doesn't count users who didn't see the post or are aren't active. Age demographics in Minecraft are hard to get. The survey data that was found from the survey on Hypixel on age demographics would be incorrect anyways because younger children would most likely not be on the forums or be less likely to fill out the survey.
Footnote: Bypassing the Blacklist
A modified client by the name of SquidHQ bypasses the blacklist. There is also a way for server owners to bypass the blacklist using SRV records. See the bypass page for more information.
Technical Explanation
The blacklist uses a fake version of the netty library in addition to the current netty library. This netty library contains functions that download the blacklist and check a server's IP address against it.
Versions 1.7-1.11
In versions 1.7-1.11 the fake netty library is located at .minecraft/libraries/com/mojang/netty/1.6/netty-1.6.jar.
Versions 1.12 and above
Starting with version 1.12 it seems Mojang has moved their fake netty library. It seems now to exist at .minecraft/libraries/com/mojang/patchy/1.1/patchy-1.1.jar. Inside patchy, blacklist code is located at the io/netty/bootstrap/Bootstrap.class. The other classes within patchy are important and the only blacklist code is inside Bootstrap.class
Solution
The Minecraft client checks SHA hashes of any library file and if it has been modified then Minecraft will redownload it. The only solution is to modify the Minecraft client or attach a Java agent. SquidHQ is a modified launcher and more information about it is located on the bypass page.
Java agents attach themselves to the Java process and can modify classes when they are loaded. Java agents are a good solution because no matter where Mojang moves the blacklist netty code to, the blacklist agent will be able to stop it. Many Java agents detect if the class name equals io.netty.boostrap and if it is, it sets the isBlockedServer() method to return false;. A Java agent that does this can be found here.