update to furnace

This commit is contained in:
kamirama 2018-01-03 23:20:30 +01:00
parent c7a7fd3771
commit 59ff7b80f6

View File

@ -15,9 +15,9 @@ local function is_smeltable(items)
end
local function is_item_allowed(pos, target, _, stack)
if target == "product" then return 0 end
if target == "product" then return 0 end --so no items get moved into the souce inventory by the user
if stack == nil or not is_smeltable({stack}) then
if stack == nil or not is_smeltable({stack}) then --invalid or unsmeltable items dont get in
return 0
else
return stack:get_count()
@ -38,22 +38,6 @@ local function ongetitem(pos)
timer:start(1.0)
end
local function storeprogress(progress) --store the progress of burning in the node meta, burning items aren't take from source, they simply cant be removed any longer when starting to burn
for x=1,table_getn(progress),1
do
meta.get_string("cookprogess_" + i.progress[x])
end
end
local function restoreprogress(meta,count)
local progress = {}
for x=1,count,1
do
progress[x] = meta:get_string("cookprogess_" .. x)
end
return progress
end
local function mytime(pos, elapsed)
local meta = minetest.get_meta(pos)
local energy = meta:get_int("energy")
@ -66,36 +50,30 @@ local function mytime(pos, elapsed)
--TODO: start cook logic (if there is any energy available start to cook (progress[inventoryslot]++ and commit to meta after all were processed
meta:set_string("formspec", formspec ..
sparktech.makebar("energy.png", 0, 2.1, 9.75, 0.25,
energy, minetest.get_item_group(minetest.get_node(pos).name, "sparktech_energy_max")
, 2))
--meta:set_string("formspec", formspec ..
--sparktech.makebar(
--"energy2.png",
-- 0, 2.1, 9.75, 0.25,
--energy,
--minetest.get_item_group(minetest.get_node(pos).name, "sparktech_energy_max"), 0))
if (newcycle) then
minetest.get_node_timer(pos):start(1.0)
minetest.get_node_timer(pos):start(1.0) -- it was determined that a new cycle is required, this is the case if energy and material to cook is available
end
return
end
local function maytake(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if listname == "product" then
return tonumber(stack:get_count()) --sure, take the stuff that the furnace has cooked for you :D
end
local table = restoreprogress(meta,2)
if table[pos] == nil then return stack:get_count() end
if listname == "source" then
if table[pos] > 0 then
return tonumber(stack:get_count() -1)
-- TODO: code to stop people from taking halfcooked items, they'd burn their fingers
end
return tonumber(stack:get_count())
end
end
minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
description = "Electric furnace",
tiles = {
"furnace2.png",
"furnace2.png",
@ -105,6 +83,7 @@ minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
"furnace.png"
},
paramtype2 = "facedir",
groups = {
sparktech_techy = 1,
sparktech_energy_type = 4,
@ -116,15 +95,21 @@ minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
on_timer = mytime, -- add a mytimer function
allow_metadata_inventory_take = maytake,
--on_righclick = function(pos, node, player, itemstack, pointed_thing)
--TODO show formspec here, and store that a formspec is open in meta, the mytimer function schould update the formspec if it is open, recievefields schould mark it as closed
--end,
on_construct = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("formspec",formspec)
meta:set_string("formspec",formspec) --gonna replace this with crafting the formspec on rightclick instead
local inventory = meta:get_inventory()
inventory:set_size('source',2)
inventory:set_size('product',2)
end,
allow_metadata_inventory_put = is_item_allowed,
allow_metadata_inventory_move = is_item_allowed_move,
on_metadata_inventory_move = ongetitem, --TODO: test these
--on_metadata_inventory_move = ongetitem, --doesnt seem necesarry to me, if the item moves in the inventory schould not change the cooking process
on_metadata_inventory_put = ongetitem
})