Skip to content

Commit

Permalink
Do not show item overlay if slot is occupied by item (bookshelf, vess…
Browse files Browse the repository at this point in the history
…els shelf)
  • Loading branch information
sfan5 committed Nov 14, 2016
1 parent f8bc1e1 commit 7fbf25d
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 20 deletions.
33 changes: 23 additions & 10 deletions mods/default/nodes.lua
Expand Up @@ -1815,16 +1815,23 @@ local bookshelf_formspec =
"listring[current_player;main]" ..
default.get_hotbar_bg(0,2.85)
-- Inventory slots overlay
local bx, by = 0, 0.3
for i = 1, 16 do
if i == 9 then
bx = 0
by = by + 1
local function get_bookshelf_formspec(inv)
local formspec = bookshelf_formspec
local invlist = inv and inv:get_list("books")
-- Inventory slots overlay
local bx, by = 0, 0.3
for i = 1, 16 do
if i == 9 then
bx = 0
by = by + 1
end
if not invlist or invlist[i]:is_empty() then
formspec = formspec ..
"image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]"
end
bx = bx + 1
end
bookshelf_formspec = bookshelf_formspec ..
"image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]"
bx = bx + 1
return formspec
end
minetest.register_node("default:bookshelf", {
Expand All @@ -1838,7 +1845,7 @@ minetest.register_node("default:bookshelf", {
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", bookshelf_formspec)
meta:set_string("formspec", get_bookshelf_formspec(nil))
local inv = meta:get_inventory()
inv:set_size("books", 8 * 2)
end,
Expand All @@ -1855,14 +1862,20 @@ minetest.register_node("default:bookshelf", {
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name() ..
" moves stuff in bookshelf at " .. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory()))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" moves stuff to bookshelf at " .. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory()))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" takes stuff from bookshelf at " .. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("formspec", get_bookshelf_formspec(meta:get_inventory()))
end,
on_blast = function(pos)
local drops = {}
Expand Down
33 changes: 23 additions & 10 deletions mods/vessels/init.lua
Expand Up @@ -13,16 +13,23 @@ local vessels_shelf_formspec =
"listring[current_player;main]" ..
default.get_hotbar_bg(0, 2.85)

-- Inventory slots overlay
local vx, vy = 0, 0.3
for i = 1, 16 do
if i == 9 then
vx = 0
vy = vy + 1
local function get_vessels_shelf_formspec(inv)
local formspec = vessels_shelf_formspec
local invlist = inv and inv:get_list("vessels")
-- Inventory slots overlay
local vx, vy = 0, 0.3
for i = 1, 16 do
if i == 9 then
vx = 0
vy = vy + 1
end
if not invlist or invlist[i]:is_empty() then
formspec = formspec ..
"image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]"
end
vx = vx + 1
end
vessels_shelf_formspec = vessels_shelf_formspec ..
"image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]"
vx = vx + 1
return formspec
end

minetest.register_node("vessels:shelf", {
Expand All @@ -36,7 +43,7 @@ minetest.register_node("vessels:shelf", {

on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", vessels_shelf_formspec)
meta:set_string("formspec", get_vessels_shelf_formspec(nil))
local inv = meta:get_inventory()
inv:set_size("vessels", 8 * 2)
end,
Expand All @@ -53,14 +60,20 @@ minetest.register_node("vessels:shelf", {
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name() ..
" moves stuff in vessels shelf at ".. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory()))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" moves stuff to vessels shelf at ".. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory()))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" takes stuff from vessels shelf at ".. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory()))
end,
on_blast = function(pos)
local drops = {}
Expand Down

0 comments on commit 7fbf25d

Please sign in to comment.