Home›Java›Mods›NeverUp2Late - Automatically keeps Server+Plugins up to date
NeverUp2Late - Automatically keeps Server+Plugins up to date
ModsJava

NeverUp2Late - Automatically keeps Server+Plugins up to date

Java mod listed for Minecraft 1.21. Downloads from the MC Java Mods app on Android.

⬇ Download on Spigot
[​IMG]

Your server and every plugin on it, always up to date,
without you lifting a finger.


Paper 1.21+ · Java 21+ · Open source (GPL-3.0)

GitHub · Releases · Report a bug​

NeverUp2Late watches Paper and your plugins on Hangar, Modrinth, CurseForge, SpigotMC, GitHub and Jenkins.
When something new comes out, it downloads it, checks that it is the real file and that your server can run it,
swaps it in, and restarts at night once nobody is online. If an update does not start, it puts the old version back.

Code (Text):
/nu2l https://modrinth.com/plugin/luckperms
That is the whole setup for a new plugin. Paste a link and NeverUp2Late handles the rest, today and for every future release.

Quickstart​

  1. Download NeverUp2Late with the Download button above and drop it into plugins/.
  2. Start the server. Operators get a short setup wizard in-game; on a console-only server run /nu2l setup complete.
  3. Add plugins by link with /nu2l <url>, or open the GUI with /nu2l and link the plugins you already have.

Done. NeverUp2Late checks every three hours and keeps itself up to date as well.

Requirements: Paper 1.21 or newer (or any server implementing the Bukkit API 1.21+) on Java 21.

Built to be trusted​

An updater that replaces files on a live server has to be more careful than you would be by hand. Every update passes
through these checks, and any one of them can stop it, leaving the installed version untouched:


Want to see what would happen before anything changes? /nu2l plan reports every update it would install and every one
it would refuse, without downloading or writing a single file.

Supported platforms​


In-game

Paste a link, pick a file, done

[​IMG]​

When a release ships several jars or a ZIP, NeverUp2Late lists them in chat. Click the one you want; the choice is
remembered for every future update. While it works, progress and the download bar run in your action bar instead of
filling the chat.

Status at a glance​

/nu2l status opens with one line that answers the question - 12 sources · 2 waiting for a restart · 0 failing - and
then lists every source with an icon. Hover for the details, click [Check] to look right now, or [Rollback] when
something failed. /nu2l help works the same way: click a command to run it.

A GUI for everything else​

/nu2l opens a chest interface with every plugin on the server. The frame turns green, yellow or red with the state of
the whole server, plugins with an update waiting shimmer, and a right-click checks one right away. Page through any number
of plugins, filter by updates ready, failing or not linked, or search by name. Link plugins to update sources (with
suggestions from Modrinth and Hangar), turn updates on or off, choose between restart and hot-reload, or rename files.
Anything that removes or rolls back asks first on its own confirmation screen.

[​IMG]​

Spoiler: More screenshots
[​IMG]

[​IMG]

[​IMG]​

Commands​


All permissions default to operators.

Spoiler: All permissions
Code (Text):
neverup2late.setup                 # Setup wizard
neverup2late.install               # /nu2l <url>, status, plan, check, rollback, select
neverup2late.gui.open              # Open the GUI
neverup2late.gui.manage            # All of the following
neverup2late.gui.manage.lifecycle  # Load, unload, enable plugins
neverup2late.gui.manage.link       # Link plugins with update sources
neverup2late.gui.manage.settings   # Per-plugin update settings
neverup2late.gui.manage.rename     # Rename plugin files
neverup2late.gui.manage.remove     # Remove plugins
The command itself has no permission on purpose: moderators with only neverup2late.gui.open can still open the GUI.

Configuration​

Everything lives in plugins/NeverUp2Late/config.yml, and the file explains each setting in place. The ones you are most
likely to touch:


New settings from later versions are added to your file automatically; values you set are never changed.

Spoiler: Update sources in config.yml
/nu2l <url> writes these for you, but you can also edit them by hand:

Code (YAML):
updates:
  sources
:
    - name
: luckperms
      type
: modrinth
      target
: plugins             # or "server" for the server jar
      filename
: "LuckPerms.jar"
      options
:
        project
: luckperms
        installedPlugin
: LuckPerms
  • paper — No fields required; detects the installed Minecraft version. ignoreUnstable / allowUnstable, minimumUnstableBuild (default 50), allowGameVersionUpgrade (default false).
  • geyser — Preconfigured; usually needs nothing.
  • hangar — owner + slug (or project: owner/slug). Optional: platform, allowedChannels, ignoreUnstable / allowUnstable, requireReviewed, preferPinned, pageSize, maxPages, installedPlugin.
  • modrinth — project. Optional: loaders, statuses, versionTypes, gameVersions, preferPrimaryFile, installedPlugin.
  • curseforge — modId. Optional: apiKey, release type filters, game versions, installedPlugin.
  • spigot — resourceId. Optional: preferredGameVersions, ignoreCompatibilityWarnings, installedPlugin.
  • githubRelease — owner, repository. Optional: assetPattern, allowPrerelease, archiveEntryPattern, installedPlugin.
  • jenkins — baseUrl, job. Optional: artifact, artifactPattern, preferLastSuccessful, versionSource, versionPattern, installedPlugin.
  • custom class — type is the fully qualified class name of your UpdateFetcher; all options are passed to its constructor.

Spoiler: Per-plugin settings (plugin-settings.yml)
Written by the GUI, one entry per plugin:

  • autoUpdate – check this plugin on the schedule. Manual checks always work.
  • behaviour – REQUIRE_RESTART (default, the safe choice) or AUTO_RELOAD to hot-reload right after the update.
  • retainUpstreamFilename – keep the file name the platform uses instead of the configured one.

Spoiler: Files NeverUp2Late keeps
All under plugins/NeverUp2Late/:

  • plugins.yml – the installed version per source, so nothing is downloaded twice.
  • plugin-settings.yml – per-plugin preferences from the GUI.
  • setup-state.yml – how far the setup wizard got.
  • restart-state.yml – time of the last automatic restart, for the cooldown.
  • pending-verification.yml – updates that still have to prove they start.
  • config-upgrade.yml – which config upgrades were applied.
  • backups/ – previous versions of replaced jars.

FAQ​

Will it restart my server while people are playing?
No. Plugin updates wait until the server is empty and it is between 03:00 and 06:00. Admins who are online get a chat
message with the version and a link to the changelog.

What if an update breaks a plugin?
If the plugin fails to start, NeverUp2Late restores the previous version on its own and does not install that release
again. You can also roll back by hand with /nu2l rollback <source> at any time.

Can I see what it is going to do first?
/nu2l plan lists every update it would install and every one it would refuse, and changes nothing.

I only want some plugins updated automatically.
Turn auto-updates off per plugin in the GUI. Manual /nu2l check <source> still works for those.

How does NeverUp2Late update itself?
From its GitHub releases. Every release first sits as a pre-release for 24 hours, which no installation
downloads, so a broken build can be pulled before it reaches any server.

Troubleshooting​


Bug reports and pull requests are welcome on GitHub.
NeverUp2Late is released under the GNU General Public License v3.0.​

Commands

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

NeverUp2Late - Automatically keeps Server+Plugins up to date is a free Minecraft Java mod. Compatible with Minecraft 1.21. Downloaded 431 times (via Spigot). Download it and open it directly in the game.

Explore more