mcdreforged.handler.impl.waterfall_handler 源代码

from typing import Optional

import parse
from typing_extensions import override

from mcdreforged.handler.impl.bukkit_handler import BukkitHandler
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): return ( BukkitHandler.get_content_parsing_formatter(), '[{hour:d}:{min:d}:{sec:d} {logging}] [{dummy}]: {content}' # something there is an extra element after the heading [] and : ) @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 __player_left_parser = parse.Parser('[/{ip}|{name}] -> UpstreamBridge has disconnected') @override def parse_player_left(self, info): # [/127.0.0.1:14426|Fallen_Breath] -> UpstreamBridge has disconnected if not info.is_user: parsed = self.__player_left_parser.parse(info.content) if parsed is not None: return parsed['name'] return None