{"id":29604491,"url":"https://github.com/milkdrinkers/minecraft-plugin-template","last_synced_at":"2025-09-04T15:34:44.139Z","repository":{"id":178511831,"uuid":"661904924","full_name":"milkdrinkers/Minecraft-Plugin-Template","owner":"milkdrinkers","description":"A template Spigot/Paper plugin using Gradle with Kotlin DSL for easily getting started on a new project.","archived":false,"fork":false,"pushed_at":"2025-07-17T18:24:29.000Z","size":765,"stargazers_count":9,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-17T22:04:18.186Z","etag":null,"topics":["boilerplate","bukkit-plugin","database","flyway","jooq","paper","paper-plugin","paper-plugin-template","papermc","papermc-plugin","spigot","spigot-plugin","spigot-plugin-base","spigot-plugin-template","spigotmc","spigotmc-plugin","template"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit-0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/milkdrinkers.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"darksaid98","patreon":"darksaid98","github":["darksaid98"]}},"created_at":"2023-07-04T00:06:44.000Z","updated_at":"2025-07-17T18:24:26.000Z","dependencies_parsed_at":"2023-11-21T00:35:11.010Z","dependency_job_id":"a087a64d-b990-4f1e-bc8f-75d9353889e8","html_url":"https://github.com/milkdrinkers/Minecraft-Plugin-Template","commit_stats":null,"previous_names":["alathra/template-gradle-plugin"],"tags_count":18,"template":true,"template_full_name":null,"purl":"pkg:github/milkdrinkers/Minecraft-Plugin-Template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milkdrinkers%2FMinecraft-Plugin-Template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milkdrinkers%2FMinecraft-Plugin-Template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milkdrinkers%2FMinecraft-Plugin-Template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milkdrinkers%2FMinecraft-Plugin-Template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/milkdrinkers","download_url":"https://codeload.github.com/milkdrinkers/Minecraft-Plugin-Template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milkdrinkers%2FMinecraft-Plugin-Template/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266151573,"owners_count":23884443,"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":["boilerplate","bukkit-plugin","database","flyway","jooq","paper","paper-plugin","paper-plugin-template","papermc","papermc-plugin","spigot","spigot-plugin","spigot-plugin-base","spigot-plugin-template","spigotmc","spigotmc-plugin","template"],"created_at":"2025-07-20T15:37:15.480Z","updated_at":"2025-07-20T15:37:20.309Z","avatar_url":"https://github.com/milkdrinkers.png","language":"Java","funding_links":["https://ko-fi.com/darksaid98","https://patreon.com/darksaid98","https://github.com/sponsors/darksaid98"],"categories":[],"sub_categories":[],"readme":"\u003ch1 style=\"text-align:center;\"\u003ePaper Plugin Template (Gradle)\u003c/h1\u003e\n\u003cp style=\"text-align:center;\"\u003e\n    \u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/Alathra/Template-Gradle-Plugin?style=for-the-badge\u0026color=blue\u0026labelColor=141417\"\u003e\n    \u003cimg alt=\"GitHub Downloads (all assets, all releases)\" src=\"https://img.shields.io/github/downloads/Alathra/Template-Gradle-Plugin/total?style=for-the-badge\u0026labelColor=141417\"\u003e\n    \u003cimg alt=\"GitHub Release\" src=\"https://img.shields.io/github/v/release/Alathra/Template-Gradle-Plugin?include_prereleases\u0026sort=semver\u0026style=for-the-badge\u0026label=LATEST%20VERSION\u0026labelColor=141417\"\u003e\n    \u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/Alathra/Template-Gradle-Plugin/ci.yml?style=for-the-badge\u0026labelColor=141417\"\u003e\n    \u003cimg alt=\"GitHub Issues or Pull Requests\" src=\"https://img.shields.io/github/issues/Alathra/Template-Gradle-Plugin?style=for-the-badge\u0026labelColor=141417\"\u003e\n    \u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/Alathra/Template-Gradle-Plugin?style=for-the-badge\u0026labelColor=141417\"\u003e\n\u003c/p\u003e\n\n---\n\n## Description\n\nThis is a configured and ready to go template for making Minecraft plugins. It includes a plethora of useful\nboilerplate, libraries and examples to quickly get you going when creating a new plugin.\n\nAll of the included libraries and tooling has been hand-picked for its stability and extendability. Its purpose is to\nminimize duplicated code, while providing powerful and ergonomic ways of working with the Bukkit API, databases,\nconfiguration and repository maintenance.\n\n---\n\n## Information\n\n---\n\n### Template Features\n\n\u003e [!NOTE]\n\u003e Is there some feature/library you don't need? Remove it!\n\n**GitHub Setup**:\n\n- Issue Templates - _Templates to streamline bug reports and feature requests._\n- Funding -\n  _[You can configure your sponsor button by editing a FUNDING.yml...](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository)._\n- Codeowners -\n  _[Listed users are automatically requested for review when...](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#about-code-owners)._\n- Contributor Code of Conduct - _[A code of conduct for all contributors to follow.](./CODE_OF_CONDUCT.md)_\n- Contributing Guidelines - _[Provides a guide and technical specifications regarding your project.](./CONTRIBUTING.md)_\n- License -\n  _[Change this to whatever license you wish to use](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository)._\n\n**Automation**:\n\n- Stale Workflow - _Issues and PRs are marked as stale after 60 days._\n- Build Workflow - _Each commit builds a snapshot jar for testing._\n- Release Workflow - _Automated releases and pre-releases using tags._\n- Dependabot - _Dependabot will create PRs to keep your dependencies up-to date._\n\n**Specifications**:\n\n- Commit Messages: [Conventional Commits](https://conventionalcommits.org/)\n- Versioning: [Semantic Versioning 2.0.0](https://semver.org/)\n- Style Guide: `.editorconfig`\n\n**Versioning Strategy**:\n\n- Stable releases as: `ExamplePlugin-1.0.0.jar`\n- Testing releases as: `ExamplePlugin-1.0.0-RC-X.jar`\n- Development releases as: `ExamplePlugin-1.0.0-SNAPSHOT-X.jar`\n\n| GitHub Event               | Version Format        | CI Action             | GitHub Release Draft? |\n|----------------------------|-----------------------|-----------------------|-----------------------|\n| Tag `X.Y.Z`                | `X.Y.Z`               | Build, test \u0026 release | Release               |\n| Tag `X.Y.Z-RC-N`           | `X.Y.Z-RC-N`          | Build, test \u0026 release | Pre-release           |\n| Schedule                   | `X.Y.Z-SNAPSHOT-TIME` | Build \u0026 test          | No                    |\n| Push to `main` or `master` | `X.Y.Z-SNAPSHOT-TIME` | Build \u0026 test          | No                    |\n| Pull Request               | `X.Y.Z-SNAPSHOT-TIME` | Build \u0026 test          | No                    |\n\n---\n\n### Template Libraries\n\n* MiniMessage support using [Adventure](https://docs.advntr.dev/index.html) with utility\n  library [ColorParser](https://github.com/milkdrinkers/ColorParser).\n* Command creation and handling using [CommandAPI](https://github.com/JorelAli/CommandAPI).\n* GUIs using [Triumph GUI](https://github.com/TriumphTeam/triumph-gui).\n* YAML, JSON \u0026 TOML Configuration files using [Crate](https://github.com/milkdrinkers/Crate).\n* Database Setup \u0026 Tooling:\n    - Database versioning and migrations using [Flyway](https://flywaydb.org/).\n    - [jOOQ](https://www.jooq.org/) to build and execute type safe SQL queries.\n    - Uses [HikariCP](https://github.com/brettwooldridge/HikariCP) to manage the connection pool.\n    - Supports the following database engines out of the box:\n        - [HyperSQL](https://hsqldb.org/) (_Local_)\n        - [H2](https://www.h2database.com/html/main.html) (_Local_)\n        - [MySQL](https://www.mysql.com/) (_Remote_)\n        - [MariaDB](https://mariadb.com/docs/skysql-previous-release/connect/programming-languages/java/) (_Remote_)\n\n---\n\n## Documentation Links\n\n### Adventure Library\n\n* **ColorParser** - [Link](https://github.com/milkdrinkers/ColorParser)\n* **MiniMessage Formatting** - [Link](https://docs.advntr.dev/minimessage/format.html)\n* **MiniMessage Previewer** - [Link](https://webui.advntr.dev/)\n* **Adventure Documentation** - [Link](https://docs.advntr.dev/index.html)\n\n### Minecraft APIs\n\n* **CommandAPI** - [Link](https://commandapi.jorel.dev/latest.html)\n* **Triumph GUI** - [Link](https://triumphteam.dev/library/triumph-gui/introduction)\n* **Crate** - [Link](https://milkdrinkers.github.io/Crate/introduction)\n\n### Database Tooling\n\n* **Flyway** - [Link](https://documentation.red-gate.com/fd/quickstart-how-flyway-works-184127223.html)\n* **jOOQ** - [Link](https://www.jooq.org/doc/latest/manual/getting-started/)\n\n### Gradle Plugin.yml Generation\n\n* **Plugin.yml Generator** - [Link](https://github.com/Minecrell/plugin-yml#bukkit)\n\n---\n\n## Setup\n\n1. #### Change [.github/CODEOWNERS](./.github/CODEOWNERS)\n   Replace `GITHUB_USERNAME` with your GitHub username.\n    ```CODEOWNERS\n    *       @darksaid98 @SOME_OTHER_USER\n    ```\n2. #### Change [.github/FUNDING.yml](./.github/FUNDING.yml)\n   Replace `GITHUB_USERNAME` with your GitHub\n   username. [You can configure your sponsor button by editing the FUNDING.yml](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository).\n\n   ```FUNDING.yml\n   github: darksaid98\n   github: SOME_OTHER_USER\n   ```\n3. #### Change [Code of Conduct](./CODE_OF_CONDUCT.md)\n   If you choose to adopt the Code of Conduct in this template, please replace `GITHUB_CONTACT_EMAIL` at line 63 with\n   your preferred method of contact. Otherwise replace or remove it.\n4. #### Change [Project Name](./settings.gradle.kts)\n   Replace all occurances of `ExamplePlugin` with your new plugin name. Don't forget to rename the main\n   class [ExamplePlugin.java](./src/main/java/com/github/ExampleUser/ExamplePlugin/ExamplePlugin.java) to the same\n   value.\n   ```kotlin\n   rootProject.name = \"MyNamePlugin\"\n   ```\n5. #### Change [build.gradle.kts](./build.gradle.kts)\n    1. ##### Change Plugin Info\n       \u003e The final package path for your plugin will end up being something like `io.github.darksaid98.exampleplugin`. It's made up of these components `io.github.\u003cUSERNAME\u003e.\u003cPLUGINNAME\u003e` where `\u003cUSERNAME\u003e` is your github name in lowercase, and `\u003cPLUGINNAME\u003e` is added by `rootProject.name` lowercased.\n       \n       Don't forget to change package locations in `src/main/java/` when changing the group.\n       ```kotlin\n       group = \"io.github.darksaid98\"\n       version = \"0.9.8\"\n       description = \"Some plugin description here...\"\n       ```\n    2. ##### Change Plugin.yml\n       \u003e [!NOTE]\n       \u003e The plugin.yml is automatically generated by gradle.\n       \n       Update the authors list and any other required settings.\n       ```kotlin\n       authors = listOf(\"GITHUB_USERNAME\") // Replace with your username\n       contributors = listOf()\n       apiVersion = \"1.19\"\n \n       // Misc properties\n       load = net.minecrell.pluginyml.bukkit.BukkitPluginDescription.PluginLoadOrder.POSTWORLD // STARTUP or POSTWORLD\n       depend = listOf()\n       softDepend = listOf()\n       ```\n    3. ##### Change Dependencies\n       Lastly, remove/add any dependecies you don't need/want.\n\n       \u003e You can also make the development server install any plugin dependencies:\n       ```kotlin\n       downloadPlugins {\n           //modrinth(\"carbon\", \"2.1.0-beta.21\")\n           //github(\"jpenilla\", \"MiniMOTD\", \"v2.0.13\", \"minimotd-bukkit-2.0.13.jar\")\n           //hangar(\"squaremap\", \"1.2.0\")\n           //url(\"https://download.luckperms.net/1515/bukkit/loader/LuckPerms-Bukkit-5.4.102.jar\")\n           github(\"MilkBowl\", \"Vault\", \"1.7.3\", \"Vault.jar\")\n       }\n       ```\n\n---\n\n## Testing \u0026 Debugging\n\nThe template includes [jpenilla's run-task](https://github.com/jpenilla/run-task) gradle plugin. This allows you to\neasily setup and run a development server for your plugin.\n\nBy default IntelliJ IDEA has excellent integration for debugging, and enables running your test server with a debugger\nattached, in one click.\n\nIf using other IDEs you can connect a debugger to port `5005` which the development server listens on by default.\n\n### Development Server\n\n1. Run `gradlew runServer` to start a minecraft server on `localhost:25565`.\n\n### Debugging (_IntelliJ IDEA_)\n\nThe Development Server is configured to work with the IntelliJ Debugger by default.\n\nSimply press the `Debug` button to launch your Development Server with a Debugger attached.\n![IntelliJ Debugger](https://i.imgur.com/vr9VRTs.png)\n\n### Debugging (External Debugger)\n\n\u003e [!NOTE]\n\u003e The steps here are mirrored\n\u003e from [PaperMC's Guide](https://docs.papermc.io/paper/dev/debugging#using-a-remote-debugger) and are meant for IntelliJ\n\u003e IDEA. Other IDEs may be similar.\n\n1. Open the `Run/Debug Configurations` page by clicking `Edit Configurations...`.\n   ![Edit Configuration Image](https://i.imgur.com/rO4wXXN.png)\n\n2. Click the `+` button in the _top left_ and select `Remote JVM Debug`.\n\n3. Name the config whatever you want (_like Debug_), then hit `Apply`.\n   ![Configuration Image](https://i.imgur.com/4M0LgZU.png)\n\n\u003e [!NOTE]\n\u003e The Development Server listens for Debuggers on port 5005.\n\n4. When your Development Server is running, connect your debugger by pressing the `Debug` button.\n   ![Debug Button Image](https://i.imgur.com/5lEvNVT.png)\n\n---\n\n## Credits\n\n- **[leviem1:](https://github.com/leviem1)** _For their excellent [__Spigot plugin-template__](https://github.com/CrimsonWarpedcraft/plugin-template) which this was originally a fork of. I highly recommend their more minimalistic and much less opinionated template._\n- **[A248:](https://github.com/A248)** _For exposing me to Flyway and jOOQ, inspiring me to include it in this template. I highly recommend you check out their projects [LibertyBans](https://github.com/A248/LibertyBans) \u0026 [MorePaperLib](https://github.com/A248/MorePaperLib) which are of exceptional quality._","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilkdrinkers%2Fminecraft-plugin-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmilkdrinkers%2Fminecraft-plugin-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilkdrinkers%2Fminecraft-plugin-template/lists"}