Skip to content

Building from Source

Arkonix Game Studio edited this page Nov 12, 2026 · 2 revisions

Building from Source

Compile the plugin with Maven.

Requirements

  • JDK 25 (required by Minecraft 26.3)
  • Maven 3.8 or newer
  • Internet access for the first build (the Paper API is downloaded from repo.papermc.io)

Arch Linux:

sudo pacman -S --needed jdk-openjdk maven
archlinux-java status

Build

cd UniversalProtect
mvn -DskipTests clean package

The result is target/UniversalProtect.jar. Copy it into your server's plugins/ folder.

Use a specific Java for the build only

Your system's default Java stays untouched when you set JAVA_HOME for a single command:

JAVA_HOME=/usr/lib/jvm/java-25-openjdk mvn -DskipTests clean package

On Arch, archlinux-java status lists the installed versions.

Project layout

pom.xml
src/main/resources/
    plugin.yml
    config.yml
src/main/java/de/muffin/universalprotect/
    UniversalProtect.java       Main class
    ActionLogger.java           Server events -> log entries
    DatabaseManager.java        Database access
    DbType.java                 Engines and SQL dialects
    Migrator.java               Live database migration
    RollbackEngine.java         Rollback, restore, preview
    CommandHandler.java         The /up command
    InspectorListener.java      Inspector mode
    LookupView.java             Chat output
    Settings.java, Blacklist.java, ParamUtils.java, Query.java
    api/                        Public API (modelled on CoreProtect API v13)

Common build errors

Message Cause
release version 25 not supported Maven uses an older Java. Set JAVA_HOME as shown above.
Could not resolve io.papermc.paper:paper-api repo.papermc.io is not reachable. Check network or proxy.
cannot find symbol The Paper API version does not match. Check the version in pom.xml.

More classes

Pager.java                  20-line paging of all output
Investigator.java           /up investigate and /up timeline
AnomalyDetector.java        X-ray and other alerts
Causes.java                 Cause tracking
CommandRegions.java         Reads /fill, /setblock, /clone for #command
Compactor.java              /up compact
CoreProtectImporter.java    /up import-coreprotect
RollbackJournal.java        Crash recovery
StaffAudit.java             /up audit

Related pages: Installation · Troubleshooting

Clone this wiki locally