fixed packet whitelist

This commit is contained in:
əlemi 2021-12-17 14:01:08 +01:00
parent 687e22ac5e
commit f70121f2c1
2 changed files with 4 additions and 2 deletions

View file

@ -228,7 +228,8 @@ class Dispatcher:
buffer = io.BytesIO(decompressed_data) buffer = io.BytesIO(decompressed_data)
packet_id = VarInt.read(buffer) packet_id = VarInt.read(buffer)
if self._packet_id_whitelist and packet_id in self._packet_id_whitelist: if self.state == ConnectionState.PLAY and self._packet_id_whitelist \
and packet_id not in self._packet_id_whitelist:
self._logger.debug("[<--] Received | Packet(0x%02x) (ignored)", packet_id) self._logger.debug("[<--] Received | Packet(0x%02x) (ignored)", packet_id)
continue # ignore this packet, we rarely need them all, should improve performance continue # ignore this packet, we rarely need them all, should improve performance
cls = self._packet_type_from_registry(packet_id) cls = self._packet_type_from_registry(packet_id)

View file

@ -2,6 +2,7 @@ import asyncio
import uuid import uuid
import logging import logging
from inspect import isclass
from typing import Dict, List, Set, Any, Callable, Type from typing import Dict, List, Set, Any, Callable, Type
class CallbacksHolder: class CallbacksHolder:
@ -17,7 +18,7 @@ class CallbacksHolder:
self._tasks = {} self._tasks = {}
def callback_keys(self, filter:Type = None) -> Set[Any]: def callback_keys(self, filter:Type = None) -> Set[Any]:
return set(x for x in self._callbacks.keys() if not filter or issubclass(x, filter)) return set(x for x in self._callbacks.keys() if not filter or (isclass(x) and issubclass(x, filter)))
def register(self, key:Any, callback:Callable): def register(self, key:Any, callback:Callable):
if key not in self._callbacks: if key not in self._callbacks: