{"id":15031933,"url":"https://github.com/anuken/mindustry","last_synced_at":"2026-10-18T21:10:57.792Z","repository":{"id":37451134,"uuid":"89822531","full_name":"Anuken/Mindustry","owner":"Anuken","description":"The automation tower defense RTS","archived":false,"fork":false,"pushed_at":"2026-10-11T23:29:51.000Z","size":2012596,"stargazers_count":29323,"open_issues_count":35,"forks_count":3836,"subscribers_count":582,"default_branch":"master","last_synced_at":"2026-10-12T01:27:06.326Z","etag":null,"topics":["android","desktop","game","java","mindustry","mobile-game","multiplatform","rts","sandbox-game","tower-defense"],"latest_commit_sha":null,"homepage":"https://mindustrygame.github.io","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/Anuken.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"accessibility":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2017-04-30T01:24:29.000Z","updated_at":"2026-10-11T23:22:42.000Z","dependencies_parsed_at":"2026-10-12T01:25:36.963Z","dependency_job_id":null,"html_url":"https://github.com/Anuken/Mindustry","commit_stats":null,"previous_names":[],"tags_count":205,"template":false,"template_full_name":null,"purl":"pkg:github/Anuken/Mindustry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anuken%2FMindustry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anuken%2FMindustry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anuken%2FMindustry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anuken%2FMindustry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anuken","download_url":"https://codeload.github.com/Anuken/Mindustry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anuken%2FMindustry/sbom","scorecard":{"id":14888,"data":{"date":"2025-08-11","repo":{"name":"github.com/Anuken/Mindustry","commit":"4e82396be11a3627b31633e33a506fe9fcc26c74"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 23 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/deployment.yml:12","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/push.yml:9","Info: found token with 'none' permissions: .github/workflows/deployment.yml:1","Warn: no topLevel permission defined: .github/workflows/gradle-wrapper-validation.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/pr.yml:6","Info: found token with 'none' permissions: .github/workflows/push.yml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":2,"reason":"Found 6/30 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v150.1 not signed: https://api.github.com/repos/Anuken/Mindustry/releases/235317604","Warn: release artifact v150 not signed: https://api.github.com/repos/Anuken/Mindustry/releases/234675734","Warn: release artifact v149 not signed: https://api.github.com/repos/Anuken/Mindustry/releases/215902612","Warn: release artifact v148 not signed: https://api.github.com/repos/Anuken/Mindustry/releases/213690914","Warn: release artifact v147.1 not signed: https://api.github.com/repos/Anuken/Mindustry/releases/212100373","Warn: release artifact v150.1 does not have provenance: https://api.github.com/repos/Anuken/Mindustry/releases/235317604","Warn: release artifact v150 does not have provenance: https://api.github.com/repos/Anuken/Mindustry/releases/234675734","Warn: release artifact v149 does not have provenance: https://api.github.com/repos/Anuken/Mindustry/releases/215902612","Warn: release artifact v148 does not have provenance: https://api.github.com/repos/Anuken/Mindustry/releases/213690914","Warn: release artifact v147.1 does not have provenance: https://api.github.com/repos/Anuken/Mindustry/releases/212100373"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployment.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/deployment.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deployment.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/deployment.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployment.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/deployment.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deployment.yml:88: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/deployment.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gradle-wrapper-validation.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/gradle-wrapper-validation.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gradle-wrapper-validation.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/gradle-wrapper-validation.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/push.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/push.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/push.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/push.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/Anuken/Mindustry/push.yml/master?enable=pin","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T15:33:11.906Z","repository_id":37451134,"created_at":"2025-08-14T15:33:11.906Z","updated_at":"2025-08-14T15:33:11.906Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38341851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","desktop","game","java","mindustry","mobile-game","multiplatform","rts","sandbox-game","tower-defense"],"created_at":"2024-09-24T20:16:55.091Z","updated_at":"2026-10-18T21:10:53.385Z","avatar_url":"https://github.com/Anuken.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Logo](core/assets-raw/sprites/ui/logo.png)\n\n[![Build Status](https://github.com/Anuken/Mindustry/workflows/Tests/badge.svg?event=push)](https://github.com/Anuken/Mindustry/actions)\n[![Discord](https://img.shields.io/discord/391020510269669376.svg?logo=discord\u0026logoColor=white\u0026logoWidth=20\u0026labelColor=7289DA\u0026label=Discord\u0026color=17cf48)](https://discord.gg/mindustry)  \n\nThe automation tower defense RTS, written in Java.\n\n_[Trello Board](https://trello.com/b/aE2tcUwF/mindustry-40-plans)_  \n_[Wiki](https://mindustrygame.github.io/wiki)_  \n_[Javadoc](https://mindustrygame.github.io/docs/)_ \n\n## Contributing\n\nSee [CONTRIBUTING](CONTRIBUTING.md) for general code style and PR guidelines.\n\nIf you are a first-time contributor looking for features to implement or bugs to fix, see the issues tagged with 'candidate' [in the Mindustry-Suggestions repostiory](https://github.com/Anuken/Mindustry-Suggestions/issues?q=is%3Aissue%20state%3Aopen%20label%3Acandidate).\n\n## Building\n\nBleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases).\n\nIf you'd rather compile on your own, follow these instructions.\nFirst, make sure you have [JDK 17](https://adoptium.net/temurin/releases/?os=any\u0026arch=any\u0026version=17) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands:\n\n### Windows\n\n_Running:_ `gradlew desktop:run`  \n_Building:_ `gradlew desktop:dist`  \n_Sprite Packing:_ `gradlew tools:pack`\n\n### Linux/Mac OS\n\n_Running:_ `./gradlew desktop:run`  \n_Building:_ `./gradlew desktop:dist`  \n_Sprite Packing:_ `./gradlew tools:pack`\n\n### Server\n\nServer builds are bundled with each released build (in Releases). If you'd rather compile on your own, replace 'desktop' with 'server', e.g. `gradlew server:dist`.\n\n### Android\n\n1. Install the Android SDK [here.](https://developer.android.com/studio#command-tools) Make sure you're downloading the \"Command line tools only\", as Android Studio is not required.\n2. In the unzipped Android SDK folder, find the cmdline-tools directory. Then create a folder inside of it called `latest` and put all of its contents into the newly created folder.\n3. In the same directory run the command `sdkmanager --licenses` (or `./sdkmanager --licenses` if on linux/mac)\n4. Set the `ANDROID_HOME` environment variable to point to your unzipped Android SDK directory.\n5. Enable developer mode on your device/emulator. If you are on testing on a phone you can follow [these instructions](https://developer.android.com/studio/command-line/adb#Enabling), otherwise you need to google how to enable your emulator's developer mode specifically.\n6. Run `gradlew android:assembleDebug` (or `./gradlew` if on linux/mac). This will create an unsigned APK in `android/build/outputs/apk`.\n\nTo debug the application on a connected device/emulator, run `gradlew android:installDebug android:run`.\n\n### Troubleshooting\n\n#### Permission Denied\n\nIf the terminal returns `Permission denied` or `Command not found` on Mac/Linux, run `chmod +x ./gradlew` before running `./gradlew`. *This is a one-time procedure.*\n\n#### Where is the `mindustry.gen` package?\n\nAs the name implies, `mindustry.gen` is generated *at build time* based on other code. You will not find source code for this package in the repository, and it should not be edited by hand.\n\nThe following is a non-exhaustive list of the \"source\" of generated code in `mindustry.gen`:\n\n- `Call`, `*Packet` classes: Generated from methods marked with `@Remote`.\n- All entity classes (`Unit`, `EffectState`, `Posc`, etc): Generated from component classes in the `mindustry.entities.comp` package, and combined using definitions in `mindustry.content.UnitTypes`.\n- `Sounds`, `Musics`, `Tex`, `Icon`, etc: Generated based on files in the respective asset folders.\n\n---\n\nGradle may take up to several minutes to download files. Be patient. \u003cbr\u003e\nAfter building, the output .JAR file should be in `/desktop/build/libs/Mindustry.jar` for desktop builds, and in `/server/build/libs/server-release.jar` for server builds.\n\n## Feature Requests\n\nPost feature requests and feedback [here](https://github.com/Anuken/Mindustry-Suggestions/issues/new/choose).\n\n## Downloads\n\n| [![](https://static.itch.io/images/badge.svg)](https://anuke.itch.io/mindustry)    |    [![](https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png)](https://play.google.com/store/apps/details?id=io.anuke.mindustry)   |    [![](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/packages/io.anuke.mindustry)\t| [![](https://flathub.org/assets/badges/flathub-badge-en.svg)](https://flathub.org/apps/details/com.github.Anuken.Mindustry)  \n|---\t|---\t|---\t|---\t|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanuken%2Fmindustry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanuken%2Fmindustry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanuken%2Fmindustry/lists"}