cement mixer, concrete tweaks
parent
9d2581c8ef
commit
fdcc77edf2
|
@ -51,6 +51,7 @@ bitumen.register_blueprint = function(def)
|
||||||
groups = {flammable = 3},
|
groups = {flammable = 3},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if not def.no_constructor_craft then
|
||||||
-- the actual constructor must be registered elsewhere
|
-- the actual constructor must be registered elsewhere
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = def.name..'_constructor',
|
output = def.name..'_constructor',
|
||||||
|
@ -60,7 +61,7 @@ bitumen.register_blueprint = function(def)
|
||||||
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
end
|
||||||
|
|
||||||
bitumen.registered_blueprints[name] = def
|
bitumen.registered_blueprints[name] = def
|
||||||
end
|
end
|
||||||
|
|
96
concrete.lua
96
concrete.lua
|
@ -49,19 +49,19 @@ minetest.register_node("bitumen:curing_concrete", {
|
||||||
|
|
||||||
local level = minetest.get_node_level(pos)
|
local level = minetest.get_node_level(pos)
|
||||||
if bnode and bnode.name == "bitumen:concrete_slab" then
|
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(bpos, {name="bitumen:concrete"})
|
||||||
minetest.set_node(pos, {name="bitumen:concrete_slab"})
|
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(bpos, {name="bitumen:concrete"})
|
||||||
minetest.set_node(pos, {name="air"})
|
minetest.set_node(pos, {name="air"})
|
||||||
else
|
else
|
||||||
minetest.set_node(pos, {name="air"})
|
minetest.set_node(pos, {name="air"})
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if level > 48 then
|
if level > 42 then
|
||||||
minetest.set_node(pos, {name="bitumen:concrete"})
|
minetest.set_node(pos, {name="bitumen:concrete"})
|
||||||
elseif level > 16 then
|
elseif level > 10 then
|
||||||
minetest.set_node(pos, {name="bitumen:concrete_slab"})
|
minetest.set_node(pos, {name="bitumen:concrete_slab"})
|
||||||
else
|
else
|
||||||
minetest.set_node(pos, {name="air"})
|
minetest.set_node(pos, {name="air"})
|
||||||
|
@ -80,7 +80,7 @@ minetest.register_abm({
|
||||||
action = function(pos)
|
action = function(pos)
|
||||||
local t = minetest.get_node_timer(pos)
|
local t = minetest.get_node_timer(pos)
|
||||||
if not t:is_started() then
|
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
|
-- minetest.get_node_timer(pos):start(5) -- fast cure for debugging
|
||||||
end
|
end
|
||||||
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", {
|
minetest.register_node("bitumen:cement_mixer", {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
@ -138,22 +150,88 @@ minetest.register_node("bitumen:cement_mixer", {
|
||||||
groups = {choppy=1, petroleum_fixture=1},
|
groups = {choppy=1, petroleum_fixture=1},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
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)
|
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,
|
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
|
-- spit out some concrete
|
||||||
on_punch = function(pos)
|
on_punch = function(pos)
|
||||||
print("concrete mixer punched")
|
local timer = minetest.get_node_timer(pos)
|
||||||
local take = bitumen.pipes.push_fluid({x=pos.x, y=pos.y-1, z=pos.z}, "bitumen:wet_concrete", 20, 5)
|
if timer:is_started() then
|
||||||
print("take ".. take)
|
timer:stop()
|
||||||
|
else
|
||||||
|
timer:start(3.0)
|
||||||
|
end
|
||||||
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:
|
-- concrete's recipe is:
|
||||||
-- ---------------------
|
-- ---------------------
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
17
pipeline.lua
17
pipeline.lua
|
@ -5,22 +5,25 @@
|
||||||
|
|
||||||
local networks = {}
|
local networks = {}
|
||||||
local net_members = {}
|
local net_members = {}
|
||||||
|
local storage = {}
|
||||||
local netname = 1
|
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 {}
|
networks = minetest.deserialize(mod_storage:get_string("pl_networks")) or {}
|
||||||
net_members = minetest.deserialize(mod_storage:get_string("pl_net_members")) 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
|
netname = mod_storage:get_int("pl_netname") or 1
|
||||||
|
|
||||||
|
|
||||||
local function save_data()
|
local function save_data()
|
||||||
--print("saving")
|
--print("saving")
|
||||||
|
|
||||||
mod_storage:set_string("pl_networks", minetest.serialize(networks))
|
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_net_members", minetest.serialize(net_members))
|
||||||
|
mod_storage:set_string("pl_storage", minetest.serialize(storage))
|
||||||
mod_storage:set_int("pl_netname", netname)
|
mod_storage:set_int("pl_netname", netname)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -42,6 +45,12 @@ local function new_network(pos)
|
||||||
outputs = {},
|
outputs = {},
|
||||||
buffer = 0,
|
buffer = 0,
|
||||||
in_pressure = -32000,
|
in_pressure = -32000,
|
||||||
|
|
||||||
|
storage = {
|
||||||
|
--[[
|
||||||
|
[entry_hash] = < storage_center_hash >
|
||||||
|
]]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
net_members[hash] = hash
|
net_members[hash] = hash
|
||||||
|
@ -502,7 +511,7 @@ minetest.register_node("bitumen:storage_tank_constructor", {
|
||||||
)
|
)
|
||||||
|
|
||||||
if ret == false then
|
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
|
return
|
||||||
else
|
else
|
||||||
minetest.chat_send_player(player:get_player_name(), "Foundation is complete.")
|
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
|
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
|
return
|
||||||
else
|
else
|
||||||
minetest.chat_send_player(player:get_player_name(), "Area is clear.")
|
minetest.chat_send_player(player:get_player_name(), "Area is clear.")
|
||||||
|
|
|
@ -5,8 +5,9 @@ local networks = {}
|
||||||
local net_members = {}
|
local net_members = {}
|
||||||
local netname = 1
|
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 {}
|
networks = minetest.deserialize(mod_storage:get_string("networks")) or {}
|
||||||
|
@ -604,7 +605,7 @@ minetest.register_abm({
|
||||||
pos.y = pos.y - 1
|
pos.y = pos.y - 1
|
||||||
|
|
||||||
local bnode = minetest.get_node(pos)
|
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
|
if bnode.name == pnet.fluid then
|
||||||
local blevel = minetest.get_node_level(pos)
|
local blevel = minetest.get_node_level(pos)
|
||||||
local cap = 64 - blevel
|
local cap = 64 - blevel
|
||||||
|
|
Loading…
Reference in New Issue