update to furnace
This commit is contained in:
parent
c7a7fd3771
commit
59ff7b80f6
@ -15,9 +15,9 @@ local function is_smeltable(items)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function is_item_allowed(pos, target, _, stack)
|
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
|
return 0
|
||||||
else
|
else
|
||||||
return stack:get_count()
|
return stack:get_count()
|
||||||
@ -38,22 +38,6 @@ local function ongetitem(pos)
|
|||||||
timer:start(1.0)
|
timer:start(1.0)
|
||||||
end
|
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 function mytime(pos, elapsed)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local energy = meta:get_int("energy")
|
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
|
--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 ..
|
--meta:set_string("formspec", formspec ..
|
||||||
sparktech.makebar("energy.png", 0, 2.1, 9.75, 0.25,
|
--sparktech.makebar(
|
||||||
energy, minetest.get_item_group(minetest.get_node(pos).name, "sparktech_energy_max")
|
--"energy2.png",
|
||||||
, 2))
|
-- 0, 2.1, 9.75, 0.25,
|
||||||
|
--energy,
|
||||||
|
--minetest.get_item_group(minetest.get_node(pos).name, "sparktech_energy_max"), 0))
|
||||||
|
|
||||||
if (newcycle) then
|
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
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local function maytake(pos, listname, index, stack, player)
|
local function maytake(pos, listname, index, stack, player)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if listname == "product" then
|
if listname == "product" then
|
||||||
return tonumber(stack:get_count()) --sure, take the stuff that the furnace has cooked for you :D
|
return tonumber(stack:get_count()) --sure, take the stuff that the furnace has cooked for you :D
|
||||||
end
|
end
|
||||||
local table = restoreprogress(meta,2)
|
-- TODO: code to stop people from taking halfcooked items, they'd burn their fingers
|
||||||
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)
|
|
||||||
end
|
end
|
||||||
return tonumber(stack:get_count())
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
|
minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
|
||||||
description = "Electric furnace",
|
description = "Electric furnace",
|
||||||
|
|
||||||
tiles = {
|
tiles = {
|
||||||
"furnace2.png",
|
"furnace2.png",
|
||||||
"furnace2.png",
|
"furnace2.png",
|
||||||
@ -105,6 +83,7 @@ minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
|
|||||||
"furnace.png"
|
"furnace.png"
|
||||||
},
|
},
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
|
|
||||||
groups = {
|
groups = {
|
||||||
sparktech_techy = 1,
|
sparktech_techy = 1,
|
||||||
sparktech_energy_type = 4,
|
sparktech_energy_type = 4,
|
||||||
@ -116,15 +95,21 @@ minetest.register_node(minetest.get_current_modname() .. ":lv_furnace", {
|
|||||||
on_timer = mytime, -- add a mytimer function
|
on_timer = mytime, -- add a mytimer function
|
||||||
allow_metadata_inventory_take = maytake,
|
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)
|
on_construct = function(pos, placer)
|
||||||
local meta = minetest.get_meta(pos)
|
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()
|
local inventory = meta:get_inventory()
|
||||||
inventory:set_size('source',2)
|
inventory:set_size('source',2)
|
||||||
inventory:set_size('product',2)
|
inventory:set_size('product',2)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
allow_metadata_inventory_put = is_item_allowed,
|
allow_metadata_inventory_put = is_item_allowed,
|
||||||
allow_metadata_inventory_move = is_item_allowed_move,
|
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
|
on_metadata_inventory_put = ongetitem
|
||||||
})
|
})
|
Loading…
x
Reference in New Issue
Block a user