summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwebdesigner97 <Christian_D_97@gmx.de>2013-10-15 10:32:37 +0200
committerwebdesigner97 <Christian_D_97@gmx.de>2013-10-15 10:32:37 +0200
commit3646ecaa4b0062bc7a24fb9960e85dd719e69aaf (patch)
tree33f1a5fbc865a4558dd805b7d34c1947d0c611a2
parenta776532a30dd80560a26d77ef9ea53848ba76ba7 (diff)
downloadroads-3646ecaa4b0062bc7a24fb9960e85dd719e69aaf.tar
roads-3646ecaa4b0062bc7a24fb9960e85dd719e69aaf.tar.gz
roads-3646ecaa4b0062bc7a24fb9960e85dd719e69aaf.tar.bz2
roads-3646ecaa4b0062bc7a24fb9960e85dd719e69aaf.tar.xz
roads-3646ecaa4b0062bc7a24fb9960e85dd719e69aaf.zip
Display recipe and validate input
-rw-r--r--roadsigns/signs.lua33
-rw-r--r--roadsigns/workshop.lua45
2 files changed, 76 insertions, 2 deletions
diff --git a/roadsigns/signs.lua b/roadsigns/signs.lua
index 70959cd..0b01ff5 100644
--- a/roadsigns/signs.lua
+++ b/roadsigns/signs.lua
@@ -1,3 +1,30 @@
+minetest.register_node(":streets:sign_blank",{
+ description = "Emtpy sign",
+ tiles = {"streets_sign_back.png"},
+ inventory_image = "streets_sign_back.png",
+ wield_image = "streets_sign_back.png",
+ groups = {snappy = 1,attached_node = 1},
+ drawtype = "nodebox",
+ node_box = {
+ type = "wallmounted",
+ fixed = {
+ {-0.4,-0.5,-0.4,0.4,-0.4,0.4}
+ }
+ },
+ paramtype = "light",
+ paramtype2 = "wallmounted",
+ walkable = false,
+ sunlight_propagates = true,
+ selection_box = {
+ type = "wallmounted"
+ },
+ streets = {
+ signworkshop = {
+ recipe = {"default:steel_ingot","","",""},
+ time = 5
+ }
+ }
+})
minetest.register_node(":streets:sign_lava",{
description = "Warning sign (lava)",
tiles = {"streets_sign_lava.png"},
@@ -17,7 +44,13 @@ minetest.register_node(":streets:sign_lava",{
sunlight_propagates = true,
selection_box = {
type = "wallmounted"
+ },
+ streets = {
+ signworkshop = {
+ recipe = {"streets:sign_blank","bucket:bucket_lava","",""},
+ time = 7
}
+ }
})
minetest.register_node(":streets:sign_water",{
diff --git a/roadsigns/workshop.lua b/roadsigns/workshop.lua
index 939c570..283d2b4 100644
--- a/roadsigns/workshop.lua
+++ b/roadsigns/workshop.lua
@@ -28,6 +28,11 @@ minetest.register_node(":streets:signworkshop",{
inv:set_size("streets:signworkshop_input",4*1)
inv:set_size("streets:signworkshop_select",1*1)
inv:set_size("streets:signworkshop_output",1*1)
+ -- Fill
+ inv:add_item("streets:signworkshop_list","streets:sign_blank")
+ inv:add_item("streets:signworkshop_list","streets:sign_lava")
+ inv:add_item("streets:signworkshop_list","streets:sign_water")
+ inv:add_item("streets:signworkshop_list","streets:sign_construction")
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if listname ~= "streets:signworkshop_input" then
@@ -37,8 +42,22 @@ minetest.register_node(":streets:signworkshop",{
end
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ -- Move items inside input slots
if to_list == "streets:signworkshop_input" and from_list == "streets:signworkshop_input" then
return 1
+ -- List -> selection
+ elseif from_list == "streets:signworkshop_list" and to_list == "streets:signworkshop_select" then
+ local inv = minetest.get_meta(pos):get_inventory()
+ local selected = inv:get_stack("streets:signworkshop_list",from_index):to_table()
+ local need = minetest.registered_nodes[selected.name].streets.signworkshop.recipe
+ inv:set_list("streets:signworkshop_recipe",{need[1],need[2],need[3],need[4]})
+ return 1
+ -- selection -> list
+ elseif from_list == "streets:signworkshop_select" and to_list == "streets:signworkshop_list" then
+ local inv = minetest.get_meta(pos):get_inventory()
+ inv:set_list("streets:signworkshop_recipe",{"","","",""})
+ return 1
+ -- Every other case
else
return 0
end
@@ -53,8 +72,30 @@ minetest.register_node(":streets:signworkshop",{
on_receive_fields = function(pos, formname, fields, sender)
local inv = minetest.get_inventory({type = "node", pos = pos})
--
- if inv:is_emtpy("streets:signworkshop_input") ~= true then
-
+ if inv:is_empty("streets:signworkshop_input") ~= true and inv:is_empty("streets:signworkshop_select") ~= true then
+ local selection = inv:get_stack("streets:signworkshop_select",1):get_name()
+ local def = minetest.registered_nodes[selection].streets.signworkshop
+ local need = inv:get_list("streets:signworkshop_recipe")
+ local has = inv:get_list("streets:signworkshop_input")
+ need[1] = need[1]:to_table()
+ need[2] = need[2]:to_table()
+ need[3] = need[3]:to_table()
+ need[4] = need[4]:to_table()
+ has[1] = has[1]:to_table()
+ has[2] = has[2]:to_table()
+ has[3] = has[3]:to_table()
+ has[4] = has[4]:to_table()
+ if need[1] == nil then need[1] = { name = "" } end
+ if need[2] == nil then need[2] = { name = "" } end
+ if need[3] == nil then need[3] = { name = "" } end
+ if need[4] == nil then need[4] = { name = "" } end
+ if has[1] == nil then has[1] = { name = "" } end
+ if has[2] == nil then has[2] = { name = "" } end
+ if has[3] == nil then has[3] = { name = "" } end
+ if has[4] == nil then has[4] = { name = "" } end
+ if need[1].name == has[1].name and need[2].name == has[2].name and need[3].name == has[3].name and need[4].name == has[4].name then
+ minetest.chat_send_all("yay")
+ end
end
end
}) \ No newline at end of file