{"id":13543374,"url":"https://github.com/ATLauncher/ATLauncher","last_synced_at":"2025-04-02T12:32:16.994Z","repository":{"id":10389247,"uuid":"12538525","full_name":"ATLauncher/ATLauncher","owner":"ATLauncher","description":"ATLauncher is a Launcher for Minecraft which integrates multiple different ModPacks to allow you to download and install ModPacks easily and quickly.","archived":false,"fork":false,"pushed_at":"2025-03-21T11:33:04.000Z","size":17227,"stargazers_count":714,"open_issues_count":143,"forks_count":199,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-04-01T22:06:40.477Z","etag":null,"topics":["atlauncher","minecraft","minecraft-launcher","modpacks"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ATLauncher.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["RyanTheAllmighty"]}},"created_at":"2013-09-02T11:28:26.000Z","updated_at":"2025-03-29T04:23:37.000Z","dependencies_parsed_at":"2023-09-24T15:25:10.625Z","dependency_job_id":"454ffeaf-5e87-4fdd-a106-c2d04884a9dc","html_url":"https://github.com/ATLauncher/ATLauncher","commit_stats":null,"previous_names":[],"tags_count":213,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ATLauncher%2FATLauncher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ATLauncher%2FATLauncher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ATLauncher%2FATLauncher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ATLauncher%2FATLauncher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ATLauncher","download_url":"https://codeload.github.com/ATLauncher/ATLauncher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246815848,"owners_count":20838527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atlauncher","minecraft","minecraft-launcher","modpacks"],"created_at":"2024-08-01T11:00:30.828Z","updated_at":"2025-04-02T12:32:11.979Z","avatar_url":"https://github.com/ATLauncher.png","language":"Java","funding_links":["https://github.com/sponsors/RyanTheAllmighty"],"categories":["Launchers"],"sub_categories":[],"readme":"# ATLauncher\n\n![Application](https://github.com/ATLauncher/ATLauncher/workflows/Application/badge.svg?branch=master)\n[![Discord](https://discordapp.com/api/guilds/117047818136322057/embed.png?style=shield)](https://atl.pw/discord)\n\n## What is it\n\nATLauncher is a launcher for Minecraft which integrates multiple different modpacks to allow you to download and install\nmodpacks easily and quickly.\n\n## Links\n\n-   [ATLauncher Website](https://atlauncher.com)\n-   [ATLauncher Discord](https://atl.pw/discord)\n-   [ATLauncher Facebook](https://www.facebook.com/ATLauncher)\n-   [ATLauncher Reddit](https://www.reddit.com/r/ATLauncher)\n-   [ATLauncher Twitter](https://twitter.com/ATLauncher)\n\n## Contributing to ATLauncher\n\nTake a look at [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Testing\n\nPlease see the [TESTING.md](TESTING.md) file for information on how we write tests.\n\n## Prerequisites\n\nIn order to build ATLauncher, you will need any Java version 8 or above. Java 8 is recommended since we compile to Java\n8 compatability regardless.\n\nEverything else that's needed for the project is provided by Gradle, and accessed using the Gradle wrapper which can be\ninvoked by using `./gradlew`.\n\n## Building\n\nTo build this project, simply run:\n\n```sh\n./gradlew build\n```\n\nThis will build the application and output the resulting files for Windows, Linux and OSX in the `dist` directory.\n\n## Running in test\n\nIf you want to run the launcher while developing with it, you can use your IDE (if you have one) to do that for you.\n\nAlternatively you can run:\n\n```sh\n./gradlew run --args=\"--debug --working-dir=testLauncher\"\n```\n\nSetting the `--working-dir=testLauncher` argument is necessary as it will ensure that the launchers files are not\nspewed in the root directory and are instead contained within a gitignored folder.\n\n## Using an IDE\n\n~~This project is mainly setup and developed to use [VSCode](https://code.visualstudio.com/) for development. You're free\nto use any other IDE that you're accustomed to (if any), but by using VSCode, you get the benefit of predefined tasks\nand launch commands as well as a list of extensions recommended for the project.~~ VSCode no longer works well after the upgrade to be part Kotlin. Until fixed, it's recommended to use IntelliJ.\n\nWe also provide some base project files for [IntelliJ IDEA](https://www.jetbrains.com/idea/) so that if you use that,\nyou should get access to our base project files which contain correct launch tasks for testing the application as well\nas tasks for running the UI/Unit tests.\n\n## Checking for dependency updates\n\nTo check for dependency updates with gradle, simply run:\n\n```sh\n./gradlew dependencyUpdates\n```\n\nThis will print a report to the console about any dependencies which have updates.\n\n## Updating new GraphQL queries/mutations\n\nWhen new GraphQL queries/mutations are added into the `src/main/graphql` directory, you must run the below 2 commands:\n\n```sh\n./gradlew downloadApolloSchema --endpoint=\"https://api.atlauncher.com/v2/graphql\" --schema=\"src/main/graphql/com/atlauncher/schema.json\"\n./gradlew generateApolloSources\n```\n\nThis will fetch the latest schema and then codegen the java files so you can use the query/mutation.\n\n## Updating license headers in all files\n\nIf you add new files, or update the `LICENSEHEADER` file, you can add that to all source files by running:\n\n```sh\n./gradlew updateLicenses\n```\n\nTo check that they're all correct, you can run the below command:\n\n```sh\n./gradlew checkLicenses\n```\n\nThis is run during the CI process, and will fail if the license is missing or not up to date, so make sure that you add\nthis to all new files you create.\n\n## Create Custom Themes\n\nATLauncher supports custom themes. The process is fairly straight forward, but may require a lot of trial and error.\n\nFirst you must create a `MyThemeName.java` in the `src/main/java/com/atlauncher/themes/` directory. Your theme should\nextend one of the base ATLauncher themes depending on what you need:\n\n-   `Dark` is the default theme and is a dark theme. It's a good place to start with some defaults for new dark themes.\n-   `Light` is a light theme. It's a good place to start with some defaults for new light themes.\n-   `ATLauncherLaf` is a base class which every theme MUST at some point extend. It provides some defaults including our\n    brand colours and some defaults. This shouldn't be extended from unless you need absolute power.\n\nOnce you've created your class (look at other themes in the directory for an idea on what you can do), you'll need to\ncreate a properties file in the `src/main/resources/com/atlauncher/themes/` directory. This properties file is how you\nsetup and change UI elements. You should use the existing examples in that directory as examples.\n\nLast step is to register the theme in the file `src/main/java/com/atlauncher/gui/tabs/settings/GeneralSettingsTab.java`.\n\nNow you can open the launcher and then switch to your theme.\n\nWe use a library called [FlatLaf](https://github.com/JFormDesigner/FlatLaf) to provide theme support. There are some\ngood references listed below to see the default values for the themes and see what you can overwrite:\n\n-   \u003chttps://github.com/JFormDesigner/FlatLaf/blob/master/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties\u003e\n    -   This file contains all the base properties for all themes\n-   \u003chttps://github.com/JFormDesigner/FlatLaf/blob/master/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties\u003e\n    -   This file contains all the base properties for light themes\n-   \u003chttps://github.com/JFormDesigner/FlatLaf/blob/master/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties\u003e\n    -   This file contains all the base properties for dark themes\n\n### IntelliJ theme.json Support\n\nYou can also take IntelliJ `theme.json` files and convert them to themes for ATLauncher. From within the `theme.json`\nfile, take the `UI` object and plug that into [this site](https://tools.fromdev.com/json-to-property-converter.html) to\nconvert it from JSON to properties format.\n\nThere are also special rules you need to apply as we currently do not support these `theme.json` files out of the box,\nso you need to manually apply the [transformations](https://github.com/JFormDesigner/FlatLaf/blob/master/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java)\nin order for the theme to work exactly right.\n\nFor an example, see the `DraculaContrast` theme which uses this method.\n\n### Tools To Help Theme Development\n\nTo help with theme development, with the launcher running (not in the release version, only in development), you can\npress `Ctrl + Shift + Alt + X` to bring up a tool to highlight UI components to see their properties. You can also press\n`Ctrl + Shift + Alt + Y` to bring up a list of all the default properties in the UIManager. These values can be modified\nin your `.properties` file.\n\n## Plugging In Your Data\n\nTo get started with the code and plug in your own data, you need to edit the\n`/src/main/java/com/atlauncher/constants/Constants.java` file.\n\nBy using this source code you don't get permissions to use our CDN/files/assets/modpacks. See the License section at the\nbottom for more.\n\nMost of of them should be self explanatory, if not please stop by our [Discord](https://atl.pw/discord) and ask in the\n`#development` channel if you need help understanding any of the values.\n\nA couple values in the constants file are specific for ATLauncher and shouldn't be used in any forks. These are the\nCurseForge Core api key and the Microsoft Login Client ID.\n\nYou can apply for a CurseForge Core key through\n[this link](https://forms.monday.com/forms/dce5ccb7afda9a1c21dab1a1aa1d84eb) and a Microsoft Login Client ID through\n[this link](https://learn.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app).\n\n## Versioning System\n\nStarting with version 3.2.1.0 a new versioning system was put into place. It works off the following:\n\nReserved.Major.Minor.Revision.Stream\n\nSo for 3.2.1.0 the major number is 2 and minor number is 1 and revision number is 0. Reserved is used as a base, only\nincremented on complete rewrites. The stream is optional.\n\nMajor should be incremented when large changes/features are made.\n\nMinor should be incremented when small changes/features are made.\n\nRevision should be incremented when there are no new features and only contains bug fixes for the previous minor.\n\nBuild is used for beta releases allowing you to have higher version numbers but force users to update when the real\nrelease comes.\n\nStream is used to define if it's a \"Release\" or a \"Beta\". When not provided, it defaults to \"Release\".\n\n### Updating The Version\n\nThe version can be updated in a single place in the `/src/main/resources/version` file.\n\nThe stream value doesn't need to be provided, but should only ever be \"Beta\". When a release is ready to go out, the\nstream should be removed from the version so that everything will automatically release.\n\n## Translating\n\nATLauncher is written for English speakers. All our translations are community run by those who take their time and\nsubmit updates to the text in a different language.\n\nIf you wish to help translate ATLauncher, please visit our page on [Crowdin](https://crowdin.com/project/atlauncher) and\nstart translating.\n\n### Updating the template file\n\nEvery push to master will automatically add any new strings that need translating via GitHub actions.\n\n#### Manual Steps\n\nIf new strings are added to the launcher, the template file will need to be updated in order to take into account the\nnew strings.\n\nIn order to do this, run `./gradlew generatePots` which will scan the source files and create a\n`build/gettext/translations.pot` file.\n\nNote that out of the box, this will not generate in the correct format. You must run the `deduplicateTranslations` script in\nthe `scripts/deduplicateTranslations` folder which will use Docker to fix the `translations.pot` file.\n\nThis file can then be uploaded to Crowdin by ATLauncher staff to give access to the translators.\n\n### Adding new languages from Crowdin\n\nRunning [this action](https://github.com/ATLauncher/ATLauncher/actions/workflows/download-translations.yml) will\ndownload all approved translations strings and make a commit to master with then changed language files.\n\n#### Manual Steps\n\nOnce a language has been translated enough to add support to the launcher (or update support) there's a few steps we\nneed to take.\n\nFirst grab the built project from Crowdin, and then grab out the translation to add/update. For this example, let's take\nGerman.\n\nPop this file in the `scripts/processTranslations/in` directory and then run the `scripts/processTranslations.bat` or\n`scripts/processTranslations.sh` file to fix them up and output them into the `scripts/processTranslations/out`\ndirectory.\n\nNow take the converted files from the `scripts/processTranslations/out` directory and put them in the\n`src\\main\\resources\\assets\\lang` directory.\n\nNow open `src\\main\\java\\com\\atlauncher\\data\\Language.java` and in the static block at the top, add in the language:\n\n```java\n// add in the languages we have support for\nstatic {\n    locales.add(Locale.ENGLISH);\n    locales.add(new Locale(\"de\", \"DE\"));\n}\n```\n\nNow the launcher should have the option to change to the language/s.\n\n## License\n\nThis work is licensed under the GNU General Public License v3.0. To view a copy of this license, visit\n\u003chttp://www.gnu.org/licenses/gpl-3.0.txt\u003e.\n\nA simple way to keep in terms of the license is by forking this repository and leaving it open source under the same\nlicense. We love free software, seeing people use our code and then not share the code, breaking the license, is\nsaddening. So please take a look at the license and respect what we're doing.\n\nAlso, while we cannot enforce this under the license, you cannot use our CDN/files/assets/modpacks on your own launcher.\nAgain we cannot enforce this under the license, but needless to say, we'd be very unhappy if you did that and really\nwould like to leave cease and desist letters as a last resort.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FATLauncher%2FATLauncher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FATLauncher%2FATLauncher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FATLauncher%2FATLauncher/lists"}