MobArena plugin for Minecraft
Go to file
Andreas Troelsen be6fd85a6d Add publish-curseforge GitHub Actions workflow.
Introduces a new workflow that runs when a new build has been published
on GitHub Releases. It converts the release notes to CurseForge HTML and
sends it to CurseForge along with the jar-file.

Note: The workflow currently relies on the version string being appended
to the filename of the jar-file. Without it, the file reference in the
`curl` request that uploads the build would need to change.

The workflow references a new secret, `CURSEFORGE_TOKEN`, which is just
an API key for the CurseForge API. The token was created on CurseForge
under profile settings (My API Tokens).

In order to properly upload a new build to CurseForge, we need a list of
"game version IDs", which isn't completely trivial. The API gives us a
means of looking up _all_ Minecraft game version IDs, but we then have
to manually filter out the ones that don't apply to Bukkit plugins, as
there are duplicate entries for each Minecraft version, and only some of
them work for Bukkit plugins (which turns out to be the ones with game
version type ID 1). The structure of the `metadata` field combined with
how incredibly difficult bash can be to work with has resulted in some
gnarly text processing trying to filter the JSON response and turning it
into a list for use in the `jq` template, but it gets the job done.

The CurseForge base URL and project ID are both hardcoded, and things
would probably be cleaner if they were made into variables, but we don't
need this workflow anywhere else, so it's fine for now.

The workflow can be invoked directly via the `workflow_dispatch` event,
which might come in handy if something in the pipeline breaks.

Lots of inspiration was found in the probably really great GitHub Action
`curseforge-upload` [1]. We could have probably just used that, but it's
nice to have full control of the process. At any rate, thanks to itsmeow
and NotMyFault for publishing their work.

---

[1] https://github.com/itsmeow/curseforge-upload
2024-01-01 16:46:38 +01:00
.github Add publish-curseforge GitHub Actions workflow. 2024-01-01 16:46:38 +01:00
gradle/wrapper Convert to Gradle. 2023-12-09 21:08:09 +01:00
scripts Add hangar format to release note script. 2023-12-31 15:14:25 +01:00
src Make InventoryThingParser package-private. 2024-01-01 18:34:20 +01:00
.gitignore Convert to Gradle. 2023-12-09 21:08:09 +01:00
build.gradle.kts Include version in artifact filename. 2023-12-30 23:36:07 +01:00
changelog.md Add per-arena setting monster-teleporting. 2023-11-13 16:29:51 +01:00
gradlew Convert to Gradle. 2023-12-09 21:08:09 +01:00
gradlew.bat Convert to Gradle. 2023-12-09 21:08:09 +01:00
LICENSE Add LICENSE 2018-04-27 16:32:02 +02:00
README.md Add Hangar link to README. 2023-11-13 12:21:40 +01:00
settings.gradle.kts Convert to Gradle. 2023-12-09 21:08:09 +01:00

MobArena Build Status

MobArena is an arena-style minigame for Spigot-based Minecraft servers

Getting Started

If you don't want to compile the plugin yourself, grab a release artifact from one of these two sites:

The wiki here on Github should have all the information you need to get started using the plugin.

Getting Help

If you run into problems or need help with something, feel free to hop on the MobArena Discord server to have a chat: Instant Invite

Remember, though, that this communication channel is idle chat, which means you likely won't get a response immediately. It could take anything from a couple of seconds to a day, but your message will be seen.

Contributing

Found a bug, got a suggestion, or want to dig into the code base? There are many ways to contribute to the project!

Get started here: Contributing