Skip to content

Instantly share code, notes, and snippets.

@slash1div
Last active August 5, 2025 23:57
Show Gist options
  • Save slash1div/4a9eb50e74e303cdd55357e32d24589f to your computer and use it in GitHub Desktop.
Save slash1div/4a9eb50e74e303cdd55357e32d24589f to your computer and use it in GitHub Desktop.
How to Build CoreProtect Using Only GitHub

How to Build CoreProtect Using Only GitHub (No Coding Required!)

✅ All you need:

  • A web browser
  • A GitHub account
  • A bit of patience

Why This Tutorial Exists

Starting with Minecraft version 1.21, CoreProtect no longer provides downloads unless you pay for their Patreon. The plugin still remains open source, so you can build it yourself using Java and Maven. If you're not a developer, this seemingly locks the plugin behind a paywall.

Some people have switched to alternatives like Prism, which don't measure up at all. This has caused small servers to suffer. Some even shut down due to griefing, with no reliable way to trace or roll back the damage.

I've subscribed to CORE’s Patreon and plan to continue supporting it, but not everyone can afford to do that, or let alone even use Patreon. Minecraft is largely played by kids and teens, not adults.

This guide walks you through how to build CoreProtect using GitHub only. No Java knowledge, no downloads. I'm not a writer, just a tech guy doing his best, so hang in there with me. I barely know Java or Maven's basics myself.


Let’s Get Started


1. Fork the Repository

  1. Visit this link:

    https://github.com/PlayPro/CoreProtect/fork

  2. Click the "Create fork" button.

  3. (Optional) Rename it to something like CoreProtect-Build.

Creating Fork Page


2. Create a New File

  1. After the fork is created, you’ll be in your own copy of the CoreProtect repository.
  2. Click the "Add file" dropdown near the top-middle of the page.
  3. Select "Create new file".

Create File Button Location


3. Add Workflow Code

  1. In the file name box at the top, paste this:

    .github/workflows/custom-fork-build.yml
    
  2. Then paste the code below into the big text box underneath:

name: Custom Fork Build

on:
  workflow_dispatch: {}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Set up JDK 21
        uses: actions/setup-java@v4
        with:
          java-version: 21
          distribution: temurin

      - name: Set version in pom.xml to 23.0
        run: |
          sed -i '0,/<version>.*<\/version>/s//<version>23.0<\/version>/' pom.xml

      - name: Build with branch override
        run: mvn package --file pom.xml -Dproject.branch=master

      - name: Get correct jar
        id: jar
        run: |
          mkdir staging
          for file in target/*.jar; do
            if [[ "$(basename "$file")" != original-* ]]; then
              cp "$file" staging/
              echo "jar_name=$(basename "$file")" >> "$GITHUB_OUTPUT"
              break
            fi
          done
      
      - name: Upload the .jar directly
        uses: actions/upload-artifact@v4
        with:
          name: ${{ steps.jar.outputs.jar_name }}
          path: staging/${{ steps.jar.outputs.jar_name }}
          compression-level: 0
  1. Click "Commit changes" in the top-right corner.

Final Result of Pasting and Commit Button Location


4. Run the Build

  1. At the top of the page, click the "Actions" tab.
  2. In the left sidebar, click "Custom Fork Build".
  3. Click the "Run workflow" button.

The build will start!

Run Workflow Button Location


5. Open the Workflow

  1. Refresh the page to see the newest workflow at the top.
  2. Once the workflow finishes, you'll see a green checkmark (✅).

Note: The workflow shouldn't take longer than 2 minutes to complete. If it is still yellow, refresh again.

  1. Click the title of the workflow to open it!

An example of a finished workflow is below. You will click where the arrow is.

Finished Workflow


6. Grab the Jar

  1. If the workflow is finished, you should see a jar file at the bottom of the page.
  2. Click the download button next to the jar file artifact.
  3. Upload that .jar file to your Minecraft server — you’re done!

An example of the jar file's download button location is below.

Artifact Download Button


7. Delete Your Fork

Once you've downloaded your jar file, it's a good idea to delete your fork. Leaving it up might confuse others who are searching for an actual development fork of CoreProtect.

To delete your fork:

  1. Go to your forked repository on GitHub.
  2. Click the "Settings" tab at the top.
  3. Scroll to the bottom of the page.
  4. Click "Delete this repository".
  5. Follow the prompts to confirm and permanently delete it.

Delete Button Location


You Did It!

You now have the latest version of CoreProtect, built from source without needing to understand a single line of code (or download anything!).

If you value the plugin, support CoreProtect's Patreon as it will keep future development going.

Although this "paywalling" may seem annoying, it is necessary to keep the project going. Show some love to the developers and it might change in the future.

Thank you CORE for keeping this plugin going for so long. This is extremely rare in the Minecraft community, and deserves a lot of respect. ❤️

@baviereteam
Copy link

Note that setting -Dproject.branch=master during mvn package (or setting project.branch to master in pom.xml means the resulting build will not run on Minecraft servers which version including the patch number (the third number in the version, like 6 in 1.21.6) are higher than ConfigHandler.LATEST_VERSION (https://github.com/PlayPro/CoreProtect/blob/master/src/main/java/net/coreprotect/config/ConfigHandler.java).

For example, right now, this constant is set to 1.21.6, which means that a build with project.branch = master won't run at all on 1.21.7 or 1.21.8, and you'll get an incompatible version message when the server starts.
Building with a different project.branch value means you don't get that block as long as you're still on the good major version (1.21 here). I'm not certain of the other consequences of changing that value tho.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment