Configurable messages, update targets, check intervals, and restart commands.
Build
Prerequisites: Java 17, Maven 3.8+
Instructions:
Run mvn package in the directory where you cloned the repository.
Artifacts:
spigot/target/GeyserUpdater-Spigot-1.0.0.jar
bungee/target/GeyserUpdater-Bungee-1.0.0.jar
velocity/target/GeyserUpdater-Velocity-1.0.0.jar
Installation
Place the appropriate JAR for your server platform into the plugins folder.
Start the server to generate the config.yml file (it will be identical to the default config included in this README).
The plugin automatically detects existing Geyser / Floodgate JARs by searching for files in the plugins directory that contain "geyser" or "floodgate" in their names.
If no existing JARs are found, it will create new ones with standard names (e.g., Geyser-Spigot.jar, floodgate-velocity.jar).
Commands & Permissions
/geyserupdate
Description: Immediately runs an update check.
Permission: geyserupdater.admin
Configuration File (config.yml)
enabled: Enables or disables the plugin.
checkOnStartup: Enables or disables the update check on startup.
periodic.enabled: Enables or disables the periodic update check.
periodic.intervalHours: The interval for periodic checks (in hours).
adminLogin.enabled: Enables or disables the update check when a privileged player logs in.
adminLogin.permission: The permission that triggers the check on login (default: geyserupdater.admin).
targets.geyser | targets.floodgate: Choose which plugins to update.
postUpdate.notifyConsole: Notifies the console after an update.
postUpdate.notifyPlayersWithPermission: Sends an in-game chat notification to players with permission.
postUpdate.runRestartCommand: Automatically executes a restart command after an update.
postUpdate.restartCommand: The restart command to execute (e.g., restart or end).
messages.*: Customize the messages sent by the plugin.
{platform} is replaced with spigot, bungeecord, or velocity.
The latest JAR is downloaded to a temporary file and its SHA-256 hash is compared with the existing JAR.
If the hashes are identical, it is considered "up to date," and the file is not replaced.
If they differ, the existing file is overwritten using an atomic replacement operation.
A server or proxy restart is required after an update is applied.
To enable automatic restarts, set postUpdate.runRestartCommand to true and configure the restartCommand to match your server's environment.
Notes / Known Limitations
If a download fails due to network issues or other errors, the existing plugin files will not be affected.
The plugin cannot detect Geyser/Floodgate files if they have unusual names or are not located directly within the plugins folder (it only scans for *.jar files in the root of the plugins directory).
The plugin does not display version numbers; it relies solely on hash comparison to determine if an update is available.