From ae34bb8b7a45ed829ae032337e83431454ae40cc Mon Sep 17 00:00:00 2001 From: Redo Date: Sun, 7 Dec 2025 11:52:40 -0500 Subject: [PATCH] fix commandToClient, handle net strings when passed to lua, misc readme additions --- BlockLua.dll | Bin 379980 -> 379980 bytes readme.md | 28 ++++++++++++++-------------- src/util/libbl.lua | 11 ++++++++--- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/BlockLua.dll b/BlockLua.dll index 0935a5b166396e2c573a6e0d3e79eed191e84390..6ba6f6dedcd4450f964d2aedc0ec98bcc81f8a4f 100644 GIT binary patch delta 6885 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 delta 6775 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 local vec = multinumericFromTs(val) if vec then return vec end + -- net string + if val:sub(1,1)=='\x01' then + return _bllua_ts.call('getTaggedString', val) + end -- string return val end @@ -676,7 +680,7 @@ luaLookup = function(tbl, name, set, val) local first, rest = name:match('^([^%.:]+)%.(.+)$') if not isValidFuncName(first) then error('luaLookup: invalid name \''..tostring(first)..'\'', 3) end - if not tbl[first] then + if tbl[first]==nil then if set then tbl[first] = {} else return nil end end @@ -691,7 +695,7 @@ luaLookup = function(tbl, name, set, val) error('luacall: invalid method name \''..tostring(first)..'\'', 3) end if not tbl[first] then error('luacall: no object named \''..rest..'\'', 3) end - if not tbl[first][rest] then + if tbl[first][rest]==nil then error('luacall: no method named \''..rest..'\'', 3) end return function(...) tbl[first][rest](tbl[first], ...) @@ -790,8 +794,9 @@ function bl.commandToServer(cmd, ...) _bllua_ts.call('addTaggedString', cmd), unpack(arglistToTs({...}))) end -function bl.commandToClient(cmd, ...) +function bl.commandToClient(client, cmd, ...) _bllua_ts.call('commandToClient', + valToTs(client), _bllua_ts.call('addTaggedString', cmd), unpack(arglistToTs({...}))) end