MemeAcademy

Written by your favorite Minecraft shittalkers, check out an actual academy that’s worth your time (not sponsored)

Introduction

It started with the repugnant banners that cropped up across SpigotMC:

kangarko has been peddling a Minecraft coding course called MineAcademy for about a year now. Combine this blatant advertising with his cocky behavior and threats, and no wonder why we’re calling it MemeAcademy. To demonstrate how fucking annoying it is, enjoy the smaller banners placed throughout the document that he has used in the past to promote the course.

While we’re on the topic of the course… let’s be honest, you will almost never make it big in the Minecraft server plugin market. If you sign up for his course, statistically speaking, the only one who profits is kangarko, not you.

On top of that, he’s also lobbed childish legal threats over someone posting an adblock rule. How dare this precious little snowflake get set off because someone didn’t like how his ads were polluting SpigotMC!

One of MineAcademy’s finest plugin developers, known for plugins like Confiscate.

ironic

The gory guts

Did someone say conventions? Let’s take a deeper look at their Foundation plugin. This plugin is the base used to write all their plugins. If it’s shit, then god knows how the plugins are! Well, let’s just say the results are in and we haven’t even scratched the tip of the iceberg - Foundation is replete with terrible coding practices.

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/RandomUtil.java#L190 

This operation destructively modifies the list used, without even so much as making a copy of the original. And of course, this behavior is not documented. Unexpected behavior is definitely a convention expected of all Java programmers, right?

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/database/SimpleDatabase.java

Well-known best practice convention of holding onto open database connections as long as possible (and lombok). For the record, the proper Java convention is to use a proper connection pooling library such as HikariCP.

https://github.com/kangarko/Foundation/blob/4b5870461ee39d80f2a4b309233cadcb2dd84265/src/main/java/org/mineacademy/fo/debug/Debugger.java

“Custom” Stacktrace printing with purposeful omission of lines

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/collection/StrictCollection.java

Sets anyone?

https://github.com/kangarko/Foundation/tree/master/src/main/java/org/mineacademy/fo/jsonsimple

Why copy jsonsimple?

https://github.com/kangarko/Foundation/blob/4b5870461ee39d80f2a4b309233cadcb2dd84265/src/main/java/org/mineacademy/fo/plugin/SimplePlugin.java#L352

Anyone heard of proper logging? Not kangarko.

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/collection/StrictMap.java#L17

Map.putIfAbsent() is something they could learn about

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/GeoAPI.java#L28

I didn’t know memory leaks were a recommended convention. Why is there an entire industry dedicated to tools for finding memory leaks?

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/Common.java#L101

Why

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/TimeUtil.java#L40-L47

What the fuck

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/debug/LagCatcher.java

This is almost as much as a joke as the Mojang MethodProfiler

YAML uses a very well known NoSQL database known as UTF-8

https://github.com/kangarko/Foundation/blob/4b5870461ee39d80f2a4b309233cadcb2dd84265/src/main/java/org/mineacademy/fo/Common.java#L654-L697

Wtf

No explanation necessary.

You are not supposed to ignore InterruptedException - the thread should preserve the interrupt state and then propagate if needed.

https://github.com/kangarko/Foundation/blob/master/src/main/java/org/mineacademy/fo/SerializeUtil.java#L450

Untranslated errors

Other gory stuff

  • kangarko was banned from bStats for not including a way to turn off bStats for ChatControl. This happened quite recently as well.
  • There was a notification in ChatControl (this goes back some years) where if he logged onto any server running ChatControl, the plugin would notify him that the plugin was active. That’s kinda creepy.
  • Submitted a name change request on SpigotMC to add even more advertising on top of the advertising he currently plasters everywhere.
  • Used Paypal buyer email addresses without permission to mass mail “feedback” about the MineAcademy course (against GDPR)

Response 1

An initial response was provided in the post. Let’s deconstruct the lies within.

You start with an advertisement for your service. What a classic way to begin, given that part of this was triggered by your incessant advertising. Also, this is argumentum ad populum (an appeal to popularity), so you’re already starting off on the wrong side.

For the record, none of us are interested in doing petty, illegal things like DDoS attacks or hacking. Shaming you in the court of public opinion suits us just fine.

This has no relevance to the discussion at hand. But on the topic of “threats and inflammatory input”:

Prove us wrong.

This does not change the fact your advertising is a direct contravention of Spigot’s rules. Spreading awareness is fine, pushing your advertisement on heavily trafficked pages is not.

Hooray for your 800th customer. Nobody cares, and everyone hates your shameless advertising. Your response to our concerns was 90% advertisement, 9% blaming us for something we’d never do, and 1% a sad attempt at acquiring pity points.

Response #2

So where is the proof that MiniDigger was responsible for the threats against MineAcademy?

...it will be escalated to you, and excuses will rain down from the sky. Frankly, that does all your customers a disservice.

Some of this legacy code was written quite recently.

In Conclusion

kangarko and MineAcademy have consistently shown the worst kind of short-term thinking that is depressingly commonplace in this community. Their brazen advertisements are unwelcome, and their behavior is unacceptable and out of place. Combined with a petty, shameless legal threat aimed at the nearest convenient target, we are more than disgusted.

FYI: We have no malicious intent, we’re just annoyed. All information was retrieved from public channels. Please do not go witchhunt the users in question. Considering the spigot thread was locked, we’ll leave it by this.

Also note, multiple users have been working on this document.

26 June 2020 update

DMCA (by Mineacademy)

We’ve removed imagery that may contain copyrighted content. Further DMCA notices will be countered as they are invalid. All images & links in this document are publicly, widely available. No code snippets are available besides links to the GitHub repositories.

https://www.lumendatabase.org/notices/21298906

Redistributing Mojang & Spigot code & leaking premium plugins

https://www.spigotmc.org/threads/more-mineacademy-kangarko-stuff.448166/

https://bitbucket.org/mineacademy/libraries/

Mineacademy is illegally redistributing Mojang code. Not only that, they are leaking premium plugins such as CMI as a “library”