aboutsummaryrefslogtreecommitdiff
path: root/mcwrapper/players.py
diff options
context:
space:
mode:
Diffstat (limited to 'mcwrapper/players.py')
-rw-r--r--mcwrapper/players.py49
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')