MCPcopy Index your code
hub / github.com/SKCraft/Launcher

github.com/SKCraft/Launcher @creator-2.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release creator-2.0.1 ↗ · + Follow
1,338 symbols 3,632 edges 202 files 256 documented · 19%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

SKCraft Launcher

This project provides an open-source Minecraft launcher platform for creating, testing, distributing, installing, and updating modpacks. It has maintained for sk89q's server since Minecraft Alpha, but you are free to use it. The older 3.x version was can be found elsewhere.

Unlike other launchers, modpacks for this launcher follow Minecraft's directory structure: just config/ and mods/ folders and you're good to go — no need to edit complicated files. You can use the provided GUI or build everything through command line tools.

Screenshots

Skinned

Or if you prefer it plain:

Main Launcher

Options

Optional Features

Console

Creating modpacks is easy with the provided Modpack Creator:

Modpack Creator

Modpack Creator

Optional Features Configuration

Build Modpacks

Features

For the modpack creator:

  • No config files (aside from two at the start) needed to make a modpack -- you just make a folder with the modpack's files and run the builder tool on it
  • Supports putting default files (config files, etc.) that are not overridden on a future update
  • Supports the removal of files (which, from the PoV of the modpack creator, just involves deleting the file from the folder)
  • Supports "optional" files or file sets that can be toggled on or off by the user
  • The same directory can be used to create both a client modpack and a server modpack simultaneously (with server-only or client-only files) so you don't need to maintain two separate copies of the same files

Technical features:

  • Fast parallel downloads
  • Incremental updates (downloading only changed files)
  • Can update from ANY previous version to the latest version
  • Updates can be resumed if they've failed or have been cancelled
  • Updates also resume from where they left off
  • Static file structure so it can be placed on a CDN without modification
  • Files are deduplicated (on the file host) so you only ever have ONE version of a file across all modpacks and all modpack versions
  • Option for users to enter a special key in the options dialog that can be used to show additional modpacks (i.e. private ones for testing) -- this requires some server-side code
  • Can be used with a continuous integration system so you can combine it with your favorite version control (i.e. Git, SVN) and automatically deploy a new modpack update on push/tag

Client features:

  • Multiple modpacks are supported
  • Custom news page for showing custom information
  • Multiple profile support
  • Log messages dialog with upload log option
  • Options to adjust memory settings and Java flags
  • Everything happens in a background thread so the UI never freezes
  • All tasks have cancel buttons and (reasonably accurate) progress dialogs if things take too long
  • Self-update mechanism

Getting Started

Compiling

In your command prompt or terminal, run:

./gradlew clean build

If you are on Windows:

gradlew clean build

If you wish to import the project into an IDE, you must add support for Project Lombok (IntelliJ IDEA users: also enable annotation processing in compiler settings).

Contributing

Pull requests can be submitted on GitHub, but we will accept them at our discretion. Please note that your code must follow Oracle's Java Code Conventions.

Contributions by third parties must be dual licensed under the two licenses described within LICENSE.txt (GNU General Public License, version 3, and the 3-clause BSD license).

License

The launcher is licensed under the GNU General Public License, version 3.

Extension points exported contracts — how you extend this code

ProgressObservable (Interface)
Implementations of this interface can provide information on the progress of a task. [27 implementers]
launcher-bootstrap/src/main/java/com/skcraft/launcher/bootstrap/ProgressObservable.java
ProgressObservable (Interface)
Implementations of this interface can provide information on the progress of a task. [46 implementers]
launcher/src/main/java/com/skcraft/concurrency/ProgressObservable.java
Condition (Interface)
(no doc) [10 implementers]
launcher/src/main/java/com/skcraft/launcher/model/modpack/Condition.java
InstallTask (Interface)
(no doc) [14 implementers]
launcher/src/main/java/com/skcraft/launcher/install/InstallTask.java
Item (Interface)
(no doc) [6 implementers]
launcher/src/main/java/com/skcraft/launcher/selfupdate/ComparableVersion.java
LaunchListener (Interface)
(no doc) [4 implementers]
launcher/src/main/java/com/skcraft/launcher/launch/LaunchListener.java

Core symbols most depended-on inside this repo

add
called by 242
launcher/src/main/java/com/skcraft/launcher/auth/AccountList.java
tr
called by 170
launcher/src/main/java/com/skcraft/launcher/util/SharedLocale.java
getName
called by 80
launcher/src/main/java/com/skcraft/launcher/auth/Session.java
get
called by 41
launcher/src/main/java/com/skcraft/launcher/InstanceList.java
size
called by 40
launcher/src/main/java/com/skcraft/launcher/InstanceList.java
log
called by 40
launcher/src/main/java/com/skcraft/launcher/swing/MessageLog.java
dispose
called by 38
launcher/src/main/java/com/skcraft/launcher/swing/ActionListeners.java
add
called by 34
launcher/src/main/java/com/skcraft/launcher/swing/ObjectSwingMapper.java

Shape

Method 1,094
Class 223
Interface 13
Enum 8

Languages

Java100%

Modules by API surface

launcher/src/main/java/com/skcraft/launcher/swing/SwingHelper.java33 symbols
launcher/src/main/java/com/skcraft/launcher/util/HttpRequest.java31 symbols
launcher/src/main/java/com/skcraft/launcher/selfupdate/ComparableVersion.java31 symbols
launcher-bootstrap/src/main/java/com/skcraft/launcher/bootstrap/HttpRequest.java28 symbols
creator-tools/src/main/java/com/skcraft/launcher/creator/controller/PackManagerController.java28 symbols
launcher/src/main/java/com/skcraft/launcher/Launcher.java26 symbols
launcher/src/main/java/com/skcraft/launcher/swing/MessageLog.java24 symbols
launcher/src/main/java/com/skcraft/launcher/dialog/LauncherFrame.java21 symbols
launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java20 symbols
launcher/src/main/java/com/skcraft/launcher/dialog/LoginDialog.java20 symbols
launcher/src/main/java/com/skcraft/launcher/swing/TableColumnAdjuster.java18 symbols
launcher/src/main/java/com/skcraft/concurrency/DeferredImpl.java18 symbols

For agents

$ claude mcp add Launcher \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact