Add handle_command_suggestion export
This commit is contained in:
parent
60b1dbc358
commit
a657ef68c3
@ -37,6 +37,13 @@ _EVENT_HANDLERS: Dict[int, Callable[[server.Server, Any], Any]] = {}
|
|||||||
_COMMAND_HANDLERS: Dict[
|
_COMMAND_HANDLERS: Dict[
|
||||||
int, Callable[[command.CommandSender, server.Server, command.ConsumedArgs], int]
|
int, Callable[[command.CommandSender, server.Server, command.ConsumedArgs], int]
|
||||||
] = {}
|
] = {}
|
||||||
|
_COMMAND_SUGGESTION_HANDLERS: Dict[
|
||||||
|
int,
|
||||||
|
Callable[
|
||||||
|
[command.CommandSender, server.Server, command.SuggestionRequest],
|
||||||
|
command.CommandSuggestions,
|
||||||
|
],
|
||||||
|
] = {}
|
||||||
_TASK_HANDLERS: Dict[int, Callable[[server.Server], None]] = {}
|
_TASK_HANDLERS: Dict[int, Callable[[server.Server], None]] = {}
|
||||||
_AI_GOALS: Dict[int, AiGoal] = {}
|
_AI_GOALS: Dict[int, AiGoal] = {}
|
||||||
_GENERATORS: Dict[int, Callable[[world.GenerationPhase, world.ChunkBuffer], None]] = {}
|
_GENERATORS: Dict[int, Callable[[world.GenerationPhase, world.ChunkBuffer], None]] = {}
|
||||||
@ -97,7 +104,7 @@ class Plugin:
|
|||||||
_EVENT_HANDLERS[handler_id] = handler
|
_EVENT_HANDLERS[handler_id] = handler
|
||||||
ctx.register_event(handler_id, event_type, priority, blocking)
|
ctx.register_event(handler_id, event_type, priority, blocking)
|
||||||
|
|
||||||
def register_handler(
|
def register_command_handler(
|
||||||
self,
|
self,
|
||||||
handler: Callable[
|
handler: Callable[
|
||||||
[command.CommandSender, server.Server, command.ConsumedArgs], int
|
[command.CommandSender, server.Server, command.ConsumedArgs], int
|
||||||
@ -107,6 +114,17 @@ class Plugin:
|
|||||||
_COMMAND_HANDLERS[handler_id] = handler
|
_COMMAND_HANDLERS[handler_id] = handler
|
||||||
return handler_id
|
return handler_id
|
||||||
|
|
||||||
|
def register_command_suggestion_handler(
|
||||||
|
self,
|
||||||
|
handler: Callable[
|
||||||
|
[command.CommandSender, server.Server, command.SuggestionRequest],
|
||||||
|
command.CommandSuggestions,
|
||||||
|
],
|
||||||
|
) -> int:
|
||||||
|
handler_id = _get_next_handler_id()
|
||||||
|
_COMMAND_SUGGESTION_HANDLERS[handler_id] = handler
|
||||||
|
return handler_id
|
||||||
|
|
||||||
def register_command(
|
def register_command(
|
||||||
self,
|
self,
|
||||||
ctx: context.Context,
|
ctx: context.Context,
|
||||||
@ -114,14 +132,24 @@ class Plugin:
|
|||||||
handler: Callable[
|
handler: Callable[
|
||||||
[command.CommandSender, server.Server, command.ConsumedArgs], int
|
[command.CommandSender, server.Server, command.ConsumedArgs], int
|
||||||
],
|
],
|
||||||
|
suggestion_handler: Callable[
|
||||||
|
[command.CommandSender, server.Server, command.SuggestionRequest],
|
||||||
|
command.CommandSuggestions,
|
||||||
|
]
|
||||||
|
| None = None,
|
||||||
permission: str = "",
|
permission: str = "",
|
||||||
extra_nodes=None,
|
extra_nodes: list[command.CommandNode] | None = None,
|
||||||
):
|
):
|
||||||
handler_id = self.register_handler(handler)
|
suggestion_id = None
|
||||||
|
if suggestion_handler:
|
||||||
|
suggestion_id = self.register_command_suggestion_handler(suggestion_handler)
|
||||||
|
handler_id = self.register_command_handler(handler)
|
||||||
cmd.execute_with_handler_id(handler_id)
|
cmd.execute_with_handler_id(handler_id)
|
||||||
if extra_nodes:
|
if extra_nodes:
|
||||||
for node in extra_nodes:
|
for node in extra_nodes:
|
||||||
node.execute_with_handler_id(handler_id)
|
node.execute_with_handler_id(handler_id)
|
||||||
|
if suggestion_id:
|
||||||
|
node.suggest_with_handler_id(suggestion_id)
|
||||||
ctx.register_command(cmd, permission)
|
ctx.register_command(cmd, permission)
|
||||||
|
|
||||||
def register_ai_goal(self, goal: AiGoal) -> int:
|
def register_ai_goal(self, goal: AiGoal) -> int:
|
||||||
@ -244,6 +272,18 @@ class WitWorldImpl(wit_world.WitWorld):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def handle_command_suggestion(
|
||||||
|
self,
|
||||||
|
handler_id: int,
|
||||||
|
sender: command.CommandSender,
|
||||||
|
server: server.Server,
|
||||||
|
request: command.SuggestionRequest,
|
||||||
|
) -> command.CommandSuggestions:
|
||||||
|
if handler_id in _COMMAND_SUGGESTION_HANDLERS:
|
||||||
|
return _COMMAND_SUGGESTION_HANDLERS[handler_id](sender, server, request)
|
||||||
|
|
||||||
|
raise Exception(f"No suggestion handler registered for ID {handler_id}")
|
||||||
|
|
||||||
def handle_task(self, handler_id: int, server: server.Server) -> None:
|
def handle_task(self, handler_id: int, server: server.Server) -> None:
|
||||||
if handler_id in _TASK_HANDLERS:
|
if handler_id in _TASK_HANDLERS:
|
||||||
_TASK_HANDLERS[handler_id](server)
|
_TASK_HANDLERS[handler_id](server)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user