We have moved to our own sub-forum on the BuildCraft Forums. http://www.mod-build...necraft-forge/.
You can register on the forum main page http://www.mod-buildcraft.com/forum/.
When reporting bugs make your OWN THREAD so that we can address it individually. Also if you are reporting a bug please provide a error log. There is always a error log.
If you are on windows, you can use this batch file to get the error log. For mac users, just run your launcher from terminal: java -jar minecraft.jar
Hoping to see you in the new forum <3
The following is provided for purely archival purposes, none of these links are for current downloads.
For Players
INFO In front of the problems we're experiencing with SourceForge downloads, the important files are now downloadable from SourceForge and MediaFire. Let us know if there's any more problems!
IMPORTANT! Please go to the post of the mod you were trying to install if you have any question - including installation questions. The rest of this thread should be for modders discussions only.
If you've been instructed by the mod you're trying to install to get Minecraft Forge, you're just interested into that section. These instructions supposed that you're familiar with ModLoader / ModLoader MP installation mechanism.
!!!IMPORTANT!!! PLAYERS, YOU ONLY NEED TO DOWNLOAD AND INSTALL THE FILE BELOW:
Open your minecraft.jar, open the zip above, drop the contents of the zip into minecraft.jar, just as you did for the ModLoader and / or ModLoaderMP. You're all set.
You've installed the Minecraft Forge API / compatibilty layers. You only need to do this once for all mods requiring it. Note that certain mod may include Minecraft Forge in their code, in which case you don't have to install the forge, but it's no harm to add it on top of the existing installation.
Open your minecraft_server.jar, open the server zip, drop the contents of the server zip into minecraft.jar, just as you did for the ModLoaderMP Server.
Minecraft Forge is an API providing extra modding capabilities. These capabilities have been added to provide support for the different mods using the Forge.
It is intended to be an open source Minecraft modification layer shared among modders to minimize incompatibilities. This is an open-source project. If you need additional hooks and modification, feel free to talk to us and send a patch along. We're welcoming committers as well.
You have the right to copy the forge, and to put it straight in your mods distribution. What the license requires you to do is to provide the sources of the forge that you're using. If you're not doing any modification, just pointing to this page is fine. If you do, you will need to publish your own modifications. Please have a look at the license for more details and feel free to ask any questions on this thread.
In order to start working with the forge, the best it to download the source package, unpack it under your MCP and install it:
For Windows users, you just have to run install.cmd. If you're on linux, you need to copy files and apply patch manually for now, let me know if you got any trouble there. A install.sh for linux users too is on the way, but in the meantime, let us know if you have any setup problems.
http://tiny.cc/errortest_bat
or just run the launcher from the command line: java -jar Minecraft.exe
And make sure you're using the proper Forge version for your MC version.
The download thread has all the info you need.
If you are:
1) Currently writing/maintaining a mod that is incompatible with MinecraftForge, or
2) Currently writing/maintaining a mod that is not base-clean
Then this message is for you! If you need some help porting your mod to MinecraftForge, or if you need a couple extra hooks to make your mod work without base mods, feel free to drop me an email.
My target audience here is people who actually write mods, not users of incompatible mods. I will not fix bugs in mods that you are not the current maintainer of (unless I wrote those mods, of course, I fix my own bugs).
I'm one of the maintainers of MinecraftForge, so I can add new hooks to it, if required.
Right off : does modloader still function? Modloader has a method where you can specify a new ore to be spawned in the game world, and specify the probabilities, etc. Does this method still work? Spacetoad implied that Minecraft forge breaks it (which means that Industrial Craft won't work, nor will plasma craft or any of 50+ other mods)
Right off : does modloader still function? Modloader has a method where you can specify a new ore to be spawned in the game world, and specify the probabilities, etc. Does this method still work? Spacetoad implied that Minecraft forge breaks it (which means that Industrial Craft won't work, nor will plasma craft or any of 50+ other mods)
You know, I thought it did, but looking through the ModLoader documentation, I don't see any reference to that method. I see ones for entities, but not for blocks.
To answer your question, I'm not really sure. I didn't write that hook, and I didn't investigate it since my mod doesn't generate ores.
A couple of the hooks in MinecraftForge are designed for IndustrialCraft, since SpaceToad is trying to get Alblaka onboard.
Anyway, it's designed to be used with ModLoader and ModLoaderMp, since both the current maintainers write mods using both.
Holy crap! Infinite terrain and sprite indexes! That is absolutely awesome! Now I can have even more mods on my server! Thanks a ton. Will be downloading later tonight.
You know, I thought it did, but looking through the ModLoader documentation, I don't see any reference to that method. I see ones for entities, but not for blocks.
To answer your question, I'm not really sure. I didn't write that hook, and I didn't investigate it since my mod doesn't generate ores.
A couple of the hooks in MinecraftForge are designed for IndustrialCraft, since SpaceToad is trying to get Alblaka onboard.
Anyway, it's designed to be used with ModLoader and ModLoaderMp, since both the current maintainers write mods using both.
Ok I was wrong. Apparently here's how it works. Now, I THOUGHT that this method used modloader because another mod creator who wrote an ore redistribution mod specifically mentioned that this method no longer works with his mod. Here's how IC does it :
public void GenerateSurface(World world, Random random, int i, int j)
{
for(int k = 0; k < 25; k++)
{
int j1 = i + random.nextInt(16);
int i2 = random.nextInt(20) + random.nextInt(25);
int l2 = j + random.nextInt(16);
(new WorldGenMinable(oreTin.blockID, 8)).generate(world, random, j1, i2, l2);
}
for(int l = 0; l < 25; l++)
{
int k1 = i + random.nextInt(16);
int j2 = random.nextInt(20) + random.nextInt(30);
int i3 = j + random.nextInt(16);
(new WorldGenMinable(oreCopper.blockID, 9)).generate(world, random, k1, j2, i3);
}
for(int i1 = 0; i1 < 50; i1++)
{
int l1 = i + random.nextInt(16);
int k2 = random.nextInt(64);
int j3 = j + random.nextInt(16);
(new WorldGenMinable(oreUran.blockID, 3)).generate(world, random, l1, k2, j3);
}
public void GenerateSurface(World world, Random rand, int chunkX, int chunkZ)
{
for(int i = 0; i < (RARITY); i++)
{
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(DEPTH);
int randPosZ = chunkZ + rand.nextInt(16);
(new WorldGenMinable(mod_Emeralds.emeraldOre.blockID, 5)).generate(world, rand, randPosX, randPosY, randPosZ);
}
}
That's a tutorial written by someone else.
I still haven't figured out how this code gets called when there must be other instances of GenerateSurface elsewhere in the minecraft code. I'm a C programmer - in java if there are multiple functions with the same name, do they auto-merge together or something? That would make a lot of sense. (because the code above would work just fine if above and below it were other identical segments of code like that for generating the other ores in the minecraft world)
I still haven't figured out how this code gets called when there must be other instances of GenerateSurface elsewhere in the minecraft code. I'm a C programmer - in java if there are multiple functions with the same name, do they auto-merge together or something? That would make a lot of sense. (because the code above would work just fine if above and below it were other identical segments of code like that for generating the other ores in the minecraft world)
No, nothing like that. Actually, there are simply no such thing as global functions in Java at all. You have to take into consideration the class that they belong to.
See in this case, it's really simple. The class is derived from BaseMod, and ModLoader calls GenerateSurface or GenerateNether during the block generation stuff. Which... actually I'm a little puzzled that we added a new hook to also do ore generation. Well, I'll be messing around with ore generation myself pretty soon (sekrit mod is sekrit), so I'll get a chance to give that a good looking at and find out the answer.
See in this case, it's really simple. The class is derived from BaseMod, and ModLoader calls GenerateSurface or GenerateNether during the block generation stuff.
Back to my original question : did you destroy these modloader hooks when you made MineForge? If you didn't, then about 50 different mods will keep on working. (if you browse these forums a lot, you'll notice that the most common mod by far is one that just adds new types of ore and corresponding tools/armor to be made from it)
Granted, all those mods suck, but if you want MineForge to be widely adapted (or better still, get custody of modloader from Risugami so that you can just release a single unified mod) they need to continue working.
Posting because I think you two are the best to develop this thing, and that I hope to god the rest of the modding community wises up to the fact that not everybody can go off and develop their own things to perform these common functions >.<
Back to my original question : did you destroy these modloader hooks when you made MineForge? If you didn't, then about 50 different mods will keep on working. (if you browse these forums a lot, you'll notice that the most common mod by far is one that just adds new types of ore and corresponding tools/armor to be made from it)
Granted, all those mods suck, but if you want MineForge to be widely adapted (or better still, get custody of modloader from Risugami so that you can just release a single unified mod) they need to continue working.
I'm pretty sure we left them alone. I seem to recall that, from the brief look I took, SpaceToad's hook fires in a different place, which is supposed to be easier to add ores from. Or something. I don't really know, I'm talking about a subsystem that I haven't studied at all.
I'd personally love to take over ModLoader and ModLoaderMp, and merge them both with this to make a single unified mod. There's a few people that would have to give the green light for that, though, and I don't expect to see it happen any time soon. Besides that, since I use MCP, I wouldn't be able to update ModLoader as quickly as Risu does, so I'm not sure the tradeoff works for everyone.
Besides that, since I use MCP, I wouldn't be able to update ModLoader as quickly as Risu does, so I'm not sure the tradeoff works for everyone.
That one shouldn't be an issue in 1.8, right? There will need to be one more release of MCP to translate the class/method/variable/etc names from the MCP versions to the REAL names that Notch uses. But after that release, MCP will be defunct.
I'd personally love to take over ModLoader and ModLoaderMp, and merge them both with this to make a single unified mod.
Why not ALSO take over MCE while you're at it? MCE is SIMPLE...there's really not much to the code. 100 lines, tops, and it only touches a few core classes. That way when we run Forge it's just one install and we get unlimited blocks, sprites, AND terrain pngs.
That's a solid case for incorporation.
Just need two people to sign off : Risugami and Flan. And they'll still have commit rights on Sourceforge, so it's not like they lose the ability to add stuff to these mods.
Here's the killer app. This is THE WAY to make Minecraft forge used by EVERYONE.
It absolutely must have this feature. Full stop, no way around it. And if it does, everyone will use it.
AUTO-MOD DOWNLOAD! If a player connects to a multiplayer server running mods, it must be able to automatically download from the server
1. RESOURCE FILES
2. THE MOD's class files
3. The mod's configuration files
And to create a separate instance of minecraft.jar with all the above installed, with a link available in a menu under 'multiplayer'
This way, the average player would need to do the following :
1. Install Mineforge (using a binary patcher installer than finds %appdata%/.minecraft automatically)
2. Play on any server configured to support all this, with any mods imaginable that work together in a grouping on that server.
This is why the overwhelming majority of SMP servers (more than 90%) do not have client-side mods running. It is far too much to expect the average minecraft player to even have winrar installed, much less be able to install a mod according to a complex procedure involving multiple files. At least 75% of the bug reports in the threads for a typical mod are due to mis-installation.
Implementation : if we had an open source FTP client/server library rolled into mineforge this might not be too difficult. Handling all the special cases so that virtually any SMP mod works could be tough.
Here's the killer app. This is THE WAY to make Minecraft forge used by EVERYONE.
That sounds exactly like what the BukkitContrib (=> Spout) project is eventually aiming for. I'm really unsure of how long it'll take to get to that point, though.
It's also aiming to hook -everything- on the client side, like Bukkit on the server, so clientside mods can be made as easily as Bukkit plugins.
But that's a LONG way off.
That sounds exactly like what the BukkitContrib (=> Spout) project is eventually aiming for. I'm really unsure of how long it'll take to get to that point, though.
It's also aiming to hook -everything- on the client side, like Bukkit on the server, so clientside mods can be made as easily as Bukkit plugins.
But that's a LONG way off.
Right. And why wait for the slowpokes to finally make something? Eloraam has added more features to minecraft in the last month than Notch has added in 6 months. This is because she's either more talented or just has more energy.
So transferring the data is straightforward. The real question is which files do we send. How do we make the menu system work. Is relaunching minecraft the best way to roll? Do we use a binary patch library? Or do we just send whole .jar files? (since the user must be connected to the MineForge FTP server via a legit copy of minecraft ANYWAYs the copyright question is moot)
The idea I have is this. When the user clicks the "multiplayer" button a new menu is drawn. There would be a list of the names of preconfigured client packages that the user has downloaded for connecting to his/her favorite minecraft servers. If the user selects one of the entries in the list, minecraft is relaunched and the different mod set is initialized. (i wish this could be done without a relaunch but I understand that modloader and minecraft itself aren't written to work this way).
If the user connects to a server that he does not have the correct client package for (client packages would be zip files with MD5 checksums and the checksum for the package in use is sent to the server), Mineforge gives a menu option to download the client package for a server. Upon approval, mineforge launches an embedded FTP library and downloads the client packages, extracts it, possibly runs a binary patcher (uggh..hard to find one on google that you can embed in java...), and then adds a new menu option to the list.
Client packages would be a specially modified version of minecraft that has the single player menu option removed and will only connect to a specific minecraft server.
That one shouldn't be an issue in 1.8, right? There will need to be one more release of MCP to translate the class/method/variable/etc names from the MCP versions to the REAL names that Notch uses. But after that release, MCP will be defunct.
Wait, has Notch committed to removing obfuscation? That would be great news, if true!
We have our own forum, http://minecraftforge.net
We have moved to our own sub-forum on the BuildCraft Forums.
http://www.mod-build...necraft-forge/.
You can register on the forum main page http://www.mod-buildcraft.com/forum/.
When reporting bugs make your OWN THREAD so that we can address it individually. Also if you are reporting a bug please provide a error log. There is always a error log.
If you are on windows, you can use this batch file to get the error log. For mac users, just run your launcher from terminal: java -jar minecraft.jar
Hoping to see you in the new forum <3
The following is provided for purely archival purposes, none of these links are for current downloads.
For Players
INFO In front of the problems we're experiencing with SourceForge downloads, the important files are now downloadable from SourceForge and MediaFire. Let us know if there's any more problems!
IMPORTANT! Please go to the post of the mod you were trying to install if you have any question - including installation questions. The rest of this thread should be for modders discussions only.
If you've been instructed by the mod you're trying to install to get Minecraft Forge, you're just interested into that section. These instructions supposed that you're familiar with ModLoader / ModLoader MP installation mechanism.
!!!IMPORTANT!!! PLAYERS, YOU ONLY NEED TO DOWNLOAD AND INSTALL THE FILE BELOW:
FOR MINECRAFT 1.1.0 ONLY
<MC 1.1.0> Downloads have been moved on http://www.mod-build...orge-downloads/
FOR MINECRAFT 1.0.0 ONLY
<MC 1.0.0> 1.2.5 Client (MediaFire link) or 1.2.5 Client (SourceForge link)
FOR MINECRAFT 1.8.1 ONLY
<MC 1.8.1> 1.1.2 Client (MediaFire link) or 1.1.2 Client (SourceForge link)
You need to have ModLoader already installed on your system (http://www.minecraft...s-mods-updates/).
Open your minecraft.jar, open the zip above, drop the contents of the zip into minecraft.jar, just as you did for the ModLoader and / or ModLoaderMP. You're all set.
You've installed the Minecraft Forge API / compatibilty layers. You only need to do this once for all mods requiring it. Note that certain mod may include Minecraft Forge in their code, in which case you don't have to install the forge, but it's no harm to add it on top of the existing installation.
If you're installing the forge on a server, use:
<MC 1.1.0> Downloads have been moved on http://www.mod-build...orge-downloads/
<MC 1.0.0> 1.2.5 Server (MediaFire link) or 1.2.5 Server (SourceForge link)
<MC 1.8.1> 1.1.2 Server (MediaFire link) or 1.1.2 Server (SourceForge link)
Open your minecraft_server.jar, open the server zip, drop the contents of the server zip into minecraft.jar, just as you did for the ModLoaderMP Server.
Note that the complete download area is located on https://sourceforge....ge/files/1.1.0/
Previous releases
For Modders
Minecraft Forge is an API providing extra modding capabilities. These capabilities have been added to provide support for the different mods using the Forge.
It is intended to be an open source Minecraft modification layer shared among modders to minimize incompatibilities. This is an open-source project. If you need additional hooks and modification, feel free to talk to us and send a patch along. We're welcoming committers as well.
You have the right to copy the forge, and to put it straight in your mods distribution. What the license requires you to do is to provide the sources of the forge that you're using. If you're not doing any modification, just pointing to this page is fine. If you do, you will need to publish your own modifications. Please have a look at the license for more details and feel free to ask any questions on this thread.
In order to start working with the forge, the best it to download the source package, unpack it under your MCP and install it:
<MC 1.1.0> Downloads have been moved on http://www.mod-build...orge-downloads/
<MC 1.0.0> 1.2.5 Sources (MediaFire link) or 1.2.5 Sources (SourceForge link)
<MC 1.8.1> 1.1.2 Sources (MediaFire link) or 1.1.2 Sources (SourceForge link)
For Windows users, you just have to run install.cmd. If you're on linux, you need to copy files and apply patch manually for now, let me know if you got any trouble there. A install.sh for linux users too is on the way, but in the meantime, let us know if you have any setup problems.
http://tiny.cc/errortest_bat
or just run the launcher from the command line: java -jar Minecraft.exe
And make sure you're using the proper Forge version for your MC version.
The download thread has all the info you need.
If you are:
1) Currently writing/maintaining a mod that is incompatible with MinecraftForge, or
2) Currently writing/maintaining a mod that is not base-clean
Then this message is for you! If you need some help porting your mod to MinecraftForge, or if you need a couple extra hooks to make your mod work without base mods, feel free to drop me an email.
My target audience here is people who actually write mods, not users of incompatible mods. I will not fix bugs in mods that you are not the current maintainer of (unless I wrote those mods, of course, I fix my own bugs).
I'm one of the maintainers of MinecraftForge, so I can add new hooks to it, if required.
That's WorldRenderer, there are two hooks in that, one used by Buildcraft, the other by RedPower.
You know, I thought it did, but looking through the ModLoader documentation, I don't see any reference to that method. I see ones for entities, but not for blocks.
To answer your question, I'm not really sure. I didn't write that hook, and I didn't investigate it since my mod doesn't generate ores.
A couple of the hooks in MinecraftForge are designed for IndustrialCraft, since SpaceToad is trying to get Alblaka onboard.
Anyway, it's designed to be used with ModLoader and ModLoaderMp, since both the current maintainers write mods using both.
Ok I was wrong. Apparently here's how it works. Now, I THOUGHT that this method used modloader because another mod creator who wrote an ore redistribution mod specifically mentioned that this method no longer works with his mod. Here's how IC does it :
{
for(int k = 0; k < 25; k++)
{
int j1 = i + random.nextInt(16);
int i2 = random.nextInt(20) + random.nextInt(25);
int l2 = j + random.nextInt(16);
(new WorldGenMinable(oreTin.blockID, 8)).generate(world, random, j1, i2, l2);
}
for(int l = 0; l < 25; l++)
{
int k1 = i + random.nextInt(16);
int j2 = random.nextInt(20) + random.nextInt(30);
int i3 = j + random.nextInt(16);
(new WorldGenMinable(oreCopper.blockID, 9)).generate(world, random, k1, j2, i3);
}
for(int i1 = 0; i1 < 50; i1++)
{
int l1 = i + random.nextInt(16);
int k2 = random.nextInt(64);
int j3 = j + random.nextInt(16);
(new WorldGenMinable(oreUran.blockID, 3)).generate(world, random, l1, k2, j3);
}
}
public void GenerateSurface(World world, Random rand, int chunkX, int chunkZ)
{
for(int i = 0; i < (RARITY); i++)
{
int randPosX = chunkX + rand.nextInt(16);
int randPosY = rand.nextInt(DEPTH);
int randPosZ = chunkZ + rand.nextInt(16);
(new WorldGenMinable(mod_Emeralds.emeraldOre.blockID, 5)).generate(world, rand, randPosX, randPosY, randPosZ);
}
}
That's a tutorial written by someone else.
I still haven't figured out how this code gets called when there must be other instances of GenerateSurface elsewhere in the minecraft code. I'm a C programmer - in java if there are multiple functions with the same name, do they auto-merge together or something? That would make a lot of sense. (because the code above would work just fine if above and below it were other identical segments of code like that for generating the other ores in the minecraft world)
No, nothing like that. Actually, there are simply no such thing as global functions in Java at all. You have to take into consideration the class that they belong to.
See in this case, it's really simple. The class is derived from BaseMod, and ModLoader calls GenerateSurface or GenerateNether during the block generation stuff. Which... actually I'm a little puzzled that we added a new hook to also do ore generation. Well, I'll be messing around with ore generation myself pretty soon (sekrit mod is sekrit), so I'll get a chance to give that a good looking at and find out the answer.
Back to my original question : did you destroy these modloader hooks when you made MineForge? If you didn't, then about 50 different mods will keep on working. (if you browse these forums a lot, you'll notice that the most common mod by far is one that just adds new types of ore and corresponding tools/armor to be made from it)
Granted, all those mods suck, but if you want MineForge to be widely adapted (or better still, get custody of modloader from Risugami so that you can just release a single unified mod) they need to continue working.
I'm pretty sure we left them alone. I seem to recall that, from the brief look I took, SpaceToad's hook fires in a different place, which is supposed to be easier to add ores from. Or something. I don't really know, I'm talking about a subsystem that I haven't studied at all.
I'd personally love to take over ModLoader and ModLoaderMp, and merge them both with this to make a single unified mod. There's a few people that would have to give the green light for that, though, and I don't expect to see it happen any time soon. Besides that, since I use MCP, I wouldn't be able to update ModLoader as quickly as Risu does, so I'm not sure the tradeoff works for everyone.
That one shouldn't be an issue in 1.8, right? There will need to be one more release of MCP to translate the class/method/variable/etc names from the MCP versions to the REAL names that Notch uses. But after that release, MCP will be defunct.
Why not ALSO take over MCE while you're at it? MCE is SIMPLE...there's really not much to the code. 100 lines, tops, and it only touches a few core classes. That way when we run Forge it's just one install and we get unlimited blocks, sprites, AND terrain pngs.
That's a solid case for incorporation.
Just need two people to sign off : Risugami and Flan. And they'll still have commit rights on Sourceforge, so it's not like they lose the ability to add stuff to these mods.
It absolutely must have this feature. Full stop, no way around it. And if it does, everyone will use it.
AUTO-MOD DOWNLOAD! If a player connects to a multiplayer server running mods, it must be able to automatically download from the server
1. RESOURCE FILES
2. THE MOD's class files
3. The mod's configuration files
And to create a separate instance of minecraft.jar with all the above installed, with a link available in a menu under 'multiplayer'
This way, the average player would need to do the following :
1. Install Mineforge (using a binary patcher installer than finds %appdata%/.minecraft automatically)
2. Play on any server configured to support all this, with any mods imaginable that work together in a grouping on that server.
This is why the overwhelming majority of SMP servers (more than 90%) do not have client-side mods running. It is far too much to expect the average minecraft player to even have winrar installed, much less be able to install a mod according to a complex procedure involving multiple files. At least 75% of the bug reports in the threads for a typical mod are due to mis-installation.
Implementation : if we had an open source FTP client/server library rolled into mineforge this might not be too difficult. Handling all the special cases so that virtually any SMP mod works could be tough.
That sounds exactly like what the BukkitContrib (=> Spout) project is eventually aiming for. I'm really unsure of how long it'll take to get to that point, though.
It's also aiming to hook -everything- on the client side, like Bukkit on the server, so clientside mods can be made as easily as Bukkit plugins.
But that's a LONG way off.
Right. And why wait for the slowpokes to finally make something? Eloraam has added more features to minecraft in the last month than Notch has added in 6 months. This is because she's either more talented or just has more energy.
The libraries to use are Apache and one of the many free FTP client libraries.
http://mina.apache.org/ftpserver/embedding-ftpserver-in-5-minutes.html
So transferring the data is straightforward. The real question is which files do we send. How do we make the menu system work. Is relaunching minecraft the best way to roll? Do we use a binary patch library? Or do we just send whole .jar files? (since the user must be connected to the MineForge FTP server via a legit copy of minecraft ANYWAYs the copyright question is moot)
The idea I have is this. When the user clicks the "multiplayer" button a new menu is drawn. There would be a list of the names of preconfigured client packages that the user has downloaded for connecting to his/her favorite minecraft servers. If the user selects one of the entries in the list, minecraft is relaunched and the different mod set is initialized. (i wish this could be done without a relaunch but I understand that modloader and minecraft itself aren't written to work this way).
If the user connects to a server that he does not have the correct client package for (client packages would be zip files with MD5 checksums and the checksum for the package in use is sent to the server), Mineforge gives a menu option to download the client package for a server. Upon approval, mineforge launches an embedded FTP library and downloads the client packages, extracts it, possibly runs a binary patcher (uggh..hard to find one on google that you can embed in java...), and then adds a new menu option to the list.
Client packages would be a specially modified version of minecraft that has the single player menu option removed and will only connect to a specific minecraft server.
Wait, has Notch committed to removing obfuscation? That would be great news, if true!