Unfortunately, I cannot do this.
The code I've written in my first post is used to call the launcher himself.
I'm using the applet mode of minecraft with this logic:
[*]MinecraftLauncher Call LauncherFrame
[*]LauncherFrame is used to ask user options, display news, login, blablabla
[*]Once user click on login the LauncherFrame is replaced with the GameUpdater applet and the update stuff is done
[*]When the update process is complete, it invoke the following method from the GameUpdater class :
public Applet createApplet() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SecurityException
{
Class appletClass = classLoader.loadClass("net.minecraft.client.MinecraftApplet");
return (Applet)appletClass.newInstance();
}
And the returned Applet is handled by :
Launcher.this.replace(Launcher.this.gameUpdater.createApplet());
I remembered the
System.getProperty("minecraft.applet.TargetDirectory");
I've seen in the FMLRElauncher.
I've set that system prop from my launcher and now FML is downloading to the right directory!
System.setProperty("minecraft.applet.TargetDirectory", Util.getWorkingDirectory().toString());
But i have a new problem.
When FML is calling RelaunchClassLoader.registerTransformer I have a "java.lang.ClassNotFoundException: cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer". I Dont understand why, because the class is present in the Minecraft.jar file
I'm not very familiar with those classloading methods used by FML and i cannot understand this function:
public void registerTransformer(String transformerClassName)
{
try
{
IClassTransformer transformer = (IClassTransformer) loadClass(transformerClassName).newInstance();
transformers.add(transformer);
if (transformer instanceof IClassNameTransformer && renameTransformer == null)
{
renameTransformer = (IClassNameTransformer) transformer;
}
}
catch (Exception e)
{
FMLRelaunchLog.log(Level.SEVERE, e, "A critical problem occured registering the ASM transformer class %s", transformerClassName);
}
}
PS : I need a custom launcher to handle the update process by myself (minecraft.jar, clients mods), to display my own news and I need a custom directory to allow players to have a separated .minecraft directory if they wanna keep their vinilla or whatever custom jar they want.