eventList = {} def callEvent(name : str, **args : dict): if name in eventList: for event in eventList[name]: event['function'](**args) def addEvent(name): if not name in eventList: eventList[name] = [] def event(name : str, priority : int = 9999): def inlineEvt(func): if not name in eventList: pass eventList[name].append({'function': func, 'priority': priority}) eventList[name].sort(key = lambda x: x['priority']) return func return inlineEvt def removeEventHandler(name : str, func : int): if not name in eventList: pass for index, item in enumerate(eventList[name]): if item['function'] == func: del eventList[name][index] ## registering all events addEvent('onInit') addEvent('onExit') addEvent('onTick') addEvent('onTime') addEvent('onBan') addEvent('onUnban')