diff options
author | Karel Kočí <cynerd@email.cz> | 2016-10-30 22:44:34 +0100 |
---|---|---|
committer | Karel Kočí <cynerd@email.cz> | 2016-10-30 22:44:34 +0100 |
commit | 35d2ae9a115a17df2267cf0673d59419f4fd2a2f (patch) | |
tree | daa7484484806238ce98d6d1bed21122b8cd7b5e /mcwrapper/players.py | |
parent | d7b7cdf04c4a04eae1a44b53a8091fd1cda9d90f (diff) | |
download | mcserver-wrapper-35d2ae9a115a17df2267cf0673d59419f4fd2a2f.tar.gz mcserver-wrapper-35d2ae9a115a17df2267cf0673d59419f4fd2a2f.tar.bz2 mcserver-wrapper-35d2ae9a115a17df2267cf0673d59419f4fd2a2f.zip |
Split status and players to separate classes
Diffstat (limited to 'mcwrapper/players.py')
-rw-r--r-- | mcwrapper/players.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/mcwrapper/players.py b/mcwrapper/players.py new file mode 100644 index 0000000..c3dabb4 --- /dev/null +++ b/mcwrapper/players.py @@ -0,0 +1,49 @@ +# vim: expandtab ft=python ts=4 sw=4 sts=4: +import os + +from . import prints + +__PLAYERSFILE__ = 'players' + + +class MCPlayers: + "Tracks online players" + def __init__(self, wrapper, file_export=False): + self.players = set() + self.wrapper = wrapper + wrapper.hook_start(self.__reset__) + wrapper.hook_stop(self.__reset__) + wrapper.hook_line('logged in with entity id', self.__user_join__) + wrapper.hook_line('left the game', self.__user_leave__) + self.file_export = file_export + self.__reset__() + + def clean(self): + try: + os.remove(__PLAYERSFILE__) + except FileNotFoundError: + pass + + def __reset__(self): + if self.file_export: + open(__PLAYERSFILE__, 'w') # Just create empty file + + def __user_join__(self, line): + username = line[len('[00:00:00] [Server thread/INFO]: '):] + username = username[:username.index('[')] + prints.info("User '" + username + "' joined server.") + self.players.add(username) + if self.file_export: + with open(__PLAYERSFILE__, 'a') as file: + file.write(username + '\n') + + def __user_leave__(self, line): + username = line[len('[00:00:00] [Server thread/INFO]: '):] + username = username[:username.index(' ')] + prints.info("User '" + username + "' left server.") + self.players.remove(username) + if self.file_export: + with open(__PLAYERSFILE__, 'w') as file: + file.write('\n'.join(self.players)) + if self.players: + file.write('\n') |