update to furnace
This commit is contained in:
parent
c7a7fd3771
commit
59ff7b80f6
@ -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
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user