I am just curious. Being ignorant of Java I can only guess. Why do mods need to be updated with each new release. I am guessing that it is the displacements that change? I wrote a lot of mods for World of Warcraft using the Lua language and wrote programs in IBM 370 Assembler and the mods or patches did not always need to be rewritten after each new release.
If you've had a look inside the minecraft jar at some point (you most likely have, since you took up this question in the first place), you'll have seen that all the file names are 1-3 characters like a, gh and bcg. The content of these files change and take on new names every release - the software Mojang uses converts human readable names into obfuscated names make each file have a different name most of the time. This is to prevent easily reading Minecraft's source code.
Now, if you try to install a class file from an old version of Minecraft into a newer version, what the file you're copying represents in the old version isn't what it represents in the new version. Essentially you're creating a duplicate of a class, and in the process of doing so, you also overwrite the class in the newer version, which probably had a different function and task to do than the ones from the file you're copying over. When Minecraft figures it needs the functionality it lost, it crashes.
There's also of course the fact that the source code changes, and mod code has to be updated to correctly implement the changes in the source from one version to another.
I hope this clears some confusion.
Rollback Post to RevisionRollBack
I AM NOT YOUR PERSONAL MINECRAFT MOD SUPPORT AGENT, SO PLEASE DO NOT PM ME ABOUT PROBLEMATIC MODS THAT ARE NOT MINE. If you're having trouble/crashes with a mod, you'll have better luck resolving it in this forum section than PMing me. If you already made a topic, be patient about responses. If you have troubles with anything non-Minecraft related on your PC, I might be able to help, though, but no promises. Even though I could wish to be, I'm not a wizard.
If you've had a look inside the minecraft jar at some point (you most likely have, since you took up this question in the first place), you'll have seen that all the file names are 1-3 characters like a, gh and bcg. The content of these files change and take on new names every release - the software Mojang uses converts human readable names into obfuscated names make each file have a different name most of the time. This is to prevent easily reading Minecraft's source code.
Now, if you try to install a class file from an old version of Minecraft into a newer version, what the file you're copying represents in the old version isn't what it represents in the new version. Essentially you're creating a duplicate of a class, and in the process of doing so, you also overwrite the class in the newer version, which probably had a different function and task to do than the ones from the file you're copying over. When Minecraft figures it needs the functionality it lost, it crashes.
There's also of course the fact that the source code changes, and mod code has to be updated to correctly implement the changes in the source from one version to another.
I hope this clears some confusion.
This is not why mods need updates. Reobfuscating your mods using srg names means that they do not have to be rebuilt for every name change.
The reason why MC mods need updates why WoW ones don't is something different and fairly complicated. I don't have experience with WoW, but the fact that you use lua scripts suggests that the modding was implemented differently. Lua scripts can essentially be treated as a resource. There is probably a section of code in WoW dedicated to loading/interpreting the mods. When a code change happens, the developers are able to change the way the scripts are interpreted.
However, Minecraft doens't have the same kind of modding API. Mods are loaded in java, and have direct access to the minecraft code. There is no simple interface between the mod and the vanilla code, the way it is possible to do with a lua script.
This is not why mods need updates. Reobfuscating your mods using srg names means that they do not have to be rebuilt for every name change.
The reason why MC mods need updates why WoW ones don't is something different and fairly complicated. I don't have experience with WoW, but the fact that you use lua scripts suggests that the modding was implemented differently. Lua scripts can essentially be treated as a resource. There is probably a section of code in WoW dedicated to loading/interpreting the mods. When a code change happens, the developers are able to change the way the scripts are interpreted.
However, Minecraft doens't have the same kind of modding API. Mods are loaded in java, and have direct access to the minecraft code. There is no simple interface between the mod and the vanilla code, the way it is possible to do with a lua script.
How is this not why mods need updates? The code of the mod itself doesn't necessarily change (unless something's happened in the source code which forces it to change). However, if we try to install a 1.6.4 mod in 1.7.2 we all know what will happen. The code for my ChatLog mod has remained the same since Minecraft 1.5 or so, and yet I'm forced to update. The only change between the 1.7.2 version of my mod and the 1.7.4 version is that the file name is bav.class instead of bao.class, and that the name of the class itself, in obfuscated code, changed from bao to bav. The class still performs the same tasks.
I'm not familiar with WoW modding either, but lua scripts (possibly?) indicate that modding support is implemented in the game. In Minecraft, the only way to mod except for Forge, ModLoader, FML, LiteLoader and maybe a few other APIs are using jar edits, and the APIs themselves are also jar edits, maybe with the exception of FML and LiteLoader which seem to be taking advantage of some sort of tweaking system built into Minecraft. (Not sure about Forge.)
I AM NOT YOUR PERSONAL MINECRAFT MOD SUPPORT AGENT, SO PLEASE DO NOT PM ME ABOUT PROBLEMATIC MODS THAT ARE NOT MINE. If you're having trouble/crashes with a mod, you'll have better luck resolving it in this forum section than PMing me. If you already made a topic, be patient about responses. If you have troubles with anything non-Minecraft related on your PC, I might be able to help, though, but no promises. Even though I could wish to be, I'm not a wizard.
Lua is a scripting language in the same way that JavaScript is a scripting language (Lua is like JavaScript for game design). The fact that WoW uses Lua scripts means that WoW has a general-purpose scripting engine to expose the internals of the game without recompiling after each change. They weren't necessarily trying to support modding, they just didn't want to recompile every update (because compiling C++ is a PAIN IN THE ***).
The short, simple, honest answer to the original question is that Minecraft has no scripting engine and the identifier for each class/function has its name scrambled into random letters by an obfuscater that will generate DIFFERENT random letters every time Mojang runs it (even for the same code).
Obfuscation is a common practice to discourage other programmers from stealing parts of their program (the reasoning goes that the amount of time it takes to deobfuscate is more than it takes to invent your own solution). You will find that the really important bits of WoW (e.g. account verification and password handling) are obfuscated as well.
The Forge API changes less between versions, so small mods that only use core features often (but not always) work with multiple subversions (e.g. working with both 1.6.2 & 1.6.4). However, I can attest that Forge often changes the names of methods between versions, even when what the method does remains the same (the new name is ogten more descriptive than the old one was).
Rollback Post to RevisionRollBack
My mods: Base Metals, Power Advantage, Steam Advantage, Electric Advantage, Minecraft Mineralogy, Dr. Cyano's Lootable Bodies, Dr. Cyano's Wonderful Wands & Wizarding Robes
So you don't know. Why bother answering?
Now, if you try to install a class file from an old version of Minecraft into a newer version, what the file you're copying represents in the old version isn't what it represents in the new version. Essentially you're creating a duplicate of a class, and in the process of doing so, you also overwrite the class in the newer version, which probably had a different function and task to do than the ones from the file you're copying over. When Minecraft figures it needs the functionality it lost, it crashes.
There's also of course the fact that the source code changes, and mod code has to be updated to correctly implement the changes in the source from one version to another.
I hope this clears some confusion.
I AM NOT YOUR PERSONAL MINECRAFT MOD SUPPORT AGENT, SO PLEASE DO NOT PM ME ABOUT PROBLEMATIC MODS THAT ARE NOT MINE. If you're having trouble/crashes with a mod, you'll have better luck resolving it in this forum section than PMing me. If you already made a topic, be patient about responses. If you have troubles with anything non-Minecraft related on your PC, I might be able to help, though, but no promises. Even though I could wish to be, I'm not a wizard.
This is not why mods need updates. Reobfuscating your mods using srg names means that they do not have to be rebuilt for every name change.
The reason why MC mods need updates why WoW ones don't is something different and fairly complicated. I don't have experience with WoW, but the fact that you use lua scripts suggests that the modding was implemented differently. Lua scripts can essentially be treated as a resource. There is probably a section of code in WoW dedicated to loading/interpreting the mods. When a code change happens, the developers are able to change the way the scripts are interpreted.
However, Minecraft doens't have the same kind of modding API. Mods are loaded in java, and have direct access to the minecraft code. There is no simple interface between the mod and the vanilla code, the way it is possible to do with a lua script.
How is this not why mods need updates? The code of the mod itself doesn't necessarily change (unless something's happened in the source code which forces it to change). However, if we try to install a 1.6.4 mod in 1.7.2 we all know what will happen. The code for my ChatLog mod has remained the same since Minecraft 1.5 or so, and yet I'm forced to update. The only change between the 1.7.2 version of my mod and the 1.7.4 version is that the file name is bav.class instead of bao.class, and that the name of the class itself, in obfuscated code, changed from bao to bav. The class still performs the same tasks.
I'm not familiar with WoW modding either, but lua scripts (possibly?) indicate that modding support is implemented in the game. In Minecraft, the only way to mod except for Forge, ModLoader, FML, LiteLoader and maybe a few other APIs are using jar edits, and the APIs themselves are also jar edits, maybe with the exception of FML and LiteLoader which seem to be taking advantage of some sort of tweaking system built into Minecraft. (Not sure about Forge.)
I AM NOT YOUR PERSONAL MINECRAFT MOD SUPPORT AGENT, SO PLEASE DO NOT PM ME ABOUT PROBLEMATIC MODS THAT ARE NOT MINE. If you're having trouble/crashes with a mod, you'll have better luck resolving it in this forum section than PMing me. If you already made a topic, be patient about responses. If you have troubles with anything non-Minecraft related on your PC, I might be able to help, though, but no promises. Even though I could wish to be, I'm not a wizard.
The short, simple, honest answer to the original question is that Minecraft has no scripting engine and the identifier for each class/function has its name scrambled into random letters by an obfuscater that will generate DIFFERENT random letters every time Mojang runs it (even for the same code).
Obfuscation is a common practice to discourage other programmers from stealing parts of their program (the reasoning goes that the amount of time it takes to deobfuscate is more than it takes to invent your own solution). You will find that the really important bits of WoW (e.g. account verification and password handling) are obfuscated as well.
The Forge API changes less between versions, so small mods that only use core features often (but not always) work with multiple subversions (e.g. working with both 1.6.2 & 1.6.4). However, I can attest that Forge often changes the names of methods between versions, even when what the method does remains the same (the new name is ogten more descriptive than the old one was).
My mods:
Base Metals, Power Advantage, Steam Advantage, Electric Advantage, Minecraft Mineralogy, Dr. Cyano's Lootable Bodies, Dr. Cyano's Wonderful Wands & Wizarding Robes