PluginGroup
插件组类, 存放插件代码有关数据
Attributes
attributeglobal_broadcast_listenersdict[str, classic_plugin.PluginEvents_P[Callable[[InternalBroadcast], Any]]]= {}attributeplugin_listen_packetsset[PacketIDS]= set()attributeplugins_apidict[str, Plugin]= {}attributenormal_plugin_loaded_num= 0attributeloaded_plugin_ids= []attributeon_err_cb= self.linked_frame.on_plugin_errattributehelp= staticmethod(classic_plugin_loader.help)Functions
func__init__(self, frame)paramselfparamframeToolDeltaReturns
Nonefuncpre_reload(self)重载插件框架前的预处理 执行插件的框架退出回调
paramselfReturns
Nonefuncreload(self)重载插件框架 这是一个不很安全的操作, 多次 reload 后 可能会因为一些插件线程由于底层原因无法被停止, 或者有垃圾无法被回收, 导致内存泄露等问题
paramselfReturns
Nonefunchook_packet_handler(self, hdl)paramselfparamhdlPacketHandlerReturns
Nonefuncbrocast_event(self, evt) -> list[Any]paramselfparamevtInternalBroadcastReturns
list[typing.Any]funcget_plugin_api(self, apiName, min_version=None, force=True) -> AnyparamselfparamapiNamestrparammin_versiontuple | None= Noneparamforce= TrueReturns
typing.Anyfuncset_frame(self, frame) -> None为各个框架分发关联的系统框架
paramselfparamframeToolDeltaReturns
Nonefuncload_plugins(self) -> None读取所有插件/重载所有插件 并对插件进行预初始化
Raises: SystemExit: 读取插件出现问题
paramselfReturns
Nonefuncexecute_preload(self, onerr) -> None执行插件的二次初始化方法
Args: onerr (Callable[[str, Exception, str], None], optional): 插件出错时的处理方法。Defaults to non_func.
Raises: SystemExit: 缺少前置 SystemExit: 前置版本过低
paramselfparamonerrON_ERROR_CBReturns
Nonefuncexecute_init(self, onerr) -> None执行插件的连接游戏后初始化方法
Args: onerr (Callable[[str, Exception, str], None], optional): 插件出错时的处理方法
paramselfparamonerrON_ERROR_CBReturns
Nonefuncexecute_player_join(self, player, onerr) -> None执行玩家加入的方法
Args: player (str): 玩家 onerr (Callable[[str, Exception, str], None], optional): q 插件出错时的处理方法
paramselfparamplayerPlayerparamonerrON_ERROR_CBReturns
Nonefuncexecute_chat(self, chat, onerr) -> None执行玩家消息的方法
Args: player (str): 玩家 msg (str): 消息 onerr (Callable[[str, Exception, str], None], optional): 插件出错时的处理方法
paramselfparamchatChatparamonerrON_ERROR_CBReturns
Nonefuncexecute_player_leave(self, player, onerr) -> None执行玩家离开的方法
Args: player (str): 玩家 onerr (Callable[[str, Exception, str], None], optional): 插件出错时的处理方法
paramselfparamplayerPlayerparamonerrON_ERROR_CBReturns
Nonefuncexecute_frame_exit(self, evt, onerr)执行框架退出的方法
Args: onerr (Callable[[str, Exception, str], None], optional): 插件出错时的处理方法
paramselfparamevtFrameExitparamonerrON_ERROR_CBReturns
Nonefuncexecute_reloaded(self, onerr)执行插件重载的方法
Args: onerr (Callable[[str, Exception, str], None], optional): 插件出错时的处理方法
paramselfparamonerrON_ERROR_CBReturns
Nonefunchandle_dict_packets(self, pktID, pkt, onerr) -> bool处理字典型数据包的监听器
Args: pktID (int): 数据包 ID pkt (dict): 数据包
Returns: bool: 是否处理成功
paramselfparampktIDPacketIDSparampktdictparamonerrON_ERROR_CBReturns
boolfunchandle_bytes_packets(self, pktID, pkt, onerr) -> bool处理二进制数据包的监听器
Args: pktID (int): 数据包 ID pkt (BaseBytesPacket): 数据包
Returns: bool: 是否处理成功
paramselfparampktIDPacketIDSparampktBaseBytesPacketparamonerrON_ERROR_CBReturns
boolfunchandle_text_packet(self, pkt)paramselfparampktdictReturns
Nonefunc__add_listen_packet_id(self, packetType) -> None添加数据包监听,仅在系统内部使用
Args: packetType (int): 数据包 ID
Raises: ValueError: 无法添加数据包监听,请确保已经加载了系统组件
paramselfparampacketTypePacketIDSReturns
None