forked from mrkubax10/industrialtest
Don't destroy generator that has items inside
This commit is contained in:
parent
511c4948d6
commit
6c62b8d4a3
57
machines.lua
57
machines.lua
@ -32,6 +32,21 @@ local function generatorFormspec(fuelPercent)
|
|||||||
}
|
}
|
||||||
return table.concat(formspec,"")
|
return table.concat(formspec,"")
|
||||||
end
|
end
|
||||||
|
local function generatorMclAfterDigNode(pos,oldnode,oldmeta,digger)
|
||||||
|
-- Taken from https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_furnaces/init.lua#L538
|
||||||
|
local meta=minetest.get_meta(pos)
|
||||||
|
local meta2=meta
|
||||||
|
meta:from_table(oldmeta)
|
||||||
|
local inv=meta:get_inventory()
|
||||||
|
for _,listname in ipairs({"src", "dst", "fuel"}) do
|
||||||
|
local stack=inv:get_stack(listname,1)
|
||||||
|
if not stack:is_empty() then
|
||||||
|
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
||||||
|
minetest.add_item(p, stack)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
meta:from_table(meta2:to_table())
|
||||||
|
end
|
||||||
local definition={
|
local definition={
|
||||||
description=S("Generator"),
|
description=S("Generator"),
|
||||||
tiles={"industrialtest_iron_furnace.png"},
|
tiles={"industrialtest_iron_furnace.png"},
|
||||||
@ -51,18 +66,22 @@ local definition={
|
|||||||
local fuelTime=meta:get_int("fuelTime")
|
local fuelTime=meta:get_int("fuelTime")
|
||||||
local fuelList=inv:get_list("fuel")
|
local fuelList=inv:get_list("fuel")
|
||||||
local chargedList=inv:get_list("charged")
|
local chargedList=inv:get_list("charged")
|
||||||
if fuelTime==0 and not industrialtest.api.isFullyCharged(meta) then
|
if industrialtest.api.isFullyCharged(meta) then
|
||||||
local fuel,after=minetest.get_craft_result({
|
return false
|
||||||
method="fuel",
|
else
|
||||||
width=1,
|
if fuelTime==0 then
|
||||||
items=fuelList
|
local fuel,after=minetest.get_craft_result({
|
||||||
})
|
method="fuel",
|
||||||
if fuel.time>0 then
|
width=1,
|
||||||
inv:set_stack("fuel",1,after.items[1])
|
items=fuelList
|
||||||
fuelTime=fuel.time
|
})
|
||||||
meta:set_int("maxFuelTime",fuelTime)
|
if fuel.time>0 then
|
||||||
else
|
inv:set_stack("fuel",1,after.items[1])
|
||||||
return false
|
fuelTime=fuel.time
|
||||||
|
meta:set_int("maxFuelTime",fuelTime)
|
||||||
|
else
|
||||||
|
return false
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
fuelTime=fuelTime-elapsed
|
fuelTime=fuelTime-elapsed
|
||||||
@ -72,9 +91,10 @@ local definition={
|
|||||||
meta:set_int("fuelTime",fuelTime)
|
meta:set_int("fuelTime",fuelTime)
|
||||||
meta:set_string("formspec",generatorFormspec(fuelTime/meta:get_int("maxFuelTime")*100))
|
meta:set_string("formspec",generatorFormspec(fuelTime/meta:get_int("maxFuelTime")*100))
|
||||||
industrialtest.api.addPower(meta,100)
|
industrialtest.api.addPower(meta,100)
|
||||||
if fuelTime>0 then
|
if fuelTime>0 or fuelList[1]:get_count()>0 then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
return false
|
||||||
end,
|
end,
|
||||||
allow_metadata_inventory_put=function(pos,listname,index,stack,player)
|
allow_metadata_inventory_put=function(pos,listname,index,stack,player)
|
||||||
if listname=="charged" and not industrialtest.api.hasPowerStorage(stack:get_meta()) then
|
if listname=="charged" and not industrialtest.api.hasPowerStorage(stack:get_meta()) then
|
||||||
@ -90,7 +110,16 @@ local definition={
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
if industrialtest.mtgAvailable then
|
if industrialtest.mtgAvailable then
|
||||||
definition.groups={cracky=1}
|
definition.groups={cracky=2}
|
||||||
definition.sounds=default.node_sound_metal_defaults()
|
definition.sounds=default.node_sound_metal_defaults()
|
||||||
|
definition.can_dig=function(pos)
|
||||||
|
local meta=minetest.get_meta(pos)
|
||||||
|
local inv=meta:get_inventory()
|
||||||
|
return not (inv:get_list("charged")[1]:get_count()>0 or inv:get_list("fuel")[1]:get_count()>0)
|
||||||
|
end
|
||||||
|
elseif industrialtest.mclAvailable then
|
||||||
|
definition.after_dig_node=generatorMclAfterDigNode
|
||||||
|
definition._mcl_blast_resistance=3.5
|
||||||
|
definition._mcl_hardness=3.9
|
||||||
end
|
end
|
||||||
minetest.register_node("industrialtest:generator",definition)
|
minetest.register_node("industrialtest:generator",definition)
|
||||||
|
Loading…
Reference in New Issue
Block a user