|
| 1 | +from parse import parse |
| 2 | +from mcdreforged.api.types import Info, PluginServerInterface |
| 3 | +from mcdreforged.api.decorator import new_thread |
| 4 | + |
| 5 | +from mcd_seen.utils import verify_player_name, bot_name, tr, logger, psi |
| 6 | +from mcd_seen.storage import storage, bot_list |
| 7 | +from mcd_seen.config import config |
| 8 | +from mcd_seen.interface import register_command |
| 9 | + |
| 10 | + |
| 11 | +def on_info(server: PluginServerInterface, info: Info) -> None: |
| 12 | + if info.is_from_server and config.identify_bot: |
| 13 | + logger.debug('Join event found with on_info') |
| 14 | + psd = parse('{name}[{ip}] logged in with entity id {id} at {loc}', info.content) |
| 15 | + if psd is not None and verify_player_name(psd['name']): |
| 16 | + player_name = bot_name(psd['name']) if psd['ip'] == 'local' else psd['name'] |
| 17 | + storage.player_joined(player_name) |
| 18 | + |
| 19 | + |
| 20 | +def on_player_joined(server: PluginServerInterface, player: str, info: Info = None): |
| 21 | + if not config.identify_bot: |
| 22 | + logger.debug('Join event found with on_player_joined') |
| 23 | + storage.player_joined(player) |
| 24 | + |
| 25 | + |
| 26 | +def on_player_left(server: PluginServerInterface, player: str): |
| 27 | + server.get_instance() # to satisfy pycharm >3 |
| 28 | + storage.player_left(player) |
| 29 | + |
| 30 | + |
| 31 | +def on_server_stop(*args, **kwargs): |
| 32 | + list(args).clear() # to satisfy pycharm >3 |
| 33 | + dict(kwargs).clear() |
| 34 | + storage.correct([]) |
| 35 | + |
| 36 | + |
| 37 | +def on_unload(*args, **kwargs): |
| 38 | + logger.unset_file() |
| 39 | + |
| 40 | + |
| 41 | +@new_thread(psi.get_self_metadata().name + '_PluginLoad') |
| 42 | +def warn_first_load(): |
| 43 | + logger.warning('Load Seen plugin when server is empty is suggested to make sure all the datas are right') |
| 44 | + |
| 45 | + |
| 46 | +def on_load(server: PluginServerInterface, prev_module): |
| 47 | + for prefix in config.seen_prefix: |
| 48 | + server.register_help_message(prefix, tr('mcd_seen.text.reg_help_msg')) |
| 49 | + register_command(server) |
| 50 | + if prev_module is not None: |
| 51 | + try: |
| 52 | + bot_list.clear() |
| 53 | + for player in prev_module.bot_list: |
| 54 | + bot_list.append(player) |
| 55 | + except AttributeError: |
| 56 | + logger.info('Seems upgraded from a old version, welcome!') |
| 57 | + else: |
| 58 | + if server.is_server_running(): |
| 59 | + warn_first_load() |
0 commit comments