From adfda5a8cbeb6412b1b29b087c16cbbc5dc1d03c Mon Sep 17 00:00:00 2001 From: Luuk van Oijen Date: Tue, 28 Nov 2023 14:05:31 +0100 Subject: [PATCH] Update backend_lua.rs --- src/server/plugins/backend_lua.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/server/plugins/backend_lua.rs b/src/server/plugins/backend_lua.rs index a8f632c..36856a0 100644 --- a/src/server/plugins/backend_lua.rs +++ b/src/server/plugins/backend_lua.rs @@ -118,6 +118,33 @@ impl UserData for Context { } }); + methods.add_function("GetPlayerName", |lua, (id,): (u8,)| { + let me: Context = lua.globals().get("MP")?; + // We can simply request all player names and pick the one we need + let (tx, rx) = oneshot::channel(); + if let Err(e) = me.tx.blocking_send(ServerBoundPluginEvent::RequestPlayers(tx)) { + error!("Failed to send packet: {:?}", e); + } + let message = rx.blocking_recv(); + trace!("received player info"); + if let Ok(message) = message { + if let PluginBoundPluginEvent::Players(players) = message { + let mut name = None; + 'search: for (pid, pname) in players { + if pid == id { + name = Some(pname); + break 'search; + } + } + Ok(name) + } else { + unreachable!() // This really should never be reachable + } + } else { + todo!("Receiving a response from the server failed! How?") + } + }); + methods.add_function("SendChatMessage", |lua, (id, msg): (isize, String)| { let me: Context = lua.globals().get("MP")?; if let Err(e) = me.tx.blocking_send(ServerBoundPluginEvent::SendChatMessage((id, msg))) {