ServerRestarter
ServerRestarter
About
ServerRestarter is a highly configurable server restart management plugin. Through this plugin, you can set an infinite amount of messages to display and sounds to play at specific intervals. You can also enable scoreboard display (fully configurable) to inform users continuously about an oncoming restart. The /sr command is provided to trigger a restart manually or update the time until next restart and restart message. Time format in commands and config is 0d0h0m0s0ms (e.g. 3h30m, 5s500ms). Chat color format in commands and config is &code, where code is the color code.
NOTE: /restart command is currently broken, as bukkit/spigot override this command yet do not automate it; use /sr instead. NOTE: A script (listed below) is required for the restart to actually work, otherwise the server will simply shut down as usual.
Features
- Completely configurable restart actions. (Restart actions are dynamic, not by index as in every other restart plugin.)
- Restart actions come as either message, sound, or scoreboard action.
- Optional scoreboard display allows every option to be configured: title, location, text format. These can be changed at intervals via action.
- Command to control restarts and restart settings.
- State file creation to indicate to scripts that a server wishes to be restarted.
Commands
- /sr Trigger a restart instantly.
- /sr [time] Set the restart time to [time].
- /sr [message] Set the restart kick message to [message]. NOTE: If the message starts with a valid time format, it will be treated as the command below.
- /sr [time] [message] Set both time and message simultaneous.
- /sr reset Reset the time and message to default settings (restarting the timer). Permission node is sr.restart (or server operator).
Config
This is an example configuration file (automatically generated by the plugin).
# Time before restarting the server. # Format is 0d0h0m0s0ms. restart_time: 3h kick_message: Server is restarting! Come back in a minute or two! # ServerRestarter will create this file in the base server directory # every time the plugin is enabled, and will # delete it upon being disabled given that the server is not restarting. # By not deleting it until being disabled, it guarantees that a server crash will cause a restart (as the plugin is not disabled in a crash). # This option is useful for scripts to detect if the server shut down for a restart or crash. state_file: auto_restart create_state_file: 'true' actions: # You may specify as many of these as you want. Name does not matter; value is the action. # Currently accepted formats are: # message:<time>:<message> # sound:<time>:<sound>:<volume>:<pitch> # scoreboard:<time>:enable|disable|settitle:<title>|setformat:<d|h|m|s|ms>:<text> # List of sounds can be found at http://jd.bukkit.org/rb/apidocs/org/bukkit/Sound.html. message_5m: message:5m:&aServer will restart in 5 minutes... scoreboard_5m_title: scoreboard:5m1ms:settitle:Restart Time scoreboard_5m_format: 'scoreboard:5m1ms:setformat:m:&aMinutes left:' scoreboard_5m_enable: scoreboard:5m:enable sound_5m: sound:5m:NOTE_PIANO:1.0:3.0 message_2m: message:2m:&aServer will restart in 2 minutes... message_1m: message:1m:&aServer will restart in 1 minute... sound_1m: sound:1m:NOTE_PIANO:1.0:2.0 sound2_1m: sound:1m:NOTE_BASS_GUITAR:1.0:2.0 scoreboard_1m_format: 'scoreboard:1m:setformat:s:&eSeconds left:' message_30s: message:30s:&aServer will restart in 30 seconds... sound_30s: sound:30s:NOTE_PIANO:1.0:1.0 scoreboard_30s_format: 'scoreboard:30s:setformat:s:&6Seconds left:' message_15s: message:15s:&aServer will restart in 15 seconds... sound_15s: sound:15s:NOTE_PIANO:1.0:1.0 scoreboard_15s_format: 'scoreboard:15s:setformat:s:&cSeconds left:' message_10s: message:10s:&aServer will restart in 10 seconds... sound_10s: sound:10s:NOTE_PIANO:1.0:1.0 message_5s: message:5s:&aServer will restart in 5 seconds... scoreboard_5s_format: 'scoreboard:5s:setformat:s:&4Seconds left:' sound_5s: sound:5s:NOTE_PIANO:1.0:1.0 sound_5s300ms: sound:5s300ms:NOTE_PIANO:1.0:1.0 message_4s: message:4s:&aServer will restart in 4 seconds... sound_4s: sound:4s:NOTE_PIANO:1.0:1.0 sound_4s300ms: sound:4s300ms:NOTE_PIANO:1.0:1.0 message_3s: message:3s:&aServer will restart in 3 seconds... sound_3s: sound:3s:NOTE_PIANO:1.0:1.0 sound_3s300ms: sound:3s300ms:NOTE_PIANO:1.0:1.0 message_2s: message:2s:&aServer will restart in 2 seconds... sound_2s: sound:2s:NOTE_PIANO:1.0:1.0 sound_2s300ms: sound:2s300ms:NOTE_PIANO:1.0:1.0 message_1s: message:1s:&aServer will restart in 1 second... sound_1s: sound:1s:NOTE_PIANO:1.0:1.0 sound_1s300ms: sound:1s300ms:NOTE_PIANO:1.0:1.0 sound_1s600ms: sound:1s600ms:NOTE_PIANO:1.0:1.0
More readable, alternative script (equivalent to the one above):
# Time before restarting the server. # Format is 0d0h0m0s0ms. restart_time: 3h kick_message: Server is restarting! Come back in a minute or two! # ServerRestarter will create this file in the base server directory every time the plugin is enabled, and will delete it upon being disabled given that the server is not restarting. # By not deleting it until being disabled, it guarantees that a server crash will cause a restart (as the plugin is not disabled in a crash). # This option is useful for scripts to detect if the server shut down for a restart or crash. state_file: auto_restart create_state_file: 'true' # You may specify as many of these as you want. Name does not matter; value is the action. # Currently accepted formats are: # message:<time>:<message> # sound:<time>:<sound>:<volume>:<pitch> # scoreboard:<time>:enable|disable|settitle:<title>|setformat:<d|h|m|s|ms>:<text> # List of sounds can be found at http://jd.bukkit.org/rb/apidocs/org/bukkit/Sound.html. actions: 5m_msg: 'message:5m:&aServer will restart in 5 minutes...' 5m_scb_title: 'scoreboard:5m1ms:settitle:Restart Time' 5m_scb_format: 'scoreboard:5m1ms:setformat:m:&aMinutes left:' 5m_scb_enable: 'scoreboard:5m:enable' 5m_snd: 'sound:5m:NOTE_PIANO:1.0:3.0' 2m_msg: 'message:2m:&aServer will restart in 2 minutes...' 1m_msg: 'message:1m:&aServer will restart in 1 minute...' 1m_snd: 'sound:1m:NOTE_PIANO:1.0:2.0' 1m_snd2: 'sound:1m:NOTE_BASS_GUITAR:1.0:2.0' 1m_scb_format: 'scoreboard:1m:setformat:s:&eSeconds left:' 30s_msg: 'message:30s:&aServer will restart in 30 seconds...' 30s_snd: 'sound:30s:NOTE_PIANO:1.0:1.0' 30s_scb_format: 'scoreboard:30s:setformat:s:&6Seconds left:' 15s_msg: 'message:15s:&aServer will restart in 15 seconds...' 15s_snd: 'sound:15s:NOTE_PIANO:1.0:1.0' 15s_scb_format: 'scoreboard:15s:setformat:s:&cSeconds left:' 10s_msg: 'message:10s:&aServer will restart in 10 seconds...' 10s_snd: 'sound:10s:NOTE_PIANO:1.0:1.0' 5s_msg: 'message:5s:&aServer will restart in 5 seconds...' 5s_scb_format: 'scoreboard:5s:setformat:s:&4Seconds left:' 5s_snd: 'sound:5s:NOTE_PIANO:1.0:1.0' 5s300ms_snd: 'sound:5s300ms:NOTE_PIANO:1.0:1.0' 4s_msg: 'message:4s:&aServer will restart in 4 seconds...' 4s_snd: 'sound:4s:NOTE_PIANO:1.0:1.0' 4s300ms_snd: 'sound:4s300ms:NOTE_PIANO:1.0:1.0' 3s_msg: 'message:3s:&aServer will restart in 3 seconds...' 3s_snd: 'sound:3s:NOTE_PIANO:1.0:1.0' 3s300ms_snd: 'sound:3s300ms:NOTE_PIANO:1.0:1.0' 2s_msg: 'message:2s:&aServer will restart in 2 seconds...' 2s_snd: 'sound:2s:NOTE_PIANO:1.0:1.0' 2s300ms_snd: 'sound:2s300ms:NOTE_PIANO:1.0:1.0' 1s_msg: 'message:1s:&aServer will restart in 1 second...' 1s_snd: 'sound:1s:NOTE_PIANO:1.0:1.0' 1s300ms_snd: 'sound:1s300ms:NOTE_PIANO:1.0:1.0' 1s600ms_snd: 'sound:1s600ms:NOTE_PIANO:1.0:1.0'
Scripts
Linux:
#!/bin/bash JAVA="java" JAVA_OPTS="-Xms1024M -Xmx1024M" SERVER_JAR="server.jar" STATE_FILE="auto_restart" while true do $JAVA $JAVA_OPTS -jar $SERVER_JAR if [ ! -e $STATE_FILE ] then break fi echo "Restarting server in 5 seconds! Kill the process with 'ctrl+c' to prevent it from rebooting or use /stop when the server has rebooted." for i in {5..1} do echo "$i..." sleep 1 done echo "Restarting!" done
Windows: (untested- sorry, not on this OS :( let me know if it works)
@ECHO OFF SET JAVA=java SET JAVA_OPTS=-Xms1024M -Xmx1024M SET SERVER_JAR=server.jar SET STATE_FILE=auto_restart :START %JAVA% %JAVA_OPTS% -jar %SERVER_JAR% IF NOT EXIST %STATE_FILE% EXIT ECHO Restarting server in 5 seconds! Close the command prompt to prevent it from rebooting or use /stop when the server has rebooted. FOR /l %X IN (5, -1, 1) DO ( ECHO %X%... TIMEOUT 1 ) GOTO START
Alternative Windows (in case the above script does not work):
@ECHO OFF :START java -Xms1024M -Xmx1024M -jar server.jar IF NOT EXIST auto_restart EXIT GOTO START
Change the options in either script as you see fit. These will restart your server if a file named 'auto_restart' is found (configurable), otherwise exit.
hey, you have a great plugin, but i want to remove it. But it is not in the plugins folder.
How i remove it?
This is/was a fantastic plugin, we still use it on our old servers.
I requested someone port it to Sponge- https://forums.spongepowered.org/t/server-restarter-port/15375
Do I put the Linux script in the "auto_restart" file ?
update to 1.7.X please ?
Hey. This plugin looks really, really good-but could you include a mac script? I know how Terminal etc. works, but I'm a bit in the woods here.
Thanks!
What is the script for mac?
It just stops the server it doesn't start back up
Ive got a linux server Running MineOS, where exactly am i mean to be putting this script?. Im a bit clueless about editing linux acutally
@FranticIch
That is intended behavior. If you type /stop the server will shutdown normally without restarting by deleting that file (the restart script will only restart if that file is present). Type /sr to restart the server rather than shutting it down.
The "auto_restart" file deletes itself sometimes - is that a bug or did I do something wrong?
Edit: It seems to happen when I "/stop" the server. (I'm using Ubunu, Linux)
@TomShar
If you're having issues with the status file checking in the restart script, you can just remove this line on Windows:
IF NOT EXIST %STATE_FILE% EXIT
or these on Linux:
if [ ! -e $STATE_FILE ] then break fi
Some times the server doesn't boot back up but other times it does, any idea why?
Added an alternative config action format. /restart is broken for the time being.
Make a video about configuration please, it's a very useful plugin.
@snipershotmaster
You can rename the things to be a bit more readable... sorry about that. The names in the actions.* config nodes don't actually matter and can be named whatever. To disable sounds, simply remove the actions.sound_* nodes :)
It does work for windows for me but the config is a bit too complicated to use. Also how do i disable the sound?
typed /restart but my server didnt come bck online