forked from VoxeLibre/VoxeLibre
clear formspec on taking input item
This commit is contained in:
parent
45532ebe6d
commit
2af08c3188
|
@ -5,7 +5,7 @@
|
||||||
-- TO-DO:
|
-- TO-DO:
|
||||||
-- * Add GUI
|
-- * Add GUI
|
||||||
|
|
||||||
local S = minetest.get_translator(minetest.get_current_modname())
|
local S = minetest.get_translator("mcl_stonecutter")
|
||||||
|
|
||||||
local recipes = {
|
local recipes = {
|
||||||
{"mcl_core:cobble", "mcl_stairs:slab_cobble", "mcl_walls:cobble", "mcl_stairs:stair_cobble"},
|
{"mcl_core:cobble", "mcl_stairs:slab_cobble", "mcl_walls:cobble", "mcl_stairs:stair_cobble"},
|
||||||
|
@ -16,12 +16,10 @@ local recipes = {
|
||||||
|
|
||||||
local FMT = {
|
local FMT = {
|
||||||
item_image_button = "item_image_button[%f,%f;%f,%f;%s;%s;%s]",
|
item_image_button = "item_image_button[%f,%f;%f,%f;%s;%s;%s]",
|
||||||
item_image = "item_image[%f,%f;%f,%f;%s]",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local function show_stonecutter_formspec(items, input)
|
local function show_stonecutter_formspec(items, input)
|
||||||
local cut_items = {}
|
local cut_items = {}
|
||||||
|
|
||||||
local x_len = 0
|
local x_len = 0
|
||||||
local y_len = 0.5
|
local y_len = 0.5
|
||||||
|
|
||||||
|
@ -32,7 +30,7 @@ local function show_stonecutter_formspec(items, input)
|
||||||
y_len = y_len + 1
|
y_len = y_len + 1
|
||||||
x_len = 1
|
x_len = 1
|
||||||
end
|
end
|
||||||
local test = string.format(FMT.item_image_button,x_len+1,y_len,1,1, value, value, "")
|
local test = string.format(FMT.item_image_button,x_len+1,y_len,1,1, value, "item_button", value)
|
||||||
cut_items[index] = test
|
cut_items[index] = test
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -64,10 +62,14 @@ local function update_stonecutter_slots(meta)
|
||||||
local name = input:get_name()
|
local name = input:get_name()
|
||||||
|
|
||||||
local new_output
|
local new_output
|
||||||
for index, value in pairs(recipes) do
|
if not input:is_empty() then
|
||||||
if name == value[1] then
|
for index, value in pairs(recipes) do
|
||||||
meta:set_string("formspec", show_stonecutter_formspec(recipes[index]))
|
if name == value[1] then
|
||||||
|
meta:set_string("formspec", show_stonecutter_formspec(recipes[index]))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
meta:set_string("formspec", show_stonecutter_formspec(nil))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -150,7 +152,12 @@ minetest.register_node("mcl_stonecutter:stonecutter", {
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
update_stonecutter_slots(meta)
|
update_stonecutter_slots(meta)
|
||||||
end,
|
end,
|
||||||
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
if listname == "input" then
|
||||||
|
update_stonecutter_slots(meta)
|
||||||
|
end
|
||||||
|
end,
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
|
@ -159,7 +166,6 @@ minetest.register_node("mcl_stonecutter:stonecutter", {
|
||||||
local form = show_stonecutter_formspec()
|
local form = show_stonecutter_formspec()
|
||||||
meta:set_string("formspec", form)
|
meta:set_string("formspec", form)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, player, itemstack)
|
on_rightclick = function(pos, node, player, itemstack)
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
if not player:get_player_control().sneak then
|
if not player:get_player_control().sneak then
|
||||||
|
@ -169,6 +175,16 @@ minetest.register_node("mcl_stonecutter:stonecutter", {
|
||||||
--meta:set_string("formspec", show_stonecutter_formspec(items[1]))
|
--meta:set_string("formspec", show_stonecutter_formspec(items[1]))
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
on_receive_fields = function(pos, formname, fields, sender)
|
||||||
|
local sender_name = sender:get_player_name()
|
||||||
|
if minetest.is_protected(pos, sender_name) then
|
||||||
|
minetest.record_protection_violation(pos, sender_name)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if fields.item_button then
|
||||||
|
print(fields.item_button)
|
||||||
|
end
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
|
|
Loading…
Reference in New Issue