GeyserUpdater
An automatic updater plugin for GeyserMC / Floodgate. Supports Spigot (and forks like Paper), BungeeCord, and Velocity.
Features
- Fetches the latest stable versions of GeyserMC and Floodgate from the Jenkins/download API and overwrites the existing JARs in the plugins directory
- Fetches the latest MCXboxBroadcast (from Modrinth) and places it in the Geyser extensions folder (optional)
- Automatic update checks
- On server startup
- At a specified interval (e.g., every 12 hours)
- When a player with a specific permission logs in (can be enabled/disabled)
- Manual command: /geyserupdate (Permission: geyserupdater.admin)
- Configurable language, messages, targets, intervals, and restart commands
Build
- Prerequisites: Java 17, Maven 3.8+
- Instructions:
- Run
mvn packagein the directory where you cloned the repository - Artifacts:
spigot/target/GeyserUpdater-Spigot-1.0.0.jarbungee/target/GeyserUpdater-Bungee-1.0.0.jarvelocity/target/GeyserUpdater-Velocity-1.0.0.jar
- Run
Installation
- Place the appropriate JAR for your server platform into the plugins folder
- Start the server to generate the
config.ymlfile (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)
- If no existing JARs are found, it will create new ones with standard names (e.g.,
Commands & Permissions
/geyserupdate- Description: Immediately runs an update check
- Permission:
geyserupdater.admin
Configuration File (config.yml)
enabled: Enables or disables the pluginlanguage: Language setting (ja/en/de/ko, default:ja)checkOnStartup: Enables or disables the update check on startupperiodic.enabled: Enables or disables the periodic update checkperiodic.intervalHours: The interval for periodic checks (in hours)adminLogin.enabled: Enables or disables the update check when a privileged player logs inadminLogin.permission: The permission that triggers the check on login (default:geyserupdater.admin)targets.geyser | targets.floodgate | targets.mcxboxbroadcast: Choose which plugins to updatepostUpdate.notifyConsole: Notifies the console after an updatepostUpdate.notifyPlayersWithPermission: Sends an in-game chat notification to players with permissionpostUpdate.runRestartCommand: Automatically executes a restart command after an updatepostUpdate.restartCommand: The restart command to execute (e.g.,restartorend)messages.<lang>.*: Customize messages (e.g.,messages.ja.*)- For compatibility,
messages.*is also read whenlanguage=ja
- For compatibility,
How it Works
- Download URLs:
- Geyser:
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/{platform} - Floodgate:
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/{platform} - MCXboxBroadcast:
https://api.modrinth.com/v2/project/mcxboxbroadcast/version {platform}isspigot|bungeecord|velocity
- Geyser:
- 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.runRestartCommandtotrueand configurerestartCommandto match your environment
- To enable automatic restarts, set
- MCXboxBroadcast is placed in the Geyser extensions folder
- Example:
plugins/Geyser-Spigot/extensions
- Example:
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)
- MCXboxBroadcast is always placed in
plugins/Geyser-Spigot/extensions - The plugin does not display version numbers; it relies solely on hash comparison to determine if an update is available
License
- Apache License 2.0
All Versions
+ Add VersionThis release improves updater reliability, platform detection, and automatic restart handling.
### Added
- Added
postUpdate.restartDelaySeconds - Allows delaying the configured restart command after an update
- Default:
0seconds - Delayed automatic restart support for:
- Paper / Spigot
- BungeeCord
- Velocity
- Added platform-aware Geyser and Floodgate JAR detection
- Added automatic detection to prevent GeyserUpdater itself from being mistaken for a Geyser JAR
- Added automated tests for updater JAR detection and restart delay configuration
### Fixed
- Fixed overly broad Geyser/Floodgate JAR matching
- Fixed cases where unrelated or incorrectly named JAR files could be selected for replacement
- Fixed GeyserUpdater potentially being detected as the plugin it was supposed to update
- Fixed MCXboxBroadcast extension installation paths on proxy platforms
- MCXboxBroadcast is now installed into the correct platform-specific Geyser extensions folder
Examples:
``
text
Paper / Spigot:
plugins/Geyser-Spigot/extensions
BungeeCord:
plugins/Geyser-BungeeCord/extensions
Velocity:
plugins/Geyser-Velocity/extensions
``
### Automatic restart delay
You can now configure a delay before the automatic restart command is executed:
`yaml
postUpdate:
runRestartCommand: true
restartCommand: "restart"
restartDelaySeconds: 60
`
For BungeeCord, the restart command can for example be set to end.
Negative restart delay values are automatically treated as 0.
### Changed
- Updated internal version information to
1.1.0Updated the HTTP User-Agent to GeyserUpdater/1.1.0`This release improves updater reliability, platform detection, and automatic restart handling.
### Added
- Added
postUpdate.restartDelaySeconds - Allows delaying the configured restart command after an update
- Default:
0seconds - Delayed automatic restart support for:
- Paper / Spigot
- BungeeCord
- Velocity
- Added platform-aware Geyser and Floodgate JAR detection
- Added automatic detection to prevent GeyserUpdater itself from being mistaken for a Geyser JAR
- Added automated tests for updater JAR detection and restart delay configuration
### Fixed
- Fixed overly broad Geyser/Floodgate JAR matching
- Fixed cases where unrelated or incorrectly named JAR files could be selected for replacement
- Fixed GeyserUpdater potentially being detected as the plugin it was supposed to update
- Fixed MCXboxBroadcast extension installation paths on proxy platforms
- MCXboxBroadcast is now installed into the correct platform-specific Geyser extensions folder
Examples:
``
text
Paper / Spigot:
plugins/Geyser-Spigot/extensions
BungeeCord:
plugins/Geyser-BungeeCord/extensions
Velocity:
plugins/Geyser-Velocity/extensions
``
### Automatic restart delay
You can now configure a delay before the automatic restart command is executed:
`yaml
postUpdate:
runRestartCommand: true
restartCommand: "restart"
restartDelaySeconds: 60
`
For BungeeCord, the restart command can for example be set to end.
Negative restart delay values are automatically treated as 0.
### Changed
- Updated internal version information to
1.1.0Updated the HTTP User-Agent to GeyserUpdater/1.1.0`This release improves updater reliability, platform detection, and automatic restart handling.
### Added
- Added
postUpdate.restartDelaySeconds - Allows delaying the configured restart command after an update
- Default:
0seconds - Delayed automatic restart support for:
- Paper / Spigot
- BungeeCord
- Velocity
- Added platform-aware Geyser and Floodgate JAR detection
- Added automatic detection to prevent GeyserUpdater itself from being mistaken for a Geyser JAR
- Added automated tests for updater JAR detection and restart delay configuration
### Fixed
- Fixed overly broad Geyser/Floodgate JAR matching
- Fixed cases where unrelated or incorrectly named JAR files could be selected for replacement
- Fixed GeyserUpdater potentially being detected as the plugin it was supposed to update
- Fixed MCXboxBroadcast extension installation paths on proxy platforms
- MCXboxBroadcast is now installed into the correct platform-specific Geyser extensions folder
Examples:
``
text
Paper / Spigot:
plugins/Geyser-Spigot/extensions
BungeeCord:
plugins/Geyser-BungeeCord/extensions
Velocity:
plugins/Geyser-Velocity/extensions
``
### Automatic restart delay
You can now configure a delay before the automatic restart command is executed:
`yaml
postUpdate:
runRestartCommand: true
restartCommand: "restart"
restartDelaySeconds: 60
`
For BungeeCord, the restart command can for example be set to end.
Negative restart delay values are automatically treated as 0.
### Changed
- Updated internal version information to
1.1.0Updated the HTTP User-Agent to GeyserUpdater/1.1.0`- Fixed an issue where MCXboxBroadcast was downloaded to the Geyser-Spigot extensions folder when running on Velocity.
- On Velocity, MCXboxBroadcast is now correctly downloaded to the Geyser-Velocity extensions folder.
- Fixed an issue where MCXboxBroadcast was downloaded to the Geyser-Spigot extensions folder when running on Velocity.
- On Velocity, MCXboxBroadcast is now correctly downloaded to the Geyser-Velocity extensions folder.
- Fixed an issue where MCXboxBroadcast was downloaded to the Geyser-Spigot extensions folder when running on Velocity.
- On Velocity, MCXboxBroadcast is now correctly downloaded to the Geyser-Velocity extensions folder.
- Update summary**
- Support for **26.1 2** has been added.
- Known issues have been fixed.
- Fixed an issue where only **Floodgate** was updated while **Geyser** and **BroadcastExtension** were downloaded but not replaced correctly.
- Fixed an issue where update files remained in the temp folder instead of being moved to the server’s
pluginsfolder. - Improved the reliability of the automatic update process after restart.
- Update summary**
- Support for **26.1 2** has been added.
- Known issues have been fixed.
- Fixed an issue where only **Floodgate** was updated while **Geyser** and **BroadcastExtension** were downloaded but not replaced correctly.
- Fixed an issue where update files remained in the temp folder instead of being moved to the server’s
pluginsfolder. - Improved the reliability of the automatic update process after restart.
- Support for **26.1 2** has been added.
- Known issues have been fixed.
- Fixed an issue where only **Floodgate** was updated while **Geyser** and **BroadcastExtension** were downloaded but not replaced correctly.
- Fixed an issue where update files remained in the temp folder instead of being moved to the server’s
pluginsfolder. - Improved the reliability of the automatic update process after restart.
An automatic updater plugin for GeyserMC / Floodgate. Supports Spigot (and forks like Paper), BungeeCord, and Velocity.
## Features
- Fetches the latest stable versions** of GeyserMC and Floodgate from the Jenkins/download API and overwrites the existing JARs in the plugins directory.
- Automatic Update Checks**:
- On server startup.
- At a specified interval (e.g., every 12 hours).
- When a player with a specific permission logs in (can be enabled/disabled).
- Manual Command**:
/geyserupdate(Permission:geyserupdater.admin).
- Configurable messages, update targets, check intervals, and restart commands.
## Build
- Prerequisites**: Java 17, Maven 3.8+
- Instructions**:
- Run
mvn packagein the directory where you cloned the repository.
- Artifacts**:
spigot/target/GeyserUpdater-Spigot-1.0.0.jarbungee/target/GeyserUpdater-Bungee-1.0.0.jarvelocity/target/GeyserUpdater-Velocity-1.0.0.jar
## Installation
1. Place the appropriate JAR for your server platform into the plugins folder.
2. Start the server to generate the
config.yml file (it will be identical to the default config included in this README).3. 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.,restartorend).
messages.*: Customize the messages sent by the plugin.
## How it Works
- Download URLs**:
- Geyser:
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/{platform} - Floodgate:
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/{platform}
{platform}is replaced withspigot,bungeecord, orvelocity.- 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.runRestartCommandto true and configure therestartCommandto 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
*.jarfiles 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.
## License
A license (e.g., MIT) can be added upon request.
An automatic updater plugin for GeyserMC / Floodgate. Supports Spigot (and forks like Paper), BungeeCord, and Velocity.
## Features
- Fetches the latest stable versions** of GeyserMC and Floodgate from the Jenkins/download API and overwrites the existing JARs in the plugins directory.
- Automatic Update Checks**:
- On server startup.
- At a specified interval (e.g., every 12 hours).
- When a player with a specific permission logs in (can be enabled/disabled).
- Manual Command**:
/geyserupdate(Permission:geyserupdater.admin).
- Configurable messages, update targets, check intervals, and restart commands.
## Build
- Prerequisites**: Java 17, Maven 3.8+
- Instructions**:
- Run
mvn packagein the directory where you cloned the repository.
- Artifacts**:
spigot/target/GeyserUpdater-Spigot-1.0.0.jarbungee/target/GeyserUpdater-Bungee-1.0.0.jarvelocity/target/GeyserUpdater-Velocity-1.0.0.jar
## Installation
1. Place the appropriate JAR for your server platform into the plugins folder.
2. Start the server to generate the
config.yml file (it will be identical to the default config included in this README).3. 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.,restartorend).
messages.*: Customize the messages sent by the plugin.
## How it Works
- Download URLs**:
- Geyser:
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/{platform} - Floodgate:
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/{platform}
{platform}is replaced withspigot,bungeecord, orvelocity.- 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.runRestartCommandto true and configure therestartCommandto 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
*.jarfiles 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.
## License
A license (e.g., MIT) can be added upon request.
An automatic updater plugin for GeyserMC / Floodgate. Supports Spigot (and forks like Paper), BungeeCord, and Velocity.
## Features
- Fetches the latest stable versions** of GeyserMC and Floodgate from the Jenkins/download API and overwrites the existing JARs in the plugins directory.
- Automatic Update Checks**:
- On server startup.
- At a specified interval (e.g., every 12 hours).
- When a player with a specific permission logs in (can be enabled/disabled).
- Manual Command**:
/geyserupdate(Permission:geyserupdater.admin).
- Configurable messages, update targets, check intervals, and restart commands.
## Build
- Prerequisites**: Java 17, Maven 3.8+
- Instructions**:
- Run
mvn packagein the directory where you cloned the repository.
- Artifacts**:
spigot/target/GeyserUpdater-Spigot-1.0.0.jarbungee/target/GeyserUpdater-Bungee-1.0.0.jarvelocity/target/GeyserUpdater-Velocity-1.0.0.jar
## Installation
1. Place the appropriate JAR for your server platform into the plugins folder.
2. Start the server to generate the
config.yml file (it will be identical to the default config included in this README).3. 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.,restartorend).
messages.*: Customize the messages sent by the plugin.
## How it Works
- Download URLs**:
- Geyser:
https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/{platform} - Floodgate:
https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/{platform}
{platform}is replaced withspigot,bungeecord, orvelocity.- 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.runRestartCommandto true and configure therestartCommandto 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
*.jarfiles 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.
## License
A license (e.g., MIT) can be added upon request.