Formspecs update to show state of press.

master
NathanSalapat 2016-11-20 15:06:17 -06:00
parent 0e2a4dd16b
commit d2666e9cd7
1 changed files with 28 additions and 10 deletions

View File

@ -27,6 +27,27 @@ minetest.register_craft({
} }
}) })
local press_idle_formspec =
'size[8,7]'..
'label[1.5,0;Organic juice is just a squish away.]' ..
'label[4.3,.75;Put fruit here ->]'..
'label[3.5,1.75;Put container here ->]'..
'button[1,1;2,1;press;Start Juicing]'..
'list[current_name;src;6.5,.5;1,1;]'..
'list[current_name;dst;6.5,1.5;1,1;]'..
'list[current_player;main;0,3;8,4;]'
local press_running_formspec =
'size[8,7]'..
'label[1.5,0;Organic juice coming right up.]' ..
'label[4.3,.75;Put fruit here ->]'..
'label[3.5,1.75;Put container here ->]'..
'button[1,1;2,1;press;Start Juicing]'..
'list[current_name;src;6.5,.5;1,1;]'..
'list[current_name;dst;6.5,1.5;1,1;]'..
'list[current_player;main;0,3;8,4;]'
minetest.register_node('drinks:juice_press', { minetest.register_node('drinks:juice_press', {
description = 'Juice Press', description = 'Juice Press',
drawtype = 'mesh', drawtype = 'mesh',
@ -50,15 +71,7 @@ minetest.register_node('drinks:juice_press', {
inv:set_size('src', 1) inv:set_size('src', 1)
inv:set_size('dst', 1) inv:set_size('dst', 1)
meta:set_string('infotext', 'Empty Juice Press') meta:set_string('infotext', 'Empty Juice Press')
meta:set_string('formspec', meta:set_string('formspec', press_idle_formspec)
'size[8,7]'..
'label[1.5,0;Organic juice is just a squish away.]' ..
'label[4.3,.75;Put fruit here ->]'..
'label[3.5,1.75;Put container here ->]'..
'button[1,1;2,1;press;Start Juicing]'..
'list[current_name;src;6.5,.5;1,1;]'..
'list[current_name;dst;6.5,1.5;1,1;]'..
'list[current_player;main;0,3;8,4;]')
end, end,
on_receive_fields = function(pos, formname, fields, sender) on_receive_fields = function(pos, formname, fields, sender)
if fields ['press'] then if fields ['press'] then
@ -82,6 +95,7 @@ minetest.register_node('drinks:juice_press', {
meta:set_string('container', 'jcu_') meta:set_string('container', 'jcu_')
meta:set_string('fruitnumber', 4) meta:set_string('fruitnumber', 4)
meta:set_string('infotext', 'Juicing...') meta:set_string('infotext', 'Juicing...')
meta:set_string('formspec', press_running_formspec)
timer:start(4) timer:start(4)
else else
meta:set_string('infotext', 'You need more fruit.') meta:set_string('infotext', 'You need more fruit.')
@ -92,6 +106,7 @@ minetest.register_node('drinks:juice_press', {
meta:set_string('container', 'jbo_') meta:set_string('container', 'jbo_')
meta:set_string('fruitnumber', 8) meta:set_string('fruitnumber', 8)
meta:set_string('infotext', 'Juicing...') meta:set_string('infotext', 'Juicing...')
meta:set_string('formspec', press_running_formspec)
timer:start(8) timer:start(8)
else else
meta:set_string('infotext', 'You need more fruit.') meta:set_string('infotext', 'You need more fruit.')
@ -102,6 +117,7 @@ minetest.register_node('drinks:juice_press', {
meta:set_string('container', 'jbu_') meta:set_string('container', 'jbu_')
meta:set_string('fruitnumber', 16) meta:set_string('fruitnumber', 16)
meta:set_string('infotext', 'Juicing...') meta:set_string('infotext', 'Juicing...')
meta:set_string('formspec', press_running_formspec)
timer:start(16) timer:start(16)
else else
meta:set_string('infotext', 'You need more fruit.') meta:set_string('infotext', 'You need more fruit.')
@ -139,7 +155,7 @@ minetest.register_node('drinks:juice_press', {
local outstack = inv:get_stack("dst", 1) local outstack = inv:get_stack("dst", 1)
local fruit = meta:get_string('fruit') local fruit = meta:get_string('fruit')
local fruitnumber = tonumber(meta:get_string('fruitnumber')) local fruitnumber = tonumber(meta:get_string('fruitnumber'))
if container == 'tube' then --Still needs to take fruit from juice press. if container == 'tube' then
local timer = minetest.get_node_timer(pos) local timer = minetest.get_node_timer(pos)
local under_node = {x=pos.x, y=pos.y-1, z=pos.z} local under_node = {x=pos.x, y=pos.y-1, z=pos.z}
local under_node_name = minetest.get_node_or_nil(under_node) local under_node_name = minetest.get_node_or_nil(under_node)
@ -164,6 +180,7 @@ minetest.register_node('drinks:juice_press', {
end end
else else
meta:set_string('infotext', 'Collect your juice.') meta:set_string('infotext', 'Collect your juice.')
meta:set_string('formspec', press_idle_formspec)
instack:take_item(tonumber(fruitnumber)) instack:take_item(tonumber(fruitnumber))
inv:set_stack('src', 1, instack) inv:set_stack('src', 1, instack)
inv:set_stack('dst', 1 ,'drinks:'..container..fruit) inv:set_stack('dst', 1 ,'drinks:'..container..fruit)
@ -175,6 +192,7 @@ minetest.register_node('drinks:juice_press', {
local inv = meta:get_inventory() local inv = meta:get_inventory()
timer:stop() timer:stop()
meta:set_string('infotext', 'Ready for more juicing.') meta:set_string('infotext', 'Ready for more juicing.')
meta:set_string('formspec', press_idle_formspec)
end, end,
on_metadata_inventory_put = function(pos, listname, index, stack, player) on_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.env:get_meta(pos) local meta = minetest.env:get_meta(pos)