cement mixer, concrete tweaks
parent
9d2581c8ef
commit
fdcc77edf2
|
@ -51,16 +51,17 @@ bitumen.register_blueprint = function(def)
|
|||
groups = {flammable = 3},
|
||||
})
|
||||
|
||||
-- the actual constructor must be registered elsewhere
|
||||
minetest.register_craft({
|
||||
output = def.name..'_constructor',
|
||||
recipe = {
|
||||
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||
{'default:steel_ingot', name, 'default:steel_ingot'},
|
||||
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||
}
|
||||
})
|
||||
|
||||
if not def.no_constructor_craft then
|
||||
-- the actual constructor must be registered elsewhere
|
||||
minetest.register_craft({
|
||||
output = def.name..'_constructor',
|
||||
recipe = {
|
||||
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||
{'default:steel_ingot', name, 'default:steel_ingot'},
|
||||
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
bitumen.registered_blueprints[name] = def
|
||||
end
|
||||
|
|
96
concrete.lua
96
concrete.lua
|
@ -49,19 +49,19 @@ minetest.register_node("bitumen:curing_concrete", {
|
|||
|
||||
local level = minetest.get_node_level(pos)
|
||||
if bnode and bnode.name == "bitumen:concrete_slab" then
|
||||
if level > 48 then
|
||||
if level > 42 then
|
||||
minetest.set_node(bpos, {name="bitumen:concrete"})
|
||||
minetest.set_node(pos, {name="bitumen:concrete_slab"})
|
||||
elseif level > 16 then
|
||||
elseif level > 10 then
|
||||
minetest.set_node(bpos, {name="bitumen:concrete"})
|
||||
minetest.set_node(pos, {name="air"})
|
||||
else
|
||||
minetest.set_node(pos, {name="air"})
|
||||
end
|
||||
else
|
||||
if level > 48 then
|
||||
if level > 42 then
|
||||
minetest.set_node(pos, {name="bitumen:concrete"})
|
||||
elseif level > 16 then
|
||||
elseif level > 10 then
|
||||
minetest.set_node(pos, {name="bitumen:concrete_slab"})
|
||||
else
|
||||
minetest.set_node(pos, {name="air"})
|
||||
|
@ -80,7 +80,7 @@ minetest.register_abm({
|
|||
action = function(pos)
|
||||
local t = minetest.get_node_timer(pos)
|
||||
if not t:is_started() then
|
||||
t:start(10*60) -- concrete takes twenty to cure at best
|
||||
t:start(15*60) -- concrete takes 30 minutes to cure at best
|
||||
-- minetest.get_node_timer(pos):start(5) -- fast cure for debugging
|
||||
end
|
||||
end
|
||||
|
@ -106,6 +106,18 @@ bitumen.register_fluid("bitumen", "wet_concrete", {
|
|||
})
|
||||
|
||||
|
||||
local cement_mixer_formspec =
|
||||
"size[10,9;]" ..
|
||||
default.gui_bg ..
|
||||
default.gui_bg_img ..
|
||||
default.gui_slots ..
|
||||
"list[context;main;0,0.3;5,4;]" ..
|
||||
"list[current_player;main;0,4.85;8,1;]" ..
|
||||
"list[current_player;main;0,6.08;8,3;8]" ..
|
||||
"listring[context;main]" ..
|
||||
"listring[current_player;main]" ..
|
||||
default.get_hotbar_bg(0, 4.85)
|
||||
|
||||
|
||||
minetest.register_node("bitumen:cement_mixer", {
|
||||
paramtype = "light",
|
||||
|
@ -138,22 +150,88 @@ minetest.register_node("bitumen:cement_mixer", {
|
|||
groups = {choppy=1, petroleum_fixture=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 20)
|
||||
|
||||
meta:set_string("formspec", cement_mixer_formspec);
|
||||
end,
|
||||
|
||||
on_timer = function(pos, elapsed)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local cache = meta:get_int("cache") or 0
|
||||
|
||||
if cache < 32 then
|
||||
local inv = meta:get_inventory();
|
||||
|
||||
if not inv:contains_item("main", "bitumen:lime 1") then
|
||||
print("not enough lime")
|
||||
return false
|
||||
end
|
||||
|
||||
if not inv:contains_item("main", "default:gravel 3") then
|
||||
print("not enough gravel")
|
||||
return false
|
||||
end
|
||||
|
||||
if not inv:contains_item("main", "bucket:bucket_water 2") then
|
||||
print("not enough water")
|
||||
return false
|
||||
end
|
||||
|
||||
if not (
|
||||
inv:contains_item("main", "default:sand 3")
|
||||
) then
|
||||
print("not enough sand")
|
||||
return false
|
||||
end
|
||||
|
||||
inv:remove_item("main", "default:sand 1")
|
||||
inv:remove_item("main", "default:sand 1")
|
||||
inv:remove_item("main", "default:sand 1")
|
||||
inv:remove_item("main", "bitumen:lime 1")
|
||||
inv:remove_item("main", "default:gravel 1")
|
||||
inv:remove_item("main", "default:gravel 1")
|
||||
inv:remove_item("main", "default:gravel 1")
|
||||
|
||||
cache = cache + (9 * 64)
|
||||
end
|
||||
|
||||
|
||||
local pushed = bitumen.pipes.push_fluid({x=pos.x, y=pos.y-1, z=pos.z}, "bitumen:wet_concrete", 32, 1)
|
||||
|
||||
meta:set_int("cache", cache - pushed)
|
||||
|
||||
return true
|
||||
end,
|
||||
|
||||
|
||||
can_dig = function(pos, player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory();
|
||||
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
|
||||
|
||||
-- spit out some concrete
|
||||
on_punch = function(pos)
|
||||
print("concrete mixer punched")
|
||||
local take = bitumen.pipes.push_fluid({x=pos.x, y=pos.y-1, z=pos.z}, "bitumen:wet_concrete", 20, 5)
|
||||
print("take ".. take)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
if timer:is_started() then
|
||||
timer:stop()
|
||||
else
|
||||
timer:start(3.0)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
bitumen.register_blueprint({name="bitumen:cement_mixer"})
|
||||
bitumen.register_blueprint({
|
||||
name="bitumen:cement_mixer",
|
||||
no_constructor_craft = true,
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -129,6 +129,15 @@ minetest.register_craft({
|
|||
|
||||
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'bitumen:cement_mixer',
|
||||
recipe = {
|
||||
{'bitumen:galv_steel_sheet', '', 'bitumen:galv_steel_sheet',},
|
||||
{'bitumen:galv_steel_sheet', 'bitumen:cement_mixer_blueprint', 'bitumen:galv_steel_sheet',},
|
||||
{'', 'bitumen:spout', ''},
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
-- concrete's recipe is:
|
||||
-- ---------------------
|
||||
|
|
2
init.lua
2
init.lua
|
@ -85,7 +85,7 @@ dofile(modpath.."/magic_nodes.lua")
|
|||
dofile(modpath.."/blueprints.lua")
|
||||
dofile(modpath.."/pipes.lua")
|
||||
dofile(modpath.."/burner.lua")
|
||||
--dofile(modpath.."/pipeline.lua")
|
||||
-- dofile(modpath.."/pipeline.lua")
|
||||
|
||||
-- next core nodes
|
||||
dofile(modpath.."/fluids.lua")
|
||||
|
|
File diff suppressed because it is too large
Load Diff
17
pipeline.lua
17
pipeline.lua
|
@ -5,22 +5,25 @@
|
|||
|
||||
local networks = {}
|
||||
local net_members = {}
|
||||
local storage = {}
|
||||
local netname = 1
|
||||
|
||||
local mod_storage = minetest.get_mod_storage()
|
||||
--local mod_storage = minetest.get_mod_storage()
|
||||
local mod_storage = bitumen.mod_storage -- minetest.get_mod_storage()
|
||||
|
||||
|
||||
|
||||
networks = minetest.deserialize(mod_storage:get_string("pl_networks")) or {}
|
||||
net_members = minetest.deserialize(mod_storage:get_string("pl_net_members")) or {}
|
||||
storage = minetest.deserialize(mod_storage:get_string("pl_storage")) or {}
|
||||
netname = mod_storage:get_int("pl_netname") or 1
|
||||
|
||||
|
||||
local function save_data()
|
||||
--print("saving")
|
||||
|
||||
mod_storage:set_string("pl_networks", minetest.serialize(networks))
|
||||
mod_storage:set_string("pl_net_members", minetest.serialize(net_members))
|
||||
mod_storage:set_string("pl_storage", minetest.serialize(storage))
|
||||
mod_storage:set_int("pl_netname", netname)
|
||||
end
|
||||
|
||||
|
@ -42,6 +45,12 @@ local function new_network(pos)
|
|||
outputs = {},
|
||||
buffer = 0,
|
||||
in_pressure = -32000,
|
||||
|
||||
storage = {
|
||||
--[[
|
||||
[entry_hash] = < storage_center_hash >
|
||||
]]
|
||||
}
|
||||
}
|
||||
|
||||
net_members[hash] = hash
|
||||
|
@ -502,7 +511,7 @@ minetest.register_node("bitumen:storage_tank_constructor", {
|
|||
)
|
||||
|
||||
if ret == false then
|
||||
minetest.chat_send_player(player:get_player_name(), "Foundation is incomplete: 15x3x15")
|
||||
minetest.chat_send_player(player:get_player_name(), "Foundation is incomplete: 30x3x30")
|
||||
return
|
||||
else
|
||||
minetest.chat_send_player(player:get_player_name(), "Foundation is complete.")
|
||||
|
@ -519,7 +528,7 @@ minetest.register_node("bitumen:storage_tank_constructor", {
|
|||
)
|
||||
|
||||
if ret == false then
|
||||
minetest.chat_send_player(player:get_player_name(), "Area is not clear: 16x12x16")
|
||||
minetest.chat_send_player(player:get_player_name(), "Area is not clear: 32x12x32")
|
||||
return
|
||||
else
|
||||
minetest.chat_send_player(player:get_player_name(), "Area is clear.")
|
||||
|
|
|
@ -5,8 +5,9 @@ local networks = {}
|
|||
local net_members = {}
|
||||
local netname = 1
|
||||
|
||||
local mod_storage = minetest.get_mod_storage()
|
||||
bitumen.mod_storage = minetest.get_mod_storage()
|
||||
|
||||
local mod_storage = bitumen.mod_storage
|
||||
|
||||
|
||||
networks = minetest.deserialize(mod_storage:get_string("networks")) or {}
|
||||
|
@ -604,7 +605,7 @@ minetest.register_abm({
|
|||
pos.y = pos.y - 1
|
||||
|
||||
local bnode = minetest.get_node(pos)
|
||||
local avail = math.min(10, pnet.buffer) -- pnet.buffer / #pnet.outputs
|
||||
local avail = math.min(16, pnet.buffer) -- pnet.buffer / #pnet.outputs
|
||||
if bnode.name == pnet.fluid then
|
||||
local blevel = minetest.get_node_level(pos)
|
||||
local cap = 64 - blevel
|
||||
|
|
Loading…
Reference in New Issue