1.1.0
Compatibility
Changes
ServerPatch 1.1.0
A plugin updater for PaperMC servers, designed for stability, security, and determinism. It checks your installed plugins for updates, creates an encrypted snapshot, and executes updates with zero background usage when idle.
Key Features (v1.1.0)
🔒 Snapshot Update System
Updates are now deterministic.
- Check:
/serverpatch checkscans plugins and saves an encrypted snapshot of the update plan. No files are downloaded yet. - Verify: You can review pending updates with
/serverpatch snapshot-status. - Run:
/serverpatch runexecutes the snapshot exactly as planned. If the server environment changes (e.g., you switch from Paper to Spigot), the snapshot is invalidated for safety.
🛡️ Enhanced Security & Stability
- Strict Loader Matching: Enforces compatibility. Paper servers will reject plugins marked only for Spigot unless explicitly allowed.
- Hash Verification: Verifies SHA-256 hashes against remote sources (Modrinth) to prevent tampering and incomplete downloads.
- Duplicate Prevention: Automatically detects and prevents duplicate jars (e.g.,
Plugin-1.0.jarvsPlugin.jar) after updates. - Zero Idle Usage: No background threads or tasks run when the plugin is idle.
📦 Modrinth & Hangar Support
- Deep Integration: Fetches detailed metadata, including load compatibility and stability.
- Smart Fallback: Prioritizes Modrinth/Hangar, falling back to SpigotMC only for free resources if needed.
Installation
Drop ServerPatch-1.1.0.jar into your plugins/ folder and restart the server.
Requirements:
- PaperMC 1.20+ (or forks like Purpur, Folia)
- Java 17+
Commands
All commands require the serverpatch.admin permission.
Check for updates
/serverpatch check
Scans all plugins, resolves updates, and saves a snapshot. Does NOT download or modify files.
View Snapshot Status
/serverpatch snapshot-status
Shows the pending updates stored in the current snapshot, including versions and target files.
Apply updates
/serverpatch run
Loads the secure snapshot, verifies integrity, downloads the updates, and replaces the plugin JARs. A server restart is required to load new versions.
Mute restart warnings
/serverpatch silent
Mutes the generic "Restart Required" broadcast that appears after updates are applied.
Restore from backup
/serverpatch backup restore <folder>
Stages a restore from a timestamped backup folder (tab-complete available).
Confirm with /serverpatch backup confirm.
Configuration (config.yml)
| Setting | Default | Description |
|---|---|---|
mode |
CHECK_ONLY |
CHECK_ONLY, DOWNLOAD_ONLY, or AUTO_UPDATE |
sources.modrinth |
true |
Enable Modrinth source |
sources.hangar |
true |
Enable Hangar source |
compatibility.allowSpigotOnPaper |
false |
If true, allows Spigot-only plugins on Paper |
security.verifyChecksum |
true |
Enforce hash verification |
network.timeoutSeconds |
30 |
Connection timeout for update checks |
Permissions
| Permission | Default | Description |
|---|---|---|
serverpatch.admin |
OP | Access to all ServerPatch commands |
Author
Made by Shiraken12T
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:odapE4VV:LTzikK2M"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:odapE4VV:LTzikK2M"
}

