For those of you who mod for Minecraft, what is your story on how you first learned to Mod? Did you pick up a book? Use a website? Take a course in college/university? I just started learning Java on Codecademy, and so far, it is very engaging. What's your story?
I'm a fairly new modder but I just learned from picking up Fabric (not attempted Forge yet even though I've used Forge and modded the game as a player since I got Java Edition back in 1.4.5) and attempting Youtube tutorials from a few of the devs I know. Otherwise I picked up Datapacks prior to this (was just curious to give it a go once I'd looked into a few and reviewed many as a Youtuber) and prior to that I've just learned commands like teleport, keepInventory and more over time from Youtubers or experimenting, not so much from doing programming then considering how they work. I have tried MCreator for a few mods but never did anything with them. I've never made any mods public, just seeing how you go about modding a few times. I know more about installing mods/different modloaders like a player would than making mods but I have given modding a go.
I took an intro to Java programming class in 2015, and since have learned more about Java from not only classes but also Minecraft modding. Most of the modding I do is meant to be server-side only, as in players don't need to download it. These are called "plugins" in case anyone reading hadn't known. At first I was working on plugins that could improve the factions-pvp type of environment- I added a betting system for PvP, called PvPLootbags, specially crafted compasses that could point to factions bases, etc.
But now, for quite a while I have been focused on plugins that can help improve Minecraft as a whole. These can range from fixing hacks and exploits to changing large mechanics of the game, or adding custom items for fun. The problem is that many players have very different ideas and wants, and I often get caught up in asking myself at what point most players would like something. So I've slowed down on publishing mods and plugins, not because I've gotten worse at programming, but because I worry about if players will like it, or if they will use mechanics in a way that is bad for gameplay. When many people talk about their nostalgia for the game, they talk about the features of very old versions like alpha or beta, but I don't miss them too much directly. I mainly miss how people used to play the game, but that's pretty hard to encourage... and even with exploits alone, there's a lot that can be fixed.
Like others, I had some programming experience from school, but my knowledge of Java itself was pretty much self-taught (many programming languages are similar enough that you can learn a new one pretty easily), mainly from directly modifying the game within MCP, as I continue to do so to this day to mod the game (compatibility with other mods isn't an issue as I don't use any; I've even recently ditched support for Optifine so I don't have to use hacky work-arounds to avoid modifying classes it modifies, or worry about MCP incorrectly reobfuscating unmodified classes that overwrite it (for some reason this happens when I add too many new classes, which I've previously had to remove), and enabling me to add more functionality), which has gradually evolved in complexity over the years, from just changing the size and number of tunnels in cave systems by changing some numbers, to adding new biomes and related structures, to new blocks/items/entities to a complete overhaul of most of the game engine, with nearly 400 modified and new classes totaling 6 MB of source code in an in-progress version of TMCW (IMO, my rewrites are vastly superior to anything Mojang can do; they constantly claim "performance improvements" but somehow the latest version uses like 10 times the resources).
That said, a lot of my code isn't much different from the "Notch" engine 1.6.4 was based on (the first major rewrite occurred in 1.8); my lighting engine is basically the same as vanilla but it is much faster due to optimizing loops and chunk data access and making smart use of data caching, same for block rendering and world generation; rendering in general is the same but I greatly reduce the amount of calls to OpenGL, making rendering up to 10 times faster in some cases, such as cloud and font rendering, and otherwise I mainly add new features by copying and modifying existing ones (I suppose most people do this anyway to reduce the amount of code they have to write; I've seen the code for some Forge mods and they just copied and modified code from vanilla).
Also, at this point, I don't even see my mods as mods but a way to make my own game or updates, which is also part of the reason why I've never updated past 1.6.4 (this contributes to TMCW not being that popular (an understatement; most of the results are also for a 1.7.10 mod that only includes the basic cave generation) but the main reason why I started and continue to mod is for my own enjoyment; I've had some people suggest changes to TMCW, such as making biomes more realistic (no snowy next to hot) but I made them that way because I prefer it. I do get some features from suggestions, as well as bug reports, such as MC-2025 and MC-43968); the number of such reports with fixes provided, yet not implemented by Mojang, and new bugs, some serious, such as MC-74762 (note how long this bug went unfixed for) is another thing that turns me off from newer versions; I find the "smooth" lighting in current versions to be hideous (based on old screenshots I fixed this at least 3 years ago, it isn't publicly available yet since I modified Optifine itself to fix it and have to separate my code from it), along with the lack of true complete darkness).