GENERAL BUGFIX: Put items into the cabinet do not disappear anymore from there if a player opened/closed some departments

master
Andrey2470T 2019-08-25 21:06:26 +03:00
parent dbd7322f7b
commit 72f0124ff0
16 changed files with 79 additions and 357 deletions

View File

@ -83,7 +83,7 @@ for bedside_t, bedside_ts in pairs(cabs_table["simple_wooden_bedside_table"]) do
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local img_button1 = "image_button[0.5, 0;1, 2;" .. bedside_ts[1].img_button ..";" .. bedside_ts[1].button .. ";]" local img_button1 = "image_button[0.5, 0;1, 2;" .. bedside_ts[1].img_button ..";" .. bedside_ts[1].button .. ";]"
local img_button2 = "image_button[0.5, 2.5;1, 2;" .. bedside_ts[2].img_button .. ";" .. bedside_ts[2].button .. ";]" local img_button2 = "image_button[0.5, 2.5;1, 2;" .. bedside_ts[2].img_button .. ";" .. bedside_ts[2].button .. ";]"
local img_button3 = "image_button[0.5, 5;1, 2;" .. bedside_ts[2].img_button .. ";" .. bedside_ts[3].button .. ";]" local img_button3 = "image_button[0.5, 5;1, 2;" .. bedside_ts[3].img_button .. ";" .. bedside_ts[3].button .. ";]"
local y = 0 local y = 0
local form = "size[9,11.5]" .. img_button1 .. img_button2 .. img_button3 local form = "size[9,11.5]" .. img_button1 .. img_button2 .. img_button3
@ -113,37 +113,10 @@ for bedside_t, bedside_ts in pairs(cabs_table["simple_wooden_bedside_table"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -158,9 +131,9 @@ for bedside_t, bedside_ts in pairs(cabs_table["simple_wooden_bedside_table"]) do
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Drawer", "open_Drawer", "open_Drawer"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Drawer", "open_Drawer", "open_Drawer"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Drawer", "close_Drawer", "close_Drawer"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Drawer", "close_Drawer", "close_Drawer"})
end end

View File

@ -18,70 +18,70 @@ cabinets.put_data_into_cabinet = function (pos, cabinet_name, cabinet_num, data,
return meta return meta
end end
-- DEPRECATED! An unified function is necessary as open and close ones implement the same.
--[[Arguments: --[[Arguments:
*opener - player data;
*pos - position of clicked node; *pos - position of clicked node;
*node_replace - itemstring, node that needed to be replaced to former. *node_replace - itemstring, node that needed to be replaced to former.
*cabinet_name - "generalized" name of all its components, that is kitchen_wooden_cabinet_1, kitchen_wooden_cabinet_2, kitchen_wooden_cabinet_3 are kitchen_wooden_cabinet indeed, they are just modified models; *cabinet_name - "generalized" name of all its components, that is kitchen_wooden_cabinet_1, kitchen_wooden_cabinet_2, kitchen_wooden_cabinet_3 are kitchen_wooden_cabinet indeed, they are just modified models;
*clicked_button_name - name of button that was clicked;
*formspec - table with next keys: name, data (formspec string itself); *formspec - table with next keys: name, data (formspec string itself);
*sound_play - table that can keep ONLY two sound names that needed to be played during opening and closing. Keys are: first is "open", second is "close".]] *sound_play - table that can keep ONLY two sound names that needed to be played during opening and closing. Keys are: first is "open", second is "close".]]
cabinets.open = function (opener, pos, node_replace, cabinet_name, clicked_button_name, formspec, sounds_play) cabinets.open = function (pos, node_replace, clicked_button_name, formspec, sounds_play)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local name = node.name local name = node.name
local name2 = string.sub(name, 14) local general_name = string.sub(name, 14, -3)
local actual_name = string.sub(name, 14)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
--local changed_depart_data --local changed_depart_data
-- The lower loop is running departments of the node as kitchen_wooden_cabinet_1... then it compares clicked_button_name is equal to the button name in the department. -- The lower loop is running departments of the node as kitchen_wooden_cabinet_1... then it compares clicked_button_name is equal to the button name in the department.
for depart_num, depart_data in pairs(cabs_table[cabinet_name][name2]) do for depart_num, depart_data in pairs(cabs_table[general_name][actual_name]) do
if type(depart_data) == "table" and depart_data.mode == "closed" and depart_data.button == clicked_button_name then if type(depart_data) == "table" and depart_data.mode == "opened" then
minetest.remove_node(pos) local list = inv:get_list(depart_data.listname)
minetest.set_node(pos, {name=node_replace, param1=node.param1, param2=node.param2}) local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
if sounds_play and type(sounds_play) == "table" then cabs_table[general_name].inv_list[depart_num][str_pos] = list
if sounds_play[depart_num] then end
minetest.sound_play(sounds_play[depart_num], { if type(depart_data) == "table" and depart_data.button == clicked_button_name then
pos = pos, minetest.debug("TRUE")
max_hear_distance = 15 minetest.sound_play(sounds_play[depart_num], {
}) pos = pos,
end max_hear_distance = 15
end })
end
end
end end
minetest.remove_node(pos)
minetest.set_node(pos, {name=node_replace, param1=node.param1, param2=node.param2})
end end
-- DEPRECATED! An unified function is necessary as open and close ones implement the same.
cabinets.close = function (closer, pos, node_replace, cabinet_name, clicked_button_name, formspec, sounds_play) cabinets.close = function (pos, node_replace, clicked_button_name, formspec, sounds_play)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local name = node.name local name = node.name
local name2 = string.sub(name, 14) local general_name = string.sub(name, 14, -3)
local actual_name = string.sub(name, 14)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
-- The lower loop is running departments of the node as kitchen_wooden_cabinet_1... then it compares clicked_button_name is equal to the button name in the department. -- The lower loop is running departments of the node as kitchen_wooden_cabinet_1... then it compares clicked_button_name is equal to the button name in the department.
for depart_num, depart_data in pairs(cabs_table[cabinet_name][name2]) do for depart_num, depart_data in pairs(cabs_table[general_name][actual_name]) do
if type(depart_data) == "table" and depart_data.mode == "opened" and depart_data.button == clicked_button_name then if type(depart_data) == "table" and depart_data.mode == "opened" then
local list = inv:get_list(depart_data.listname) local list = inv:get_list(depart_data.listname)
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z) local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
cabs_table[cabinet_name].inv_list[depart_num][str_pos] = list cabs_table[general_name].inv_list[depart_num][str_pos] = list
if depart_data.button == clicked_button_name then
minetest.remove_node(pos) minetest.sound_play(sounds_play[depart_num], {
minetest.set_node(pos, {name=node_replace, param1=node.param1, param2=node.param2}) pos = pos,
if sounds_play and type(sounds_play) == "table" then max_hear_distance = 15
if sounds_play[depart_num] then })
minetest.sound_play(sounds_play[depart_num], { end
pos = pos, end
max_hear_distance = 15
}) end
end minetest.remove_node(pos)
end minetest.set_node(pos, {name=node_replace, param1=node.param1, param2=node.param2})
end
end
end end
@ -148,7 +148,8 @@ cabinets.define_mode = function (fields, nodename)
end end
end end
-- Create a table with external table for each cabinet sort (depends to boxes). Inside each second field a list of boxes and their datas. --[[Create a table with external table for each cabinet sort (depends to boxes). Inside each second field a list of boxes and their datas.
Besides, it *must* contain "inv_list" is a list with items inside each the cabinet department]]
cabs_table["kitchen_wooden_cabinet"] = { cabs_table["kitchen_wooden_cabinet"] = {
["kitchen_wooden_cabinet_1"] = { ["kitchen_wooden_cabinet_1"] = {
@ -174,7 +175,7 @@ cabs_table["kitchen_wooden_cabinet"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}, {}} inv_list = {{}, {}}
} }
cabs_table["kitchen_wooden_cabinet_with_door"] = { cabs_table["kitchen_wooden_cabinet_with_door"] = {
@ -187,7 +188,7 @@ cabs_table["kitchen_wooden_cabinet_with_door"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}} inv_list = {{}}
} }
cabs_table["kitchen_wooden_cabinet_with_door_and_drawer"] = { cabs_table["kitchen_wooden_cabinet_with_door_and_drawer"] = {
@ -214,7 +215,7 @@ cabs_table["kitchen_wooden_cabinet_with_door_and_drawer"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}, {}} inv_list = {{}, {}}
} }
cabs_table["kitchen_wooden_cabinet_with_two_doors"] = { cabs_table["kitchen_wooden_cabinet_with_two_doors"] = {
@ -227,7 +228,7 @@ cabs_table["kitchen_wooden_cabinet_with_two_doors"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}} inv_list = {{}}
} }
cabs_table["kitchen_wooden_cabinet_with_two_doors_and_drawer"] = { cabs_table["kitchen_wooden_cabinet_with_two_doors_and_drawer"] = {
@ -254,7 +255,7 @@ cabs_table["kitchen_wooden_cabinet_with_two_doors_and_drawer"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}, {}} inv_list = {{}, {}}
} }
cabs_table["kitchen_wooden_half_cabinet"] = { cabs_table["kitchen_wooden_half_cabinet"] = {
@ -267,7 +268,7 @@ cabs_table["kitchen_wooden_half_cabinet"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}} inv_list = {{}}
} }
cabs_table["kitchen_wooden_threedrawer_cabinet"] = { cabs_table["kitchen_wooden_threedrawer_cabinet"] = {
@ -326,7 +327,7 @@ cabs_table["kitchen_wooden_threedrawer_cabinet"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}, {}, {}} inv_list = {{}, {}, {}}
} }
cabs_table["kitchen_wooden_cabinet_with_sink"] = { cabs_table["kitchen_wooden_cabinet_with_sink"] = {
@ -339,20 +340,20 @@ cabs_table["kitchen_wooden_cabinet_with_sink"] = {
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}} inv_list = {{}}
} }
cabs_table["fridge"] = { cabs_table["fridge"] = {
["fridge_closed"] = { ["fridge_1"] = {
{mode="closed", button = "fridge_closed", img_button = "open_button.png"} {mode="closed", button = "fridge_closed", img_button = "open_button.png"}
}, },
["fridge_opened"] = { ["fridge_2"] = {
{mode="opened", button = "fridge_opened", img_button = "close_button.png", listname = "fridge_opened", inv_size=6*6}, {mode="opened", button = "fridge_opened", img_button = "close_button.png", listname = "fridge_opened", inv_size=6*6},
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
inv_list = {{}} inv_list = {{}}
} }
-- The loop is running the table above and register each cabinet sort. -- The loop is running the table above and register each cabinet sort.
@ -413,37 +414,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -458,9 +432,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet"]) do
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Drawer", "open_Drawer"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Drawer", "open_Drawer"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Drawer", "close_Drawer"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Drawer", "close_Drawer"})
end end
@ -538,37 +512,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_door"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -583,9 +530,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_door"]) do
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Cabinet"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Cabinet"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Cabinet"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Cabinet"})
end end
@ -664,40 +611,11 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_door_and_dra
inv:set_list(cab_boxes[num2].listname, cabs_table["kitchen_wooden_cabinet_with_door_and_drawer"].inv_list[num2][str_pos]) inv:set_list(cab_boxes[num2].listname, cabs_table["kitchen_wooden_cabinet_with_door_and_drawer"].inv_list[num2][str_pos])
inv:set_size(cab_boxes[num2].listname, cab_boxes[num2].inv_size) inv:set_size(cab_boxes[num2].listname, cab_boxes[num2].inv_size)
end end
end
end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -712,9 +630,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_door_and_dra
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Drawer", "open_Cabinet"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Drawer", "open_Cabinet"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Drawer", "close_Cabinet"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Drawer", "close_Cabinet"})
end end
@ -791,37 +709,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_two_doors"])
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -836,9 +727,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_two_doors"])
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Cabinet"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Cabinet"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Cabinet"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Cabinet"})
end end
@ -920,37 +811,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_two_doors_an
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -965,9 +829,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_two_doors_an
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Drawer", "open_Cabinet"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Drawer", "open_Cabinet"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Drawer", "close_Cabinet"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Drawer", "close_Cabinet"})
end end
@ -1044,37 +908,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_half_cabinet"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -1089,9 +926,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_half_cabinet"]) do
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Drawer"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Drawer"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Drawer"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Drawer"})
end end
@ -1116,6 +953,7 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_half_cabinet"]) do
end end
end end
--cab_boxes is a cabinet sort with certain opened/closed drawers/shelves.
for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_threedrawer_cabinet"]) do for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_threedrawer_cabinet"]) do
if cab ~= "inv_list" then if cab ~= "inv_list" then
minetest.register_node("luxury_decor:"..cab, { minetest.register_node("luxury_decor:"..cab, {
@ -1142,7 +980,7 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_threedrawer_cabinet"]) do
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local img_button1 = "image_button[0.5, 0;1, 2;" .. cab_boxes[1].img_button ..";" .. cab_boxes[1].button .. ";]" local img_button1 = "image_button[0.5, 0;1, 2;" .. cab_boxes[1].img_button ..";" .. cab_boxes[1].button .. ";]"
local img_button2 = "image_button[0.5, 2.5;1, 2;" .. cab_boxes[2].img_button .. ";" .. cab_boxes[2].button .. ";]" local img_button2 = "image_button[0.5, 2.5;1, 2;" .. cab_boxes[2].img_button .. ";" .. cab_boxes[2].button .. ";]"
local img_button3 = "image_button[0.5, 5;1, 2;" .. cab_boxes[2].img_button .. ";" .. cab_boxes[3].button .. ";]" local img_button3 = "image_button[0.5, 5;1, 2;" .. cab_boxes[3].img_button .. ";" .. cab_boxes[3].button .. ";]"
local y = 0 local y = 0
local form = "size[9,11.5]" .. img_button1 .. img_button2 .. img_button3 local form = "size[9,11.5]" .. img_button1 .. img_button2 .. img_button3
@ -1162,7 +1000,7 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_threedrawer_cabinet"]) do
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
meta:set_string("formspec", form) meta:set_string("formspec", form)
local inv = meta:get_inventory() local inv = minetest.get_inventory({type="node", pos={x=pos.x, y=pos.y, z=pos.z}})
for num2, drawer2 in pairs(cab_boxes) do for num2, drawer2 in pairs(cab_boxes) do
if type(drawer2) == "table" and drawer2.inv_size ~= nil and drawer2.listname ~= nil then if type(drawer2) == "table" and drawer2.inv_size ~= nil and drawer2.listname ~= nil then
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z) local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
@ -1172,37 +1010,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_threedrawer_cabinet"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -1217,9 +1028,9 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_threedrawer_cabinet"]) do
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Drawer", "open_Drawer", "open_Drawer"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Drawer", "open_Drawer", "open_Drawer"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Drawer", "close_Drawer", "close_Drawer"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Drawer", "close_Drawer", "close_Drawer"})
end end
@ -1309,37 +1120,10 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_sink"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name = string.sub(name, 14, -3)
if fields["kwc_trash"] then if fields["kwc_trash"] then
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
@ -1348,7 +1132,6 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_sink"]) do
for num, stack in pairs(list) do for num, stack in pairs(list) do
stacks_list[num] = stack:get_name() stacks_list[num] = stack:get_name()
end end
minetest.debug(dump(stacks_list))
for num, item in pairs(list) do for num, item in pairs(list) do
if inv:get_stack("kwc_with_sink2", num) ~= "" or inv:get_stack("kwc_with_sink2", num) ~= nil then if inv:get_stack("kwc_with_sink2", num) ~= "" or inv:get_stack("kwc_with_sink2", num) ~= nil then
inv:set_stack("kwc_with_sink2", num, "") inv:set_stack("kwc_with_sink2", num, "")
@ -1360,8 +1143,6 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_sink"]) do
for num, stack in pairs(list2) do for num, stack in pairs(list2) do
stacks_list2[num] = stack:get_name() stacks_list2[num] = stack:get_name()
end end
minetest.debug(dump(stacks_list2))
--minetest.debug(dump(cabs_table[generalized_name].inv_list[1][str_pos]))
return true return true
end end
@ -1377,11 +1158,11 @@ for cab, cab_boxes in pairs(cabs_table["kitchen_wooden_cabinet_with_sink"]) do
end end
end end
end end
minetest.debug(button_name)
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"open_Cabinet"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"open_Cabinet"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"close_Cabinet"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"close_Cabinet"})
end end
@ -1552,7 +1333,7 @@ for cab, cab_boxes in pairs(cabs_table["fridge"]) do
tiles = {"fridge.png"}, tiles = {"fridge.png"},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
drop = "luxury_decor:fridge_closed", drop = "luxury_decor:fridge_1",
groups = {snappy=3, not_in_creative_inventory = cab_boxes["not_in_creative_inventory"]}, groups = {snappy=3, not_in_creative_inventory = cab_boxes["not_in_creative_inventory"]},
drawtype = "mesh", drawtype = "mesh",
collision_box = { collision_box = {
@ -1600,42 +1381,10 @@ for cab, cab_boxes in pairs(cabs_table["fridge"]) do
end end
--[[local cabs_items_list = {}
local str_pos = tostring(pos.x) .. ", " .. tostring(pos.y) .. ", " .. tostring(pos.z)
local cab_num =
for num, list in pairs(kit_wood_cabs.inv_list[cab_num]) do
cabs_items_list[num] = list[str_pos]
for num2, list2 in pairs(list) do
for num3, itemstack in pairs(list2) do
if itemstack ~= nil then
minetest.debug(dump(cabs_items_list[num]))
cabs_items_list[num][num2][num3] = itemstack:get_name()
end
end
end
end
local inv_lists = {}
for num, list in pairs(inv:get_lists()) do
inv_lists[num] = list
for num2, itemstack in pairs(list) do
if itemstack ~= nil then
inv_lists[num][num2] = itemstack:get_name()
end
end
end]]
--minetest.debug(dump(cabs_items_list))
--minetest.debug(dump(inv_lists))
inv:set_size("main", 8*4) inv:set_size("main", 8*4)
end, end,
on_receive_fields = function (pos, formname, fields, sender) on_receive_fields = function (pos, formname, fields, sender)
local name = minetest.get_node(pos).name local name = minetest.get_node(pos).name
local generalized_name
if string.find(name, "fridge") then
generalized_name = string.sub(name, 14, -8)
else
generalized_name = string.sub(name, 14, -3)
end
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local defined_mode = cabinets.define_mode(fields, name) local defined_mode = cabinets.define_mode(fields, name)
local button_name local button_name
@ -1650,9 +1399,9 @@ for cab, cab_boxes in pairs(cabs_table["fridge"]) do
end end
if defined_mode == "closed" then if defined_mode == "closed" then
cabinets.open(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"doors_steel_door_open"}) cabinets.open(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"doors_steel_door_open"})
elseif defined_mode == "opened" then elseif defined_mode == "opened" then
cabinets.close(sender, pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), generalized_name, button_name, meta:get_string("formspec"), {"doors_steel_door_close"}) cabinets.close(pos, "luxury_decor:" .. cabinets.define_needed_cabinet(fields, name), button_name, meta:get_string("formspec"), {"doors_steel_door_close"})
end end

View File

@ -338,7 +338,7 @@ minetest.register_ore({
minetest.register_craft({ minetest.register_craft({
type = "cooking", type = "cooking",
output = "luxury_decor:paraffin_cake 2", output = "luxury_decor:paraffin_cake 2",
recipe = "bucket:bucket_oil", recipe = "luxury_decor:bucket_oil",
cooktime = 15--[[, cooktime = 15--[[,
replacements = {"bucket:bucket_empty"}]] replacements = {"bucket:bucket_empty"}]]
}) })