A few more details about modding: There's two major modloaders, forge and fabric. Fabric is relatively new. Both Forge and Fabric have (had?) their own mappings, which are different. Mojang also released the official ones, however due to legal and technical (they weren't complete) issues, they couldn't be used until a few years after their release. Forge mappings are under a more restrictive license, so due to legal stuff, if you looked onto Forge mappings, you couldn't contribute to Fabric mappings. Same for mojang mappings, if you looked at them you couldn't contribute to both forge or fabric. Forge currently uses the mojang mappings, so the legal and technical stuff seems to have been resolved, I haven't been closely following. The ways that Forge and Fabric work is actually different. While Forge decompiles the source code, applies patches and then recompiles, Fabric manipulates the bytecode of the jar (Afaik, it's long since I checked). Both load jar files from a set directory and inject them into the classpath. While Forge provides a framework, Fabric *just* injects jar files. There's also the old method of modding, which involves replacing the classes in the minecraft jar, which also means that you cannot have many mods at once. This method is long dead, however. I cannot provide details for servers / plugins, because I only worked with Forge and Fabric. Minecraft modding is fascinating, and it gets even crazier the deeper you dive in, so good luck!
Gonna append to this with a little extra information: Regarding the legal stuff with mojang mappings: There are still a lot of uncertainties but both forge and fabric now provide them in good faith as mojang has stated multiple times that the use of official mappings is allowed even though the actual legal text is pretty unclear in that regard. Then there is still something to say about replacing actual classes: OptiFine This old piece of code still does something like replacing Minecraft classes - at least when installed directly and not loaded through forge (or fabric when using OptiFine + OptiFabric). By now there are way better alternatives of OptiFine out there (like Sodium + Iris for fabric or Magnesium + Oculus for forge), but i won't go too deep talking about that stuff here. So then there's just one thing left. Servers / Plugins. In the beginning there was (just like with modding) the method of replacing class files. Then, CraftBukkit came - it is mostly referred to as Bukkit now, though they are not exactly the same system (it's complicated...) - CraftBukkit implemented a plugin loader and an API for said plugins to use. Even though direct server code access was and still is possible, it was and is to this day, strongly discouraged. With Minecraft 1.8 around the corner, the developer of (Craft)Bukkit, MD-5, decided to build an all-new system on top of Bukkit, Spigot. Spigot brought many improvements with it and was mostly intended as a replacement of Bukkit. Even though Spigot was available, Bukkit builds were still used until pretty recent versions, where the build system was changed to no longer output both Bukkit and Spigot jars, but only the Spigot ones. This was probably a change for the better as Spigot literally is just an improved version of Bukkit. Then there's Paper, a spigot fork originally created by Aikar, now maintained by a large community. It is basically spigot, but provides a vastly extended and overhauled API while still being compatible with all Spigot plugins. Paper also provides many more features, optimizations and config options as compared to Spigot. It is now probably the most used Minecraft server software. Purpur, a pretty unknown fork of Paper exists too, but i don't think it will ever overtake any of it's alternatives such as Spigot or Paper. With BungeeCord, Waterfall and Velocity, there is also quite a number of Minecraft server proxies. These are all built independently from any Minecraft server. All provide a plugin loader + API. Out of the three, BungeeCord (by MD-5) is probably the most popular with Waterfall being a fork of it just like Paper is of Spigot. Waterfall brings many improvements over BungeeCord, but is rarely used as far as i know. Velocity is not in any way connected to BungeeCord and was intended to vastly improve on existing Minecraft proxy systems - but i personally don't think it is worth to use as BungeeCord/Waterfall provides much better compatibility with Spigot/Paper servers. All of the proxies have their quirks, especially when it comes to forge and fabric servers. I think i've covered most things now except SpongeForge. Sponge(Forge) is basically a mix of Forge and Spigot, providing both forge mod and plugin support on the server side. Sponge is an honourable mention here because it brought the now commonly used (across both forge and fabric) mixin system to the light of day. So, i think that's it. If you managed to read through all of that and managed to understand it, then congrats! If you have any suggestions for improvement of any of the sentences above, add another reply and i'll get to fixing it as soon as i can :)
@@cheos I think Fabric server deserves more attention. It’s just an official server, but with Fabric mod loader. So, you modify the behavior with Fabric Mods instead of Spigot Plugins. With the right setup this kind of servers can be even more optimized than Paper ones (with Lithium, for example or many other server-side optimization mods) It’s extremely popular in technical community since it does not change the game behavior by default (lots of technical stuff is broken on paper/spigot). If you are looking more into technical Minecraft, you might want to take a look at the Carpet Mod and its Scarpet scripting language.
Fabric uses Mixin, which injects java bytecode at runtime without needing decompilation. Would also recommend QuiltFlower instead of FernFlower which has some better decompilation. A Fabric dev environment is also quite easy to set up.
@@cheos You are mostly correct, except around the (Craft)Bukkit and md_5 part, SpigotMC was a performance-optimized fork of Bukkit (originally CraftBukkit) created and maintained by md_5. Bukkit (on the other hand) was purchased/owned by mojang (md_5 may have been one of the many contributors but certainly it's not his project) - Mojang liked the idea and decided it was worth the price tag so the community always had it (the original owner was EvilSeph) - it remained an Open-Source project (under LGPL) and people continued to submit patches, however back in 2014 one of the developers of Bukkit (EvilSeph) decided to shut down the project (without any authority to do so, since he sold the project to Mojang and Mojang would continue to update it without him), however he caused panic in the community which eventually resulted in one of the other developers (Wolvereness?) getting fed up and issuing a DMCA takedown to both Bukkit and Spigot, since it contained code that he/she had wrote and the original license he/she thought governed the project was in fact void, since Bukkit was owned by Mojang and contained Mojang-owned code (the minecraft-server code). After everyone in the Bukkit team threw the towel and stopped developing the project, however md_5 consulted with his lawyers which gave him a greenlight and kept the project going by himself (and eventually some Bukkit developers), always updating Bukkit and then updating his own fork - Spigot which was made on top of Bukkit. This remains the case to the this day, and is why you can't download a .jar of the server anymore, you have to "compile" it yourself (via BuildTools). As for Sponge/SpongeForge, Sponge is just a new minecraft server implementation, not based on Bukkit at all (and incompatible with Bukkit-API plugins) that was created after this whole drama. SpongeForge is the Sponge server base with the Forge API/mod loader on top, providing the ability to mod servers in addition to plugins and is the modern alternative to Cauldron (Bukkit + Forge).
I made some of the first survival server mods back in 2010 before they had Bukkit or any obfuscation mappings so we had to do this stuff ourselves. Seeing JD-GUI displaying obfuscated Minecraft code again is nostalgic :D One time while trying to figure out how to spawn mobs for Runecraft, I found the chicken class based on its texture string and made it divide by zero in the constructor. This crashed the server when one spawned and gave me a stack trace back through the obfuscated code so I could find the code that spawned it. Then I made a joke patch that caused every block placed to become a chicken. I remember being surprised about the lack of language in the license agreement preventing this stuff too. Back in the early days Notch wrote his own short and readable license agreement by hand without any legalese. He did get mad when people distributed any unmodified classes or full jars but usually didn’t mind custom patches.
To expand on that old drama: Bukkit was the original modded server with a plugin API. It died when one of the maintainers who wrote one of the core systems caught wind that Mojang actually owns Bukkit, legally speaking, because they bought it. He was not happy that his free contributions were made to a project that was ultimately owned by the ones who made the game, so he'd essentially worked for them for free (bukkit was very popular, especially due to huge commercial minigame servers that used it, which themselves got people to buy Minecraft). So that developer filed a DMCA takedown to end Bukkit. The spigot team found a legal loophole to continue using the old code, at the expense of legally not being able to offer direct downloads, requiring people to build their own jar using the so called BuildTools. Later came paper, trying to fix some of spigot's issues. To be honest, I don't really like spigot. The devs have a bit of an attitude and aren't really all that open to community contributions that add new features and the like, most of the time at least. This is one of the problems paper aims to solve. I've personally contributed a feature to it and they've merged it, it would've been unthinkable with spigot. Well, to summarize: bukkit modifies the vanilla (unmodified) server, spigot expands bukkit, paper expands spigot. In addition, there's bungeecord, which is a proxy that you can use to more or less link several Minecraft servers that the player can switch between in-game simply by running /server (target), all without disconnecting and reconnecting. This was created by one of spigot's main people. Similar to the other spigot-paper situation, the paper people made their own fork based on it, named waterfall. Then there's also a separate project, geyser, which translates Minecraft Bedrock Edition (mobile, consoles, etc) packets to Java edition packets and vice versa, allowing bedrock players to join java servers. This is just what I remember, I didn't fact check, don't 100% believe what I say. It shouldn't be all wrong, though.
An important distinction to make is Bukkit/CraftBukkit. Bukkit refers to the Plugin API which is still in use for all server implementations - although expanded upon. CraftBukkit is the original server implementation, which has mostly been forgotten now to the bigger forks such as Spigot and later Paper.
Wow the geyser plugin/project is quite surprising. I remember 6 some years ago my main problem with Pocket Edition was the absolute lack of servers close to me (and well, the controls were bad for pvping, still are) This solves a ton of problems.
Adding on to geyser: There’s also geyser reversion, which essentially acts as a translator between Edu minecraft and geyser. Due to the way geyser add ons have changed, it doesn’t work with the latest geyser version - but running via version/via backwards on the Java server with the old geyser version lets it all work. The person who makes geyser reversion also operates an Aus MC server network - so for quite a while we were the only Java, Bedrock & Edu cross-play server. They’ve been pretty busy - but are planning to recode it with the new geyser add on system (or potentially completely decouple it - and act as it’s own proxy to the Bedrock protocol, which geyser can then translate to Java).
As a professional developer for Spigot/Paper Minecraft protocol projects, I applaud your explanations of how Minecraft and those projects work. I'd love to see you experiment even more with all of these concepts.
FYI, the file you showed (at around 10:58 ) that jd-gui wasn't able to decompile, but fernflower could was marked as "synthetic" as you saw, that marking means that this class was generated by a compiler. Looking at the name it has a $ inside, this means it's actually an inner class, it looked like generated code from an Enum This marking tends to throw off some decompilers such as jd-gui that try to show the most 1:1 source code as the one that was compiled The biggest difference between yarn & official mappings is the license, i belive that yarn mappings were actually created *after* mojang released the official ones, but where as the officials have a bit of a restrictive license, yarn is CC0 (allows everything) As for the relations between the different "custom servers", it's a bit complicated, notably after the dmca of the github repo you saw, but basically Bukkit defines the "api" for plugins, CraftBukkit implements that API, Spigot applies patches to craftbukkit and bukkit, paper applies patches to spigot (and by extension, craftbukkit & bukkit)
Yarn was created before Mojang released their mappings, I was actually on their Discord when this happened. Yarn was created to have a better license compared to MCP, which is what Forge uses. It was also continued for the same reasons after Mojang released their mappings, and similarily to MCP mappings, a rule was put in place that you must not look at official mappings when contributing to yarn.
At 17:40 aswell, I also love the little detail at 02:06 "1/2 player sleeping". Herobrine might be back ;). Mojang also didn’t mention the „remove Herobrine“ part in the patchnotes since 1.17 (I think). They’ve done it every version as an easteregg :D. Btw: Happy Easter
I like how you explained every detail of reverse engineering/modding the server just to say "ANYWAYS" and get back to the Minecraft part :D Awesome series!
Paper is a fork from spigot, spigot is a fork of bukkit, bukkit is an api for minecraft servers. When you run any of this server it usually download the official minecraft jar and use it to apply patches and other things. Minecraft eula said that you can not publish any code developed by mojang, so the people how had developed this servers can't actually edit the source code. I am more familiar with Fabric that uses mixins to edit the code before is runned, but is the same idea you create a jar that edit the server locally and run it. This way you are legal but you can still having all this tools to modify minecraft
Glad to see this wasn't just an april fools joke after all (although still kinda is in a way? eh). Looking forward to what you do with this series. Hopefully you can make this 'Season' longer than PwnAdventure Season 1 was. Minecraft Hacking/Modding has so much potentiality I'm sure you'd find a lot of valuable content to make videos of. Especially if you look into the world of anti-cheats and anti-cheat plugins available. Knowing you, you'd most likely find much enjoyment in cracking the codes and sharing your journey with us. As always, proud to support your channel, hope to see what you give us in the future both with this and other videos. Keep it up man!
It's also worth mentioning that there was a fair bit of feedback from the modding community to the vanilla version of the game. For example, Pistons were born as a mod, then implemented in the game itself. Not to mention that some high profile mod-developers were later hired as actual game devs for the actual game!
I started playing Minecraft in 2011 when I was 11. At the time I was programming and doing web development for a few years. I've spent literally half my life playing Minecraft, making servers & developing new & maintaining existing server plugins. It's been an amazing ride, and I have learned A LOT. It's the same for MANY other people out there, they all just wanna make something cool and fun, and if they can get $5 then it's a win-win for them. People outside of the minecraft community don't understand how important Minecraft is, and how the community has been literally a MAJOR important part to the game. Especially in the very early days of Minecraft, when people made some simple basic singleplayer mods, that ended up actually becoming part of the game.
NMS (the original Minecraft server) -> CraftBukkit (which was originally developed by Mojang under aliases) -> Spigot -> DMCA -> Paper and the workarounds
Fun to see that Bukkit is still referenced to this day. I did quite some Server Modding/Plugins for Bukkit back in the day and was actually how I got into programming. So seeing this Series is really bringing back memories. A bit history of the Servers from what I can remember: - Bukkit: A slightly modified vanilla Server, which was made as a side-project from one of the Mojang Dev (While still working on the game). It didn't really add any features (as the server can only do so much, that a client would also understand), but it had a complete and insanely well written/documented API to do anything you could think of. This spawned a huge plugin development scene where all the mini-game server originated from. Otherwise Immensely used by general folks as installting/managing plugins was rather simple. Due to the licensing issues (by publishing the server fully with source-code and all, not like Paper does it nowadays), the project got DMCA striked and quickly became "irrelevant". - Spigot: A modification of Bukkit, which had performance improvements and a couple neat features like load-balancing. As far as I remember it also had some minimal forge interoperability - so you could have certain forge client mods running on the server as well. Operated as basically a fork of Bukkit and was more widely used on mini-game servers, due to the mentioned load-balancing and it was a bit more complex to setup. Due to the Bukkit DMCA, most devs switched to Spigot, but same fate as Bukkit arose, and got DMCAd at one point. - Sponge: Don't know too much about it, but as far as I remember this one wasn't based on Bukkit and instead made their own efford of providing an API to the Server. --- After Bukkit got joiked, I did leave the scene, that's why I don't know too much about the other Servers. Hopefully this is somewhat informative ... and correct, has been a while.
Summary of the DMCA is that the bukkit team basically decided for various reasons that they where done (EULA, changes in MC going forward requiring large changes to the API which they didn't have the motivation to deal with considering everything else, etc), and so they closed the project, mojangs devs came along like "nope, you can't close this, we own it", and thus one of the OG devs DMCA'd the project, generally that the craftbukkit software was a major stepping stone in the scope of multiplayer and is a part of what made it huge; Bukkit, the API, and CraftBukkit, the implementation of that into the vanilla server, are basically both dead now with spigot maintaining a fork of them still retaining the original projects names Paper, is a fork of Spigot, this we have our entire set of tooling which is designed to patch over spigot, as well as the various decompile steps, the community has maintained patches over fernflower for years to improve the output which makes it cleaner, you'll see much nicer results with forgeflower or quiltflower than with fernflower or JD-GUI, but, you can't cleanly browse the decompiled source as it just dumps the .java files into a jar by default. Paper uses a mixture of the mojang mappings file for class/method names, and uses yarn for param names on methods as mojang doesn't include those one cool project people have mentioned MCP, which maintains decompile patches for the entire tree to fix mistakes in the decompilation, vs in our side of the ecosystem in which we just patch the files which we modify (long term, we do wanna do the entire server tree, but, we have various other projects before we get to that). The joy is is that there's basically 10 years of efforts towards improving the entire toolchain, remapping tools (e.g. the tiny remapper), improvements towards the decompilers, tools for analysing jars to make the output more consistent, etc; papers distribution method is also "fun", paperclip, our bootstrap, downloads and patches the vanilla server jar with a binary diff, we did update it when mojang turned into a bundling bootstrap, but, that's part of the magic of how we offer a clean download on the website. The good news is that much of our team is active within the wider community as well as part of various groups whom interact with mojang, so, people worrying that mojang is gonna feed us to the dogs is far from our current interactions with one another, we're part of why the mappings where released! :D Also, glad to see that you agreed to liking tacos :)
I'm really greatful for this series, because your perspective is very much what I need. Like you sometimes I don't have the motivation to follow the "best practice path". Spinning my interest into something useful was never something I really understood - so seeing you do this is amazing!
I'm glad Mojang still obviously supports modding. I was concerned that, as Java became like Bedrock, modding would be dropped in exchange for something more like the Minecraft Marketplace.
I reverse engineer android malware every day for my job, and when I saw that obfuscated java code I actually recognized that style of obfuscation when it comes to the scrambling of class/method/var names. It's not a show stopper but it makes me feel cross-eyed sometimes.
Heya! Here's a basic summary of the mess with Minecraft servers (Java at least, hopefully implementations in other languages are neater): - Craftbukkit: Essentially an API layer of functions. Iirc no real functionality is in here, just interfaces and maybe the occasional abstract class. Almost every Java and Bedrock server implementation I've looked at has used this or has an API very similar to this. - Bukkit: Implementation of Craftbukkit that builds off of decompiled versions of Minecraft's official server jar - Spigot: fork of Bukkit that improves some things and adds more functionality - Paper Spigot: fork of Spigot for further optimization Then there's BungeeCord and Waterfall (PaperMC's fork), which is just a proxy that allows networks like Hypixel to exist on multiple servers instead of just one.
As someone who was around when bukkit/craftbukkit and spigot were getting big its nice to see that those efforts are still alive thanks to projects like paper. and i especially liked the explanation about (intermediate) mappings, i never knew its done that way. anyone remember hey0 hMod, that the OG minecraft server.
The good old times. :-) When I tried to create my own mods like building spheres, read through the Bukkit source code ... Btw, I was completely fascinated with the event system in Bukkit :-) But all the dynamic class loading and patching was great ...
It seems LiveOverflow evolving from usual LetsPlayer into Prison Escapist. BTW @LiveOverflow at some point you should check how prisons use chunk bans exploit for the defense(e.g. Gaia's Vault).
That's an amazing plot point! Maybe I should develop a "hack" client that uses that quarry to do packet manipulation, learning python with it could be hard tho.
*I think that the whole IT "Community" can learn something from Minecraft. For Example the log4j exploit or the mirai ddos network which both could've caused or caused huge losses were both discovered or made by the minecraft community. That's just mind-blowing for me!*
I suspect the EULA is silent on the matter of decompilation for creating mods because such an act is permitted under EU law even if the license says otherwise.
Why doesn't Mojang simply make the code for minecraft public? If they release source mappings with which we can recreate the source code 1:1, why would they want modders to take the extra step of decompiling and applying source maps? Wouldn't it be simpler for everyong if mojang released the source code?
How to deal with professional burnout 101: place yourself in a situation you remember from before you started your career, and realize you now see through the facade like Neo
There even was/is this thing called MCP or Mod Coder Pack released by one of the Mojang Developers, basically including the raw Sourcecode of the game with instructions on running it / building it.
The old user converter is most likely there to support version migration. I'd wager it just loads the old config files, converts them into an object of some sort, then saves them in their new configuration.
EULAs in the EU that have a "no reverse engineering" clause are not enforcible. US law also makes reverse engineering null and void. Check Sony v. Bleem. EDIT: I misremembered the case. It's Sony v Connectix (an earlier commercial PS1 emulator): en.m.wikipedia.org/wiki/Sony_Computer_Entertainment,_Inc._v._Connectix_Corp.
I looked up this case and it seems to only revolve around Bleem using screenshots of games owned by Sony. It specifically stated that the legality of the emulator itself was not a stake, so I don't see how this case pertains to law around RE. The only time the phrase "reverse engineering" was used that I found was just an explanation that the emulator was made by reverse engineering the console, but again that wasn't the focus of the lawsuit.
If there are legal clauses about not being allowed to decompile, disassemble, blah blah, you can just move to certain countries that won't be listed where these sorts of clauses will hold up in court about as much as claiming that farting in a bucket is illegal
When you change the variable/class/method names you could utilize the intellij refactor tools. So you won't need to modify all occurrences in the project.
IntelliJ has a plugin that is made for working on Minecraft. It has all the mapping and stuff. Or you can create a dev environment with Forge or Fabric and just use their mappings.
8:04 (minecraft player + modder since beta days) Oh, I would absolutely _love_ to make a mindmap like that, just to put into paper the history of modding and how everything came to be.
In my opinion, Hacking means using something in unintended ways. I heard this from someone, but I don't remember who, but it was on a podcast named "The Hacker Next Door", where they compared hacking to using duct tape, where they said that if you use duct tape but not for ducting then you are a hacker.
Meeeeeh. It's for their own profit, and they know that. Without proper servers and their plugins, minecraft wouldn't be half of what it actually has become over the years. They still obfuscate like douches and thus put a lot of work and effort towards the dev community.
@@blvckbytes7329 I don't think you're giving Mojang enough credit. Modding has historically been a part of Minecraft for a long time. Hell, Dinnerbone was a lead developer on Bukkit, and even added features to the base game to accommodate modders (see: plugin message packets). Now, I agree that now Mojang Studios/Microsoft does not put the kibosh on modding because it would kill their game, but it hasn't always been this way. Obfuscation is annoying, but obfuscated code runs faster. Remember the old java launcher? It isn't obfuscated at all because it isn't performance sensitive.
I had so much fun tinkering and breaking minecraft in my early teens maybe a decade ago. So many less sanity checks too. Really makes you think about some of the NBT data and arbitrary book edit exploits people are doing these days.
There are really many channels for Minecraft history videos and technical things, e.g. TheMisterEpic or SalC1. TheMisterEpic also made a video about the history of the Minecraft servers and the first code for servers yesterday. SalC1 does also videos about Seed finding Project, such as .pnj or the worlds in the Minecraft main menu. He did also a vid why Java Servers are bad, they can't do Multitheading and therefor are much much more expensive than Bedrock servers Is there not an extra law in the EU that allows revere engineering? Since Monjang is based in Sweden, they know about it and act accordingly. 10:33 Earlier before 1.4 there was no .jar file and the class files where just in the bin folder. You also always had to delete the meta-inf file if you want to use mods. So a question, what exactly is in there, what does the file do?
A good point on the ambiguity of the word "hacking". Originally this is simply someone who explores (computer) tech, so even trying to set up a web server is "hacking" - whether an official nginx package or just a python http socket listener. The offensive or destructive side of this was "cracking". I'm disappointed this distinction has been lost to time, as hacking is a creative and joyful pursuit, but news media especially likes simplifications.
I suspect you are aware but recently the technical community developed a way to obtain bedrock in 1.12, end portal frames and many other items not normally obtainable. There is also something they call shadow items that you can still get in 1.18.1 afaik (with a different method than in 1.17). Update suppression, light suppression are two other technical things.
A few more details about modding:
There's two major modloaders, forge and fabric. Fabric is relatively new. Both Forge and Fabric have (had?) their own mappings, which are different. Mojang also released the official ones, however due to legal and technical (they weren't complete) issues, they couldn't be used until a few years after their release.
Forge mappings are under a more restrictive license, so due to legal stuff, if you looked onto Forge mappings, you couldn't contribute to Fabric mappings. Same for mojang mappings, if you looked at them you couldn't contribute to both forge or fabric.
Forge currently uses the mojang mappings, so the legal and technical stuff seems to have been resolved, I haven't been closely following.
The ways that Forge and Fabric work is actually different. While Forge decompiles the source code, applies patches and then recompiles, Fabric manipulates the bytecode of the jar (Afaik, it's long since I checked).
Both load jar files from a set directory and inject them into the classpath. While Forge provides a framework, Fabric *just* injects jar files.
There's also the old method of modding, which involves replacing the classes in the minecraft jar, which also means that you cannot have many mods at once. This method is long dead, however.
I cannot provide details for servers / plugins, because I only worked with Forge and Fabric.
Minecraft modding is fascinating, and it gets even crazier the deeper you dive in, so good luck!
Gonna append to this with a little extra information:
Regarding the legal stuff with mojang mappings:
There are still a lot of uncertainties but both forge and fabric now provide them in good faith as mojang has stated multiple times that the use of official mappings is allowed even though the actual legal text is pretty unclear in that regard.
Then there is still something to say about replacing actual classes: OptiFine
This old piece of code still does something like replacing Minecraft classes - at least when installed directly and not loaded through forge (or fabric when using OptiFine + OptiFabric). By now there are way better alternatives of OptiFine out there (like Sodium + Iris for fabric or Magnesium + Oculus for forge), but i won't go too deep talking about that stuff here.
So then there's just one thing left. Servers / Plugins.
In the beginning there was (just like with modding) the method of replacing class files.
Then, CraftBukkit came - it is mostly referred to as Bukkit now, though they are not exactly the same system (it's complicated...) - CraftBukkit implemented a plugin loader and an API for said plugins to use. Even though direct server code access was and still is possible, it was and is to this day, strongly discouraged.
With Minecraft 1.8 around the corner, the developer of (Craft)Bukkit, MD-5, decided to build an all-new system on top of Bukkit, Spigot. Spigot brought many improvements with it and was mostly intended as a replacement of Bukkit. Even though Spigot was available, Bukkit builds were still used until pretty recent versions, where the build system was changed to no longer output both Bukkit and Spigot jars, but only the Spigot ones. This was probably a change for the better as Spigot literally is just an improved version of Bukkit.
Then there's Paper, a spigot fork originally created by Aikar, now maintained by a large community. It is basically spigot, but provides a vastly extended and overhauled API while still being compatible with all Spigot plugins. Paper also provides many more features, optimizations and config options as compared to Spigot. It is now probably the most used Minecraft server software.
Purpur, a pretty unknown fork of Paper exists too, but i don't think it will ever overtake any of it's alternatives such as Spigot or Paper.
With BungeeCord, Waterfall and Velocity, there is also quite a number of Minecraft server proxies.
These are all built independently from any Minecraft server. All provide a plugin loader + API.
Out of the three, BungeeCord (by MD-5) is probably the most popular with Waterfall being a fork of it just like Paper is of Spigot.
Waterfall brings many improvements over BungeeCord, but is rarely used as far as i know.
Velocity is not in any way connected to BungeeCord and was intended to vastly improve on existing Minecraft proxy systems - but i personally don't think it is worth to use as BungeeCord/Waterfall provides much better compatibility with Spigot/Paper servers.
All of the proxies have their quirks, especially when it comes to forge and fabric servers.
I think i've covered most things now except SpongeForge. Sponge(Forge) is basically a mix of Forge and Spigot, providing both forge mod and plugin support on the server side.
Sponge is an honourable mention here because it brought the now commonly used (across both forge and fabric) mixin system to the light of day.
So, i think that's it. If you managed to read through all of that and managed to understand it, then congrats!
If you have any suggestions for improvement of any of the sentences above, add another reply and i'll get to fixing it as soon as i can :)
@@cheos I don't think purpur is so unknown as you think. on th mypet dc there where multiple cases of errors with Purpur.
@@cheos I think Fabric server deserves more attention. It’s just an official server, but with Fabric mod loader. So, you modify the behavior with Fabric Mods instead of Spigot Plugins. With the right setup this kind of servers can be even more optimized than Paper ones (with Lithium, for example or many other server-side optimization mods)
It’s extremely popular in technical community since it does not change the game behavior by default (lots of technical stuff is broken on paper/spigot). If you are looking more into technical Minecraft, you might want to take a look at the Carpet Mod and its Scarpet scripting language.
Fabric uses Mixin, which injects java bytecode at runtime without needing decompilation. Would also recommend QuiltFlower instead of FernFlower which has some better decompilation. A Fabric dev environment is also quite easy to set up.
@@cheos You are mostly correct, except around the (Craft)Bukkit and md_5 part, SpigotMC was a performance-optimized fork of Bukkit (originally CraftBukkit) created and maintained by md_5. Bukkit (on the other hand) was purchased/owned by mojang (md_5 may have been one of the many contributors but certainly it's not his project) - Mojang liked the idea and decided it was worth the price tag so the community always had it (the original owner was EvilSeph) - it remained an Open-Source project (under LGPL) and people continued to submit patches, however back in 2014 one of the developers of Bukkit (EvilSeph) decided to shut down the project (without any authority to do so, since he sold the project to Mojang and Mojang would continue to update it without him), however he caused panic in the community which eventually resulted in one of the other developers (Wolvereness?) getting fed up and issuing a DMCA takedown to both Bukkit and Spigot, since it contained code that he/she had wrote and the original license he/she thought governed the project was in fact void, since Bukkit was owned by Mojang and contained Mojang-owned code (the minecraft-server code). After everyone in the Bukkit team threw the towel and stopped developing the project, however md_5 consulted with his lawyers which gave him a greenlight and kept the project going by himself (and eventually some Bukkit developers), always updating Bukkit and then updating his own fork - Spigot which was made on top of Bukkit. This remains the case to the this day, and is why you can't download a .jar of the server anymore, you have to "compile" it yourself (via BuildTools).
As for Sponge/SpongeForge, Sponge is just a new minecraft server implementation, not based on Bukkit at all (and incompatible with Bukkit-API plugins) that was created after this whole drama. SpongeForge is the Sponge server base with the Forge API/mod loader on top, providing the ability to mod servers in addition to plugins and is the modern alternative to Cauldron (Bukkit + Forge).
I made some of the first survival server mods back in 2010 before they had Bukkit or any obfuscation mappings so we had to do this stuff ourselves. Seeing JD-GUI displaying obfuscated Minecraft code again is nostalgic :D One time while trying to figure out how to spawn mobs for Runecraft, I found the chicken class based on its texture string and made it divide by zero in the constructor. This crashed the server when one spawned and gave me a stack trace back through the obfuscated code so I could find the code that spawned it. Then I made a joke patch that caused every block placed to become a chicken. I remember being surprised about the lack of language in the license agreement preventing this stuff too. Back in the early days Notch wrote his own short and readable license agreement by hand without any legalese. He did get mad when people distributed any unmodified classes or full jars but usually didn’t mind custom patches.
To expand on that old drama: Bukkit was the original modded server with a plugin API. It died when one of the maintainers who wrote one of the core systems caught wind that Mojang actually owns Bukkit, legally speaking, because they bought it. He was not happy that his free contributions were made to a project that was ultimately owned by the ones who made the game, so he'd essentially worked for them for free (bukkit was very popular, especially due to huge commercial minigame servers that used it, which themselves got people to buy Minecraft).
So that developer filed a DMCA takedown to end Bukkit. The spigot team found a legal loophole to continue using the old code, at the expense of legally not being able to offer direct downloads, requiring people to build their own jar using the so called BuildTools.
Later came paper, trying to fix some of spigot's issues. To be honest, I don't really like spigot. The devs have a bit of an attitude and aren't really all that open to community contributions that add new features and the like, most of the time at least.
This is one of the problems paper aims to solve. I've personally contributed a feature to it and they've merged it, it would've been unthinkable with spigot.
Well, to summarize: bukkit modifies the vanilla (unmodified) server, spigot expands bukkit, paper expands spigot.
In addition, there's bungeecord, which is a proxy that you can use to more or less link several Minecraft servers that the player can switch between in-game simply by running /server (target), all without disconnecting and reconnecting.
This was created by one of spigot's main people. Similar to the other spigot-paper situation, the paper people made their own fork based on it, named waterfall.
Then there's also a separate project, geyser, which translates Minecraft Bedrock Edition (mobile, consoles, etc) packets to Java edition packets and vice versa, allowing bedrock players to join java servers.
This is just what I remember, I didn't fact check, don't 100% believe what I say. It shouldn't be all wrong, though.
An important distinction to make is Bukkit/CraftBukkit. Bukkit refers to the Plugin API which is still in use for all server implementations - although expanded upon. CraftBukkit is the original server implementation, which has mostly been forgotten now to the bigger forks such as Spigot and later Paper.
Wow the geyser plugin/project is quite surprising. I remember 6 some years ago my main problem with Pocket Edition was the absolute lack of servers close to me (and well, the controls were bad for pvping, still are)
This solves a ton of problems.
Adding on to geyser: There’s also geyser reversion, which essentially acts as a translator between Edu minecraft and geyser. Due to the way geyser add ons have changed, it doesn’t work with the latest geyser version - but running via version/via backwards on the Java server with the old geyser version lets it all work. The person who makes geyser reversion also operates an Aus MC server network - so for quite a while we were the only Java, Bedrock & Edu cross-play server. They’ve been pretty busy - but are planning to recode it with the new geyser add on system (or potentially completely decouple it - and act as it’s own proxy to the Bedrock protocol, which geyser can then translate to Java).
I've used Geyser during the pandemic and I loved it, since I only own the Android pocket edition version.
As a professional developer for Spigot/Paper Minecraft protocol projects, I applaud your explanations of how Minecraft and those projects work. I'd love to see you experiment even more with all of these concepts.
FYI, the file you showed (at around 10:58 ) that jd-gui wasn't able to decompile, but fernflower could was marked as "synthetic" as you saw, that marking means that this class was generated by a compiler.
Looking at the name it has a $ inside, this means it's actually an inner class, it looked like generated code from an Enum
This marking tends to throw off some decompilers such as jd-gui that try to show the most 1:1 source code as the one that was compiled
The biggest difference between yarn & official mappings is the license, i belive that yarn mappings were actually created *after* mojang released the official ones, but where as the officials have a bit of a restrictive license, yarn is CC0 (allows everything)
As for the relations between the different "custom servers", it's a bit complicated, notably after the dmca of the github repo you saw, but basically
Bukkit defines the "api" for plugins, CraftBukkit implements that API, Spigot applies patches to craftbukkit and bukkit, paper applies patches to spigot (and by extension, craftbukkit & bukkit)
u are smart wanna help me on my homework lol
@@mooky44 ahahahah
@@MBHDPRODUCTION gotta get that help by any means
Yarn was created before Mojang released their mappings, I was actually on their Discord when this happened. Yarn was created to have a better license compared to MCP, which is what Forge uses.
It was also continued for the same reasons after Mojang released their mappings, and similarily to MCP mappings, a rule was put in place that you must not look at official mappings when contributing to yarn.
Loving the series so far. Also love the little detail with herobrine at 14:15.
And at 2:41
@@AsILetYouDie Haha nice eye didn't see that one.
@@AsILetYouDie where's Herobrine at 2:41 i can't see it
@@YigitSonmezer in the cave on the other side of the river
At 17:40 aswell, I also love the little detail at 02:06 "1/2 player sleeping". Herobrine might be back ;). Mojang also didn’t mention the „remove Herobrine“ part in the patchnotes since 1.17 (I think). They’ve done it every version as an easteregg :D. Btw: Happy Easter
Imagine Live overflow and John Hammond as your class teacher 🔥
We would get along very well 😂
and FitMC
@@愛 🤨
@@愛 bruh
And cts
I like how you explained every detail of reverse engineering/modding the server just to say "ANYWAYS" and get back to the Minecraft part :D
Awesome series!
Paper is a fork from spigot, spigot is a fork of bukkit, bukkit is an api for minecraft servers. When you run any of this server it usually download the official minecraft jar and use it to apply patches and other things. Minecraft eula said that you can not publish any code developed by mojang, so the people how had developed this servers can't actually edit the source code. I am more familiar with Fabric that uses mixins to edit the code before is runned, but is the same idea you create a jar that edit the server locally and run it. This way you are legal but you can still having all this tools to modify minecraft
Glad to see this wasn't just an april fools joke after all (although still kinda is in a way? eh). Looking forward to what you do with this series. Hopefully you can make this 'Season' longer than PwnAdventure Season 1 was. Minecraft Hacking/Modding has so much potentiality I'm sure you'd find a lot of valuable content to make videos of. Especially if you look into the world of anti-cheats and anti-cheat plugins available. Knowing you, you'd most likely find much enjoyment in cracking the codes and sharing your journey with us.
As always, proud to support your channel, hope to see what you give us in the future both with this and other videos. Keep it up man!
Hey I would like to go deeper into the more technical minecraft modding/hacking scene, do you know where I could start?
@@shivansh7152 this video is probably a good start lol
Herobrine apperences:
1:28
1:38
14:16
17:41
💀
gg for finding all of them! I only found the last one by myself. How did you manage to find them all?
It's also worth mentioning that there was a fair bit of feedback from the modding community to the vanilla version of the game.
For example, Pistons were born as a mod, then implemented in the game itself.
Not to mention that some high profile mod-developers were later hired as actual game devs for the actual game!
and horses too
I started playing Minecraft in 2011 when I was 11. At the time I was programming and doing web development for a few years. I've spent literally half my life playing Minecraft, making servers & developing new & maintaining existing server plugins. It's been an amazing ride, and I have learned A LOT. It's the same for MANY other people out there, they all just wanna make something cool and fun, and if they can get $5 then it's a win-win for them. People outside of the minecraft community don't understand how important Minecraft is, and how the community has been literally a MAJOR important part to the game. Especially in the very early days of Minecraft, when people made some simple basic singleplayer mods, that ended up actually becoming part of the game.
i laughed so hard when i saw the ending. perfectly cut thank you for this series
Did you spot the other player standing outside the window? His name starts with Hero???? and absolute perfect ending.
@@Atume1982 yes, thats why it was so fucking funny
herobrine in a live overflow video
Also the foreshadowing bit at the beginning (2:00), where there was another player
@@LeoDDJ no
You should look into sponge's mixins. They pretty much revolutionized jar patching
NMS (the original Minecraft server) -> CraftBukkit (which was originally developed by Mojang under aliases) -> Spigot -> DMCA -> Paper and the workarounds
Fun to see that Bukkit is still referenced to this day.
I did quite some Server Modding/Plugins for Bukkit back in the day and was actually how I got into programming.
So seeing this Series is really bringing back memories.
A bit history of the Servers from what I can remember:
- Bukkit: A slightly modified vanilla Server, which was made as a side-project from one of the Mojang Dev (While still working on the game). It didn't really add any features (as the server can only do so much, that a client would also understand), but it had a complete and insanely well written/documented API to do anything you could think of.
This spawned a huge plugin development scene where all the mini-game server originated from.
Otherwise Immensely used by general folks as installting/managing plugins was rather simple.
Due to the licensing issues (by publishing the server fully with source-code and all, not like Paper does it nowadays), the project got DMCA striked and quickly became "irrelevant".
- Spigot: A modification of Bukkit, which had performance improvements and a couple neat features like load-balancing.
As far as I remember it also had some minimal forge interoperability - so you could have certain forge client mods running on the server as well.
Operated as basically a fork of Bukkit and was more widely used on mini-game servers, due to the mentioned load-balancing and it was a bit more complex to setup.
Due to the Bukkit DMCA, most devs switched to Spigot, but same fate as Bukkit arose, and got DMCAd at one point.
- Sponge: Don't know too much about it, but as far as I remember this one wasn't based on Bukkit and instead made their own efford of providing an API to the Server.
---
After Bukkit got joiked, I did leave the scene, that's why I don't know too much about the other Servers.
Hopefully this is somewhat informative ... and correct, has been a while.
Summary of the DMCA is that the bukkit team basically decided for various reasons that they where done (EULA, changes in MC going forward requiring large changes to the API which they didn't have the motivation to deal with considering everything else, etc), and so they closed the project, mojangs devs came along like "nope, you can't close this, we own it", and thus one of the OG devs DMCA'd the project, generally that the craftbukkit software was a major stepping stone in the scope of multiplayer and is a part of what made it huge; Bukkit, the API, and CraftBukkit, the implementation of that into the vanilla server, are basically both dead now with spigot maintaining a fork of them still retaining the original projects names
Paper, is a fork of Spigot, this we have our entire set of tooling which is designed to patch over spigot, as well as the various decompile steps, the community has maintained patches over fernflower for years to improve the output which makes it cleaner, you'll see much nicer results with forgeflower or quiltflower than with fernflower or JD-GUI, but, you can't cleanly browse the decompiled source as it just dumps the .java files into a jar by default. Paper uses a mixture of the mojang mappings file for class/method names, and uses yarn for param names on methods as mojang doesn't include those
one cool project people have mentioned MCP, which maintains decompile patches for the entire tree to fix mistakes in the decompilation, vs in our side of the ecosystem in which we just patch the files which we modify (long term, we do wanna do the entire server tree, but, we have various other projects before we get to that). The joy is is that there's basically 10 years of efforts towards improving the entire toolchain, remapping tools (e.g. the tiny remapper), improvements towards the decompilers, tools for analysing jars to make the output more consistent, etc; papers distribution method is also "fun", paperclip, our bootstrap, downloads and patches the vanilla server jar with a binary diff, we did update it when mojang turned into a bundling bootstrap, but, that's part of the magic of how we offer a clean download on the website. The good news is that much of our team is active within the wider community as well as part of various groups whom interact with mojang, so, people worrying that mojang is gonna feed us to the dogs is far from our current interactions with one another, we're part of why the mappings where released! :D Also, glad to see that you agreed to liking tacos :)
I'm really greatful for this series, because your perspective is very much what I need. Like you sometimes I don't have the motivation to follow the "best practice path". Spinning my interest into something useful was never something I really understood - so seeing you do this is amazing!
Luckily, Liveoverflow is a superhero of just upward teleportation. Who knew it would turn out useful
haha seeing Herobrine out the window in the very last frame at 17:41
same at 2:42
2:05 1/2 players sleepin
14:16 as well
I'm glad Mojang still obviously supports modding. I was concerned that, as Java became like Bedrock, modding would be dropped in exchange for something more like the Minecraft Marketplace.
I reverse engineer android malware every day for my job, and when I saw that obfuscated java code I actually recognized that style of obfuscation when it comes to the scrambling of class/method/var names. It's not a show stopper but it makes me feel cross-eyed sometimes.
Keep up the episodes coming, they keep motivating people to do more research about hacking stuff
As long as EULA for Minecraft doesn't add restriction for reverse engineering, it will stay alive imo
Enter Microsoft
@@yann1446 official mappings were released 5 years after microsoft bought mojang
Even if they did, it's null and void in both the US and EU.
Heya! Here's a basic summary of the mess with Minecraft servers (Java at least, hopefully implementations in other languages are neater):
- Craftbukkit: Essentially an API layer of functions. Iirc no real functionality is in here, just interfaces and maybe the occasional abstract class. Almost every Java and Bedrock server implementation I've looked at has used this or has an API very similar to this.
- Bukkit: Implementation of Craftbukkit that builds off of decompiled versions of Minecraft's official server jar
- Spigot: fork of Bukkit that improves some things and adds more functionality
- Paper Spigot: fork of Spigot for further optimization
Then there's BungeeCord and Waterfall (PaperMC's fork), which is just a proxy that allows networks like Hypixel to exist on multiple servers instead of just one.
As someone who was around when bukkit/craftbukkit and spigot were getting big its nice to see that those efforts are still alive thanks to projects like paper. and i especially liked the explanation about (intermediate) mappings, i never knew its done that way. anyone remember hey0 hMod, that the OG minecraft server.
the minecraft modding community is incredibly cool & impressive. very happy to see it showcased and researched! :)
The good old times. :-)
When I tried to create my own mods like building spheres, read through the Bukkit source code ... Btw, I was completely fascinated with the event system in Bukkit :-)
But all the dynamic class loading and patching was great ...
Minecraft modding is a deep rabbit hole, 10+ years old stuff.
Wow? The effort put into this video, editing, cinematic, even the intro. Well done. Your content is amazing.
It seems LiveOverflow evolving from usual LetsPlayer into Prison Escapist. BTW @LiveOverflow at some point you should check how prisons use chunk bans exploit for the defense(e.g. Gaia's Vault).
That's an amazing plot point! Maybe I should develop a "hack" client that uses that quarry to do packet manipulation, learning python with it could be hard tho.
*I think that the whole IT "Community" can learn something from Minecraft. For Example the log4j exploit or the mirai ddos network which both could've caused or caused huge losses were both discovered or made by the minecraft community. That's just mind-blowing for me!*
You wait until he hears about Glowstone, a Minecraft server written entirely from scratch not using any Mojang code
I suspect the EULA is silent on the matter of decompilation for creating mods because such an act is permitted under EU law even if the license says otherwise.
Your first painting will be crap
Your first dish wil be crap
But your first program will be perfect
And it will be "Hello world"
Why doesn't Mojang simply make the code for minecraft public? If they release source mappings with which we can recreate the source code 1:1, why would they want modders to take the extra step of decompiling and applying source maps? Wouldn't it be simpler for everyong if mojang released the source code?
I appreciate that frame at the end ❤
I love these series! Also nice little detail at 17:41 :)
Glad to see the channel covering more game hacking. Game hacking is probably how a majority of reverse engineers got into the hobby.
This is one of the most interesting videos I ever watched both about Minecraft and Hacking
How to deal with professional burnout 101: place yourself in a situation you remember from before you started your career, and realize you now see through the facade like Neo
12:51 very much appreciate their work :"
There even was/is this thing called MCP or Mod Coder Pack released by one of the Mojang Developers, basically including the raw Sourcecode of the game with instructions on running it / building it.
This is my favourite let's play series.
Please more modding videos! Minecraft has such a huge potential and a lot to learn from it!
I'm sooooo hyped by this serie
The old user converter is most likely there to support version migration. I'd wager it just loads the old config files, converts them into an object of some sort, then saves them in their new configuration.
That rabbit decided it didn’t want to live anymore.
Amazing! Waiting for the next episode!
1:17 ah yes, the famous sunflower fields, that was smooth
EULAs in the EU that have a "no reverse engineering" clause are not enforcible. US law also makes reverse engineering null and void. Check Sony v. Bleem. EDIT: I misremembered the case. It's Sony v Connectix (an earlier commercial PS1 emulator):
en.m.wikipedia.org/wiki/Sony_Computer_Entertainment,_Inc._v._Connectix_Corp.
I looked up this case and it seems to only revolve around Bleem using screenshots of games owned by Sony. It specifically stated that the legality of the emulator itself was not a stake, so I don't see how this case pertains to law around RE. The only time the phrase "reverse engineering" was used that I found was just an explanation that the emulator was made by reverse engineering the console, but again that wasn't the focus of the lawsuit.
As a Minecraft modder and a long time subscriber I like these series ;)
If there are legal clauses about not being allowed to decompile, disassemble, blah blah, you can just move to certain countries that won't be listed where these sorts of clauses will hold up in court about as much as claiming that farting in a bucket is illegal
When you change the variable/class/method names you could utilize the intellij refactor tools. So you won't need to modify all occurrences in the project.
That’s really interesting actually, Mojang just lets you decompile their code and mess with it.
IntelliJ has a plugin that is made for working on Minecraft. It has all the mapping and stuff. Or you can create a dev environment with Forge or Fabric and just use their mappings.
This is 3 morning coffes type of addiction right there...
8:04 (minecraft player + modder since beta days) Oh, I would absolutely _love_ to make a mindmap like that, just to put into paper the history of modding and how everything came to be.
In my opinion, Hacking means using something in unintended ways. I heard this from someone, but I don't remember who, but it was on a podcast named "The Hacker Next Door", where they compared hacking to using duct tape, where they said that if you use duct tape but not for ducting then you are a hacker.
You got a chuckle out of me at the end. Learned a lot over all :)
I cannot believe what I am seeing it with my eyes! LOOL TY SO MUCH!
14:14 This is actually woken me up in the middle of the night
loving the intro
It might be worth doing a video on shadow block tech in both 1.17 and 1.18. Its an interesting bug and an interesting challenge to catch the bug.
14:15 im just gonna pretend i didnt see that
A third of this is video is gameplay, another third is hacking and the last third is just a big shitpost. Love it, looking forward to more.
hahaha i love the small details like Herobrine at 14:15
honorable mention: Valve, a game company entirely built on mods
This is so awesome! I really enjoy this series.
really opened my eyes to how generous mojang actually is. Great video as always!
Meeeeeh. It's for their own profit, and they know that. Without proper servers and their plugins, minecraft wouldn't be half of what it actually has become over the years. They still obfuscate like douches and thus put a lot of work and effort towards the dev community.
@@blvckbytes7329 I don't think you're giving Mojang enough credit. Modding has historically been a part of Minecraft for a long time. Hell, Dinnerbone was a lead developer on Bukkit, and even added features to the base game to accommodate modders (see: plugin message packets). Now, I agree that now Mojang Studios/Microsoft does not put the kibosh on modding because it would kill their game, but it hasn't always been this way.
Obfuscation is annoying, but obfuscated code runs faster. Remember the old java launcher? It isn't obfuscated at all because it isn't performance sensitive.
Herobrine got me some nostalgic tears, leave a like.
That's the most important part of this video)
glad last video wasnt a april fools video
A wild Minecraft Drama approaches
I had so much fun tinkering and breaking minecraft in my early teens maybe a decade ago. So many less sanity checks too. Really makes you think about some of the NBT data and arbitrary book edit exploits people are doing these days.
dude i love this series
1:39 - idk, but is kinda sus ඞ
In France, decompiling cannot be forbidden in a Eula.
Actually, it's even better, a Eula is not considered a contractual agreement.
There are really many channels for Minecraft history videos and technical things, e.g. TheMisterEpic or SalC1.
TheMisterEpic also made a video about the history of the Minecraft servers and the first code for servers yesterday.
SalC1 does also videos about Seed finding Project, such as .pnj or the worlds in the Minecraft main menu. He did also a vid why Java Servers are bad, they can't do Multitheading and therefor are much much more expensive than Bedrock servers
Is there not an extra law in the EU that allows revere engineering? Since Monjang is based in Sweden, they know about it and act accordingly.
10:33 Earlier before 1.4 there was no .jar file and the class files where just in the bin folder. You also always had to delete the meta-inf file if you want to use mods. So a question, what exactly is in there, what does the file do?
You should check on „skylords reborn” project which revives abandoned by EA card game „Battleforge”
The way you show Herobrine for a single frame at the end xD
Nice HeroBrine reference 17:41
You can decompile everything legally. It may be against their eula but that doesn't mean it is illegal.
Spigot hosts their sources on their own Git server
A good point on the ambiguity of the word "hacking". Originally this is simply someone who explores (computer) tech, so even trying to set up a web server is "hacking" - whether an official nginx package or just a python http socket listener. The offensive or destructive side of this was "cracking". I'm disappointed this distinction has been lost to time, as hacking is a creative and joyful pursuit, but news media especially likes simplifications.
i wouldn't use paper for running your server because it patches some vanilla mechanics that could potentially be exploited in some ways
Such a good series man!!
also nice ending ;^)
Haha the Herobrine cameo. Youre an OG minecraft player, I see.
You can swim since 1.12 I think by "running" under water
Also hello 14:16
I'm not sure why, but there was some drama related to the official mappings as well.
Loving this series!
The best video series ever
Lemme sip some WINE while we discuss open source reverse-engineering efforts.
12:57 mojang releases it's code mappings publicly
could use some more work on the mic but, cool!
MY favorite minecraft streamer!!!
I suspect you are aware but recently the technical community developed a way to obtain bedrock in 1.12, end portal frames and many other items not normally obtainable. There is also something they call shadow items that you can still get in 1.18.1 afaik (with a different method than in 1.17). Update suppression, light suppression are two other technical things.
how can you do item shadowing in 1.18?
A project named modcoderpack allow people to edit minecraft source code (client and server) decompiled and remapped
This is such a cool video series 😎