mcdreforged.handler.impl.waterfall_handler 源代码

import re
from typing import Optional

from typing_extensions import override

from mcdreforged.handler.impl.bungeecord_handler import BungeecordHandler
from mcdreforged.info_reactor.info import Info


[文档] class WaterfallHandler(BungeecordHandler): """ A handler for `Waterfall <https://github.com/PaperMC/Waterfall>`__ servers The logging format of waterfall server is paper like (waterfall is PaperMC's bungeecord fork shmm) """ # [02:18:30 INFO]: Enabled plugin cmd_list version git:cmd_list:1.15-SNAPSHOT:f1c32f8:1489 by SpigotMC # [02:18:29 INFO] [ViaVersion]: Loading 1.12.2 -> 1.13 mappings..." @classmethod @override def get_content_parsing_formatter(cls) -> re.Pattern: return re.compile( r'\[(?P<hour>\d+):(?P<min>\d+):(?P<sec>\d+) (?P<logging>[^]]+)]' r'( \[[^]]+])?' # useless logger name r': (?P<content>.*)' ) @override def parse_player_joined(self, info: Info) -> Optional[str]: # [02:18:52 INFO]: [/127.0.0.1:14426] <-> InitialHandler has connected # sadly no player id display here return None # [/127.0.0.1:14426|Fallen_Breath] -> UpstreamBridge has disconnected __player_left_regex = re.compile(r'\[/[^|]+\|(?P<name>[^]]+)] -> UpstreamBridge has disconnected') @override def parse_player_left(self, info): if not info.is_user: if (m := self.__player_left_regex.fullmatch(info.content)) is not None: return m['name'] return None