diff options
author | Karel Kočí <cynerd@email.cz> | 2016-10-23 12:53:45 +0200 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2016-10-23 12:53:45 +0200 |
commit | f556c681a5afae36a7d7c11ade5854a6de4a0896 (patch) | |
tree | 90d4442c0b5a20fc589faf9e10866b8eba868e37 /mcwrapper/__init__.py | |
parent | fcbf1c073d90c09e27b2ba69ca62b89ad6e1b063 (diff) | |
download | mcserver-wrapper-f556c681a5afae36a7d7c11ade5854a6de4a0896.tar.gz mcserver-wrapper-f556c681a5afae36a7d7c11ade5854a6de4a0896.tar.bz2 mcserver-wrapper-f556c681a5afae36a7d7c11ade5854a6de4a0896.zip |
Add message of the day feature
Diffstat (limited to 'mcwrapper/__init__.py')
-rwxr-xr-x | mcwrapper/__init__.py | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/mcwrapper/__init__.py b/mcwrapper/__init__.py index 2ae3c2a..dec7194 100755 --- a/mcwrapper/__init__.py +++ b/mcwrapper/__init__.py @@ -1,28 +1,27 @@ # vim: expandtab ft=python ts=4 sw=4 sts=4: -import os -import sys -import subprocess import signal -import time import atexit import argparse -from threading import Thread from . import prints -from . import wrapper +from . import alarm from .wrapper import MCWrapper +from .mod import MoD mcserver_wrapper = None +mcserver_mod = None def __wrapper_atexit__(): "This is called when wrapper is exiting" - mcserver_wrapper.clean() + if mcserver_wrapper is not None: + mcserver_wrapper.clean() def __wrapper_toexit__(): "This function is called when system signalizes that mcwrapper should exit" - mcserver_wrapper.stop() + if mcserver_wrapper is not None: + mcserver_wrapper.stop() def __signal_term__(_signo, _stack_frame): @@ -36,6 +35,12 @@ __HELP_DESC__ = """ """ +def reload(): + "Reloads input files. Currently applicable only on mod." + if mcserver_mod is not None: + mcserver_mod.load_mods() + + def main(): "Main function" global verbose_level @@ -49,6 +54,12 @@ def main(): parser.add_argument('--players-file', '-p', action='store_true', help="""Outputs list of online players to file \"players\" """) + parser.add_argument('--mod-file', '-m', type=str, + help="""Prints periodically random line from + given file as message of the day.""") + parser.add_argument('--mod-time', type=int, + help="""Period used for message of the day in + seconds. In default 900 (15 minutes).""") parser.add_argument('command', nargs=argparse.REMAINDER, help="""Command to be executed to start Minecraft server.""") @@ -58,20 +69,31 @@ def main(): command = args.command sfile = args.status_file pfile = args.players_file + mod_file = args.mod_file + mod_time = args.mod_time if not command: parser.print_help() return + # Just small hack to not open minecraft server gui if 'nogui' not in command: command.append('nogui') + alarm.init() + signal.signal(signal.SIGUSR1, reload) + signal.signal(signal.SIGUSR2, reload) # probably can be used for something else in future + global mcserver_wrapper mcserver_wrapper = MCWrapper(command, pfile, sfile) signal.signal(signal.SIGTERM, __signal_term__) signal.signal(signal.SIGINT, __signal_term__) atexit.register(__wrapper_atexit__) - mcserver_wrapper.execstart() + mcserver_wrapper.start() + if mod_file is not None: + global mcserver_mod + mcserver_mod = MoD(mcserver_wrapper, mod_file, mod_time or 900) + mcserver_wrapper.process.wait() if __name__ == '__main__': main() |