/** * This package contains the Minecraft Forkage instance setup program. * You're probably wondering what this is. * * In Minecraft Forkage, we want to move most of the work that occurs during startup * to a one-time "instance setup" phase, and cache the results. * * Currently, this includes: * * <ul> * <li> Searching for mods. * <li> Bytecode (ASM) transformations. * </ul> * * as these are the least invasive changes. * * Potentially, in the future, instance setup might also involve: * <ul> * <li> Config parsing. * <li> Item registration. * <li> Ore dictionary registration. * <li> Fluid registration (deciding which mods' fluids to use, and setting icons) * <li> Dynamic recipe generation (e.g. in GregTech). * <li> Texture stitching. * </ul> * and mods will of course be able to add their own steps. * * * * * * If entire mods were brought onto the classpath for instance setup, it would be easy to run into class-loading * issues (see FML's ASM transformer problems). * For this reason, mods are permitted (but not required) to put their instance-setup-related classes into a separate * JAR file. To avoid inconveniencing users, this separate JAR can (optionally) then be packaged inside your main JAR. * * * * * * <h1>Class location</h1> * JARs containing classes to be used in the instance setup process must be explicitly identified. * * All JARs, ZIPs and directories in the mods folder are searched. * * If any of them contain a "MCF-InstanceSetupClasspath: true" main manifest attribute, they are added to the * instance setup classpath. * * If any of them contain files with "MCF-InstanceSetupClasspath: true" manifest attributes, those files are searched * recursively. This feature is not fully implemented - if you want to use it, report an issue to get it finished. * * * * * * <h1>Initiation</h1> * Currently, the instance setup process runs on any startup, if the launcher is set to run the launcher stub * instead of running Minecraft directly. * * As this is an experimental feature, the installer does not configure this. If you want to test instance setup, * edit the launcher version JSON file so the main class is * <tt>net.minecraftforkage.instsetup.launcher_stub.EntryPointFromLauncher</tt>. * * * * * * */ package net.minecraftforkage.instsetup;