Skip to content

Commit

Permalink
chest_lid_close: don't replace a node if it's not the expected open c…
Browse files Browse the repository at this point in the history
…hest
  • Loading branch information
fluxionary authored Aug 11, 2023
1 parent 960aff2 commit 83c10f5
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions mods/default/chests.lua
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,23 @@ function default.chest.chest_lid_close(pn)

default.chest.open_chests[pn] = nil
for k, v in pairs(default.chest.open_chests) do
if v.pos.x == pos.x and v.pos.y == pos.y and v.pos.z == pos.z then
if vector.equals(v.pos, pos) then
-- another player is also looking at the chest
return true
end
end

local node = minetest.get_node(pos)
minetest.after(0.2, minetest.swap_node, pos, { name = swap,
param2 = node.param2 })
minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true)
minetest.after(0.2, function()
local current_node = minetest.get_node(pos)
if current_node.name ~= swap .. "_open" then
-- the chest has already been replaced, don't try to replace what's there.
return
end
minetest.swap_node(pos, {name = swap, param2 = node.param2})
minetest.sound_play(sound, {gain = 0.3, pos = pos,
max_hear_distance = 10}, true)
end)
end

default.chest.open_chests = {}
Expand Down

0 comments on commit 83c10f5

Please sign in to comment.