diff options
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/client/init.lua | 1 | ||||
-rw-r--r-- | builtin/common/item_s.lua | 14 | ||||
-rw-r--r-- | builtin/common/tests/misc_helpers_spec.lua | 1 | ||||
-rw-r--r-- | builtin/common/tests/serialize_spec.lua | 1 | ||||
-rw-r--r-- | builtin/common/tests/vector_spec.lua | 2 | ||||
-rw-r--r-- | builtin/common/vector.lua | 25 | ||||
-rw-r--r-- | builtin/mainmenu/tests/serverlistmgr_spec.lua | 1 |
7 files changed, 39 insertions, 6 deletions
diff --git a/builtin/client/init.lua b/builtin/client/init.lua index 3719a90ee..68fb169f0 100644 --- a/builtin/client/init.lua +++ b/builtin/client/init.lua @@ -10,3 +10,4 @@ dofile(commonpath .. "chatcommands.lua") dofile(clientpath .. "chatcommands.lua") dofile(clientpath .. "death_formspec.lua") dofile(clientpath .. "misc.lua") +assert(loadfile(commonpath .. "item_s.lua"))({}) -- Just for push/read node functions diff --git a/builtin/common/item_s.lua b/builtin/common/item_s.lua index 6e4269b7d..f848ef6d8 100644 --- a/builtin/common/item_s.lua +++ b/builtin/common/item_s.lua @@ -223,3 +223,17 @@ function builtin_shared.cache_content_ids() end end end + +if core.set_read_node and core.set_push_node then + local function read_node(node) + return name2content[node.name], node.param1, node.param2 + end + core.set_read_node(read_node) + core.set_read_node = nil + + local function push_node(content, param1, param2) + return {name = content2name[content], param1 = param1, param2 = param2} + end + core.set_push_node(push_node) + core.set_push_node = nil +end diff --git a/builtin/common/tests/misc_helpers_spec.lua b/builtin/common/tests/misc_helpers_spec.lua index 7d046d5b7..ff0f0298a 100644 --- a/builtin/common/tests/misc_helpers_spec.lua +++ b/builtin/common/tests/misc_helpers_spec.lua @@ -1,5 +1,4 @@ _G.core = {} -_G.vector = {metatable = {}} dofile("builtin/common/vector.lua") dofile("builtin/common/misc_helpers.lua") diff --git a/builtin/common/tests/serialize_spec.lua b/builtin/common/tests/serialize_spec.lua index 340e226ee..d4e501468 100644 --- a/builtin/common/tests/serialize_spec.lua +++ b/builtin/common/tests/serialize_spec.lua @@ -1,5 +1,4 @@ _G.core = {} -_G.vector = {metatable = {}} _G.setfenv = require 'busted.compatibility'.setfenv diff --git a/builtin/common/tests/vector_spec.lua b/builtin/common/tests/vector_spec.lua index 6a0b81a89..a738e068f 100644 --- a/builtin/common/tests/vector_spec.lua +++ b/builtin/common/tests/vector_spec.lua @@ -1,4 +1,4 @@ -_G.vector = {metatable = {}} +_G.vector = {} dofile("builtin/common/vector.lua") describe("vector", function() diff --git a/builtin/common/vector.lua b/builtin/common/vector.lua index a08472e32..cebc99580 100644 --- a/builtin/common/vector.lua +++ b/builtin/common/vector.lua @@ -6,8 +6,10 @@ Note: The vector.*-functions must be able to accept old vectors that had no meta -- localize functions local setmetatable = setmetatable --- vector.metatable is set by C++. -local metatable = vector.metatable +vector = {} + +local metatable = {} +vector.metatable = metatable local xyz = {"x", "y", "z"} @@ -366,3 +368,22 @@ function vector.dir_to_rotation(forward, up) end return rot end + +if rawget(_G, "core") and core.set_read_vector and core.set_push_vector then + local function read_vector(v) + return v.x, v.y, v.z + end + core.set_read_vector(read_vector) + core.set_read_vector = nil + + if rawget(_G, "jit") then + -- This is necessary to prevent trace aborts. + local function push_vector(x, y, z) + return (fast_new(x, y, z)) + end + core.set_push_vector(push_vector) + else + core.set_push_vector(fast_new) + end + core.set_push_vector = nil +end diff --git a/builtin/mainmenu/tests/serverlistmgr_spec.lua b/builtin/mainmenu/tests/serverlistmgr_spec.lua index 013bd0a28..25e208d10 100644 --- a/builtin/mainmenu/tests/serverlistmgr_spec.lua +++ b/builtin/mainmenu/tests/serverlistmgr_spec.lua @@ -1,5 +1,4 @@ _G.core = {get_once = function(_) end} -_G.vector = {metatable = {}} _G.unpack = table.unpack _G.serverlistmgr = {} |