TL;DR
Drop the jar into plugins/ → list the plugins you want → it finds, downloads, validates, and stages updates from many sources — scheduled, parallel, and async.
LATEST BUILDS AND INFO/GUIDE ON GITHUB NewAmazingPVP/AutoUpdatePlugins: Automatically update any spigot/folia/bungeecord/velocity plugin you wish!
Highlights
- One list, many sources. GitHub (Releases/Actions), Jenkins, SpigotMC (Spiget), dev.bukkit, Modrinth, Hangar, BusyBiscuit, blob.build, Guizhanss v2, MineBBS, CurseForge, or any direct .jar link.
- Smart selectors. Use ?get=<regex>, [N] to pick the N-th asset, ?prerelease=true, ?autobuild=true.
- Auto-evolving config. New options auto-added without clobbering your comments.
- HTTP flexibility. Custom headers, rotating User-Agents, proxies supported.
- Performance built-in. Async downloads, connection pooling, parallel downloads, retries & backoff. Uses Java11+ HTTP/2 and Java21+ virtual threads when available.
- Flexible scheduling. interval + boot delay or cron with timezone.
- Cross-platform. Spigot, Paper, Folia, Velocity, BungeeCord.
- Safe updates. Download → validate → atomic replace (staging via temp/update paths).
- Integrity & dedupe. Optional zip checks and MD5 skip for unchanged files.
Supported Sources & Platforms
Download Sources
- GitHub — Releases & Actions. Supports [N], ?get=regex, ?prerelease=true, ?autobuild=true
- Jenkins — Latest build artifacts. Supports [N], ?get=regex
- SpigotMC (Spiget) — Resource page URL (auto-resolves latest)
- dev.bukkit — Project page (auto-resolves latest)
- Modrinth — Project/version URL. Supports ?get=regex
- Hangar, BusyBiscuit, blob.build, Guizhanss v2, MineBBS — index/resource pages
- CurseForge — Project/files with ?get=regex
- Generic — Direct .jar link (exact file URL)
Platforms: Spigot, Paper, Folia, Velocity, BungeeCord
Minecraft: 1.8 → Latest
Java: 8+ (features auto-used on 11+ / 21+)
Requirements
- Java 8 or newer. (Uses Java 11+ HTTP/2 client and Java 21+ virtual threads when available.)
- Network access for source builds (Gradle/Maven wrappers or system gradle/mvn if used).
Installation
- Download the latest jar from: Spigot Resource
- Place the jar into your server’s
directory.
- Start the server to generate default config files.
- Edit
Code (Text):
plugins/AutoUpdatePlugins/config.yml
and
Code (Text):
plugins/AutoUpdatePlugins/list.yml
.
- Run
or
(or restart) to start the first check.
Quick Start
- Add entries to
:
Code (Text):
ViaVersion: "https://www.spigotmc.org/resources/viaversion.19254/"
Geyser: "https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot"
EssentialsXChat: "https://github.com/EssentialsX/Essentials[3]"
- Leave
Code (Text):
updates.interval
default (120 minutes) or set cron.
- Optional: Add a GitHub token to avoid rate limits in
.
- Trigger run with:
- Updated jars are staged atomically. Restart the server to load them.
Configuration
config.yml (full schema with defaults)
Code (Text):
################################################################################
# AutoUpdatePlugins — Main Configuration
################################################################################
updates:
interval: 120 # minutes
bootTime: 50 # seconds
schedule:
cron: "" # cron expression (UNIX 5-field). Leave blank to disable.
timezone: "UTC" # timezone for cron (e.g. "America/New_York")
key: # optional GitHub PAT
http:
userAgent: ""
headers: []
sslVerify: true
userAgents:
- { ua: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36" }
- { ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15" }
- { ua: "Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0" }
proxy:
type: "NONE" # HTTP | SOCKS | NONE
host: "proxy.example"
port: 8080
behavior:
useUpdateFolder: true
zipFileCheck: true
ignoreDuplicates: true
allowPreRelease: false
autoCompile:
enable: false
whenNoJarAsset: false
branchNewerMonths: 6
debug: false
paths:
tempPath: ''
updatePath: ''
filePath: ''
performance:
maxParallel: 4
connectTimeoutMs: 10000
readTimeoutMs: 30000
perDownloadTimeoutSec: 0
maxRetries: 3
backoffBaseMs: 500
backoffMaxMs: 5000
maxPerHost: 3
Key options explained
- updates.schedule.cron + timezone — cron overrides interval/bootTime.
- updates.key — GitHub PAT for Releases/Actions access (public_repo scope is usually enough).
- http.userAgents — rotate UAs to avoid server-side blocks.
- proxy — supports HTTP/SOCKS proxies.
- behavior.autoCompile — build from GitHub source if needed (Gradle/Maven required).
- behavior.zipFileCheck — verify downloaded jars/zips before install.
- behavior.ignoreDuplicates — skip replacements when MD5 matches.
- behavior.useUpdateFolder — stage jars in update/ for atomic replace.
- performance — tune for your server and Java version.
list.yml (example)
Code (Text):
# A list of plugins to update.
# Format: <plugin-name>: <download-url>
ViaVersion: "https://www.spigotmc.org/resources/viaversion.19254/"
Geyser: "https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot"
EssentialsXChat: "https://github.com/EssentialsX/Essentials[3]
Worldedit: https://dev.bukkit.org/projects/worldedit
Worldguard: https://dev.bukkit.org/projects/worldguard
ViaRewindLegacySupport: https://ci.viaversion.com/view/ViaRewind/job/ViaRewind%20Legacy%20Support/
Troll: https://dev.bukkit.org/projects/troll-extreme
AntiPopup: "https://github.com/KaspianDev/AntiPopup"
ChatColor: "https://www.spigotmc.org/resources/chatcolor.22692/"
Chunky: "https://www.spigotmc.org/resources/chunky.81534/"
CoreProtect: "https://github.com/PlayPro/CoreProtect"
EssentialsX: "https://ci.ender.zone/job/EssentialsX/"
EssentialsXChat: "https://ci.ender.zone/job/EssentialsX/[3]"
EssentialsXSpawn: "https://ci.ender.zone/job/EssentialsX/[8]"
ForceXaeroFairPlay: "https://www.spigotmc.org/resources/forcexaerofairplay.121907/"
Floodgate: "https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot"
Geyser: "https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot"
InventoryRollbackPlus: "https://modrinth.com/plugin/inventoryrollbackplus"
LightningGrim: "https://modrinth.com/plugin/lightning-grim-anticheat"
LuckPerms: "https://ci.lucko.me/job/LuckPerms/"
PacketEvents: "https://www.spigotmc.org/resources/packetevents-api.80279/"
PlaceholderAPI: "https://ci.extendedclip.com/job/PlaceholderAPI/[3]"
PlayerStats: "https://www.spigotmc.org/resources/playerstats.102347/"
PlugmanX: "https://github.com/Test-Account666/PlugManX"
ServerBackup: "https://github.com/SF-Sudio/ServerBackup"
ServerListPlus: "https://ci.codemc.org/job/Minecrell/job/ServerListPlus/[3]"
SkinsRestorer: "https://github.com/SkinsRestorer/SkinsRestorer/[3]"
TAB: "https://github.com/NEZNAMY/TAB"
Tebex: "https://github.com/tebexio/Tebex-Minecraft"
Themis: "https://www.spigotmc.org/resources/themis-anti-cheat-1-17-1-21-bedrock-support-paper-compatibility-free-optimized.90766/"
UnlimitedNameTags: "https://github.com/alexdev03/UnlimitedNametags"
ViaRewind: "https://ci.viaversion.com/view/ViaRewind/job/ViaRewind/"
ViaVersion: "https://ci.viaversion.com/job/ViaVersion/"
Vault: "https://www.spigotmc.org/resources/vault.34315/"
VoiceChat: "https://modrinth.com/plugin/simple-voice-chat"
CombatLogX: https://www.spigotmc.org/resources/combatlogx.31689/
AuthMeReloaded: https://ci.codemc.io/job/AuthMe/job/AuthMeReloaded/[4]
BlueSlimeCore: https://www.spigotmc.org/resources/blueslimecore.83189/
Chunky: https://www.spigotmc.org/resources/chunky.81534/
ChunkyBorder: https://www.spigotmc.org/resources/chunkyborder.84278/
DiscordSRV: https://get.discordsrv.com/
Dynmap: https://dev.bukkit.org/projects/dynmap
EasyPrefix: https://www.spigotmc.org/resources/easyprefix-gui-custom-prefixes-sql-support.44580/
EssentialsX: https://github.com/EssentialsX/Essentials
EssentialsXChat: https://github.com/EssentialsX/Essentials[3]
FAWE: https://ci.athion.net/job/FastAsyncWorldEdit/
Floodgate: https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot
Geyser-spigot: https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot
lssmp: https://www.spigotmc.org/resources/lifesteal-smp-plugin.94387/
LuckPerms: https://www.spigotmc.org/resources/luckperms.28140/
PlaceholderAPI: https://www.spigotmc.org/resources/placeholderapi.6245/
PlayerStats: https://www.spigotmc.org/resources/playerstats.102347/
ProtocolLib: https://github.com/dmulloy2/ProtocolLib
SkinsRestorer: https://ci.codemc.io/job/SkinsRestorer/job/SkinsRestorer/
TAB: https://github.com/NEZNAMY/TAB
ViewDistanceTweaks: https://www.spigotmc.org/resources/view-distance-tweaks.75164/
Voicemod: https://modrinth.com/plugin/simple-voice-chat/
ViaVersion-Dev: https://ci.viaversion.com/job/ViaVersion-DEV/
ViaBackwards: https://hangar.papermc.io/ViaVersion/ViaBackwards
ViewDistanceTweaks: https://ci.froobworld.com/job/ViewDistanceTweaks/
"
Selectors you can use
- [N] — pick the N-th jar asset (1-indexed) from a release or build.
- ?get=<regex> — match filenames (escape dots: `\\.jar`).
- ?prerelease=true — allow pre-releases.
- ?autobuild=true — force source build on GitHub.
Scheduling Cheat Sheet
Examples (America/New_York):
- Every 2 hours: `0 */2 * * *`
- Every day at 05:00: `0 5 * * *`
- Mon & Thu at 03:30: `30 3 * * 1,4`
- Every 15 minutes: `*/15 * * * *`
If cron empty → uses interval (minutes) with bootTime (seconds) delay.
Performance Tuning Guide
- Java 21+: raise `performance.maxParallel` (8–16) for many small artifacts (virtual threads).
- Java 11+: tune `maxPerHost` for origins hosting many jars.
- Java 8: increase `readTimeoutMs` for large downloads and lower `maxParallel` if network-saturated.
- Retries: plugin retries `maxRetries` times with exponential backoff (`backoffBaseMs` → `backoffMaxMs`).
- Set `perDownloadTimeoutSec` to protect against stuck transfers (0 disables).
- Place `tempPath`/`updatePath` on fast local storage if possible.
Commands & Permissions
Commands
-
— Trigger update run.
-
Code (Text):
/aup download [names...]
— Update all or named plugins.
-
Code (Text):
/aup update [names...]
— Alias of download.
-
— Request stop of current update process.
-
— Reload config.
-
Code (Text):
/aup add <name> <link>
— Add entry to list.yml.
-
Code (Text):
/aup remove <name>
— Remove entry.
-
Code (Text):
/aup list [page]
— View configured list.
-
Code (Text):
/aup debug <on|off|toggle|status>
— Verbose logging.
-
Code (Text):
/aup enable|disable <name>
— Toggle an entry.
Permissions
- autoupdateplugins.update — Allows `/update`
- autoupdateplugins.manage — Allows `/aup ...` commands
How It Works (Under the Hood)
- Discovery — Detect provider for each list.yml entry and compute latest matching artifact using selectors.
- Download (async) — Pooled connections; HTTP/2 on Java11+; virtual threads on Java21+ when available.
- Validation — Optional zip integrity checks and duplicate detection (name + size or MD5).
- Staging & Atomic Replace — Write to temp, then move atomically into update/plugins target.
- Repeat — According to interval/cron with retries/backoff for transient failures.
Examples for Every Source
Code (Text):
# GitHub Releases (2nd asset, spigot-only)
MyPlugin: "https://github.com/Owner/MyPlugin[2]?get=.*spigot.*\\.jar"
# GitHub Actions (force build)
MyActionsPlugin: "https://github.com/Owner/MyActionsPlugin?autobuild=true"
# Jenkins
CoolThing: "https://ci.example.com/job/CoolThing/lastSuccessfulBuild/artifact/?get=.*-all\\.jar"
CoolThingAlt: "https://ci.example.com/job/CoolThing/lastSuccessfulBuild/artifact/[2]"
# SpigotMC
ViaVersion: "https://www.spigotmc.org/resources/viaversion.19254/"
# dev.bukkit
Vault: "https://dev.bukkit.org/projects/vault"
# Modrinth
Fancy: "https://modrinth.com/plugin/fancy?get=.*(paper|spigot).*\\.jar"
# Hangar
HangarThing: "https://hangar.papermc.io/Owner/Project?get=.*spigot.*\\.jar"
# CurseForge
CFThing: "https://www.curseforge.com/minecraft/bukkit-plugins/cfthing/files?get=.*release.*\\.jar"
# Direct jar
DirectJar: "https://downloads.example.com/plugins/DirectJar-1.2.3.jar"
Troubleshooting & FAQ
- Q: Updates downloaded, but server didn’t change.
A: Most servers load jars only at startup. Restart the server after a run.
- Q: GitHub rate-limited / cannot access Actions artifacts.
A: Add a GitHub PAT in `config.yml` → `updates.key`. Ensure token has read access for private repos.
- Q: Wrong file selected.
A: Use `?get=regex` or `[N]`. Escape dots in regex (e.g., `\\.jar`).
- Q: Timeouts or slow downloads.
A: Increase `readTimeoutMs`, decrease `maxParallel`, or set `perDownloadTimeoutSec` and tune `maxRetries`/backoff.
- Q: Need pre-releases.
A: Append `?prerelease=true` to the URL or set `behavior.allowPreRelease: true`.
- Q: Behind a corporate proxy.
A: Configure `proxy.type/host/port`. If proxy MITM TLS, add proxy CA to Java trust store.
- Q: Build from source didn’t trigger.
A: Ensure `behavior.autoCompile.enable: true`, use `?autobuild=true` or allow it when no jar asset exists. Server must have outbound network access.
Security Notes
- Use least-privileged tokens. For GitHub, a PAT scoped only to required repos is best.
- Treat third-party downloads as untrusted: keep `zipFileCheck: true`.
- Pin sources with `?get=regex` to avoid accidental switches to incompatible artifacts.
Contributing, Issues & Support
Thanks for using AutoUpdatePlugins!
Support
Discord
: https://discord.gg/u3u45vaV6G
Bstats
Bukkit
![[IMG]](//proxy.spigotmc.org/2c21041aaf1823a0081ed1af3f8f3c38e68e1ac3/68747470733a2f2f6273746174732e6f72672f7369676e6174757265732f62756b6b69742f4175746f557064617465506c7567696e732e737667)
Bungeecord
![[IMG]](//proxy.spigotmc.org/421952f0c3da2c1bb180b6858ec6891a4343af8d/68747470733a2f2f6273746174732e6f72672f7369676e6174757265732f62756e676565636f72642f4175746f557064617465506c7567696e732e737667)
Velocity
![[IMG]](//proxy.spigotmc.org/ea97d72475322dd11602cf816fbceb669e6078b2/68747470733a2f2f6273746174732e6f72672f7369676e6174757265732f76656c6f636974792f4175746f557064617465506c7567696e732e737667)