summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlua/api.lua9
-rwxr-xr-xlua/visual.lua12
2 files changed, 16 insertions, 5 deletions
diff --git a/lua/api.lua b/lua/api.lua
index 414245e..af91e0f 100755
--- a/lua/api.lua
+++ b/lua/api.lua
@@ -109,10 +109,13 @@ function drawers.drawer_on_dig(pos, node, player)
end
function drawers.drawer_insert_object(pos, node, stack, direction)
- local drawer_visual = drawers.drawer_visuals[core.serialize(pos)]
- if not drawer_visual then return stack end
+ local drawer_visuals = drawers.drawer_visuals[core.serialize(pos)]
+ if not drawer_visuals then return stack end
- local leftover = drawer_visual.try_insert_stack(drawer_visual, stack, true)
+ local leftover = stack
+ for _, visual in pairs(drawer_visuals) do
+ leftover = visual.try_insert_stack(visual, leftover, true)
+ end
return leftover
end
diff --git a/lua/visual.lua b/lua/visual.lua
index f0d3cc6..e85bd53 100755
--- a/lua/visual.lua
+++ b/lua/visual.lua
@@ -70,9 +70,17 @@ core.register_entity("drawers:visual", {
-- add self to public drawer visuals
-- this is needed because there is no other way to get this class
- -- only the underlying ObjectRef
+ -- only the underlying LuaEntitySAO
-- PLEASE contact me, if this is wrong
- drawers.drawer_visuals[core.serialize(self.drawer_pos)] = self
+ local vId = self.visualId
+ if vId == "" then vId = 1 end
+ local posstr = core.serialize(self.drawer_pos)
+ if not drawers.drawer_visuals[posstr] then
+ drawers.drawer_visuals[posstr] = {[vId] = self}
+ else
+ drawers.drawer_visuals[posstr][vId] = self
+ end
+
local node = core.get_node(self.drawer_pos)