HMCL is a Minecraft launcher which supports Mod management, game customizing, auto installing(Forge, LiteLoader and OptiFine), modpack creating, UI customizing and so on.
* When you do decide to modify this app, please and you MUST delete `HMCL/org.jackhuang.hmcl.util.CrashReporter`, or errors your code cause will be sent to my server.
* package `org.jackhuang.hmcl.laf.ui`: contains some NimbusLAF's code belonging to Sun Microsystems under LGPL.
## API
HMCLAPI is based on Event bus. There are all events below.
* org.jackhuang.hmcl.api.event
- OutOfDateEvent - you can cancel checking new versions and upgrading by this event.
* org.jackhuang.hmcl.api.event.config
- AuthenticatorChangedEvent
- DownloadTypeChangedEvent
- ThemeChangedEvent
* org.jackhuang.hmcl.api.event.launch
- DecompressLibrariesEvent
- DownloadLibrariesEvent
- LaunchEvent
- LaunchSucceededEvent
- LaunchingStateChangedEvent
- ProcessingLaunchOptionsEvent
- ProcessingLoginResultEvent
* org.jackhuang.hmcl.api.event.process
- JVMLaunchFailedEvent
- JavaProcessExitedAbnormallyEvent
- JavaProcessStartingEvent
- JavaProcessStoppedEvent
* org.jackhuang.hmcl.api.event.version
- LoadedOneVersionEvent
- RefreshedVersionsEvent
- RefreshingVersionsEvent
You can also add tabs to root window or add authenticators through IPlugin.
### Remember
* A valid plugin will have a main class that implements `org.jackhuang.hmcl.api.IPlugin`. HMCL will search all jar files in `plugins` folder and load classes that implements IPlugin.
* If you want to debug, use option: `--plugin=<Your IPlugin Class Name>` and add your jar to classpath.
* You'd better only access `org.jackhuang.hmcl.api.*`, and other classes may change in different versions.