Compare commits
5 Commits
92892b273b
...
32d204111c
Author | SHA1 | Date |
---|---|---|
Izzy | 32d204111c | |
Izzy | 6678ba4e8f | |
Izzy | deef1014c0 | |
Izzy | a88e546312 | |
Izzy | 75947e833f |
|
@ -217,6 +217,10 @@ minetest.register_abm({
|
|||
local npos = {x=pos.x, y=pos.y + 1, z=pos.z}
|
||||
local pnet = bitumen.pipes.get_net(npos)
|
||||
|
||||
if not pnet then
|
||||
return
|
||||
end
|
||||
|
||||
local bpos = {x=pos.x, y=pos.y - 1, z=pos.z}
|
||||
local bmeta = minetest.env:get_meta(bpos)
|
||||
|
||||
|
@ -235,10 +239,10 @@ minetest.register_abm({
|
|||
end
|
||||
|
||||
local cap = math.max(max_fill - fill, 0)
|
||||
print("cap: "..cap)
|
||||
-- print("cap: "..cap)
|
||||
local to_take = math.min(10, math.min(cap, pnet.buffer))
|
||||
if to_take == 0 then
|
||||
print("barrel full")
|
||||
-- print("barrel full")
|
||||
return
|
||||
end
|
||||
|
||||
|
|
|
@ -147,7 +147,7 @@ minetest.register_node("bitumen:cement_mixer", {
|
|||
}
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy=1, petroleum_fixture=1},
|
||||
groups = {cracky=1, petroleum_fixture=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
|
||||
on_construct = function(pos)
|
||||
|
|
|
@ -15,5 +15,11 @@ minetest.register_craftitem("bitumen:galv_steel_sheet", {
|
|||
})
|
||||
|
||||
|
||||
minetest.register_craftitem("bitumen:gas_engine", {
|
||||
description = "Gasoline Engine",
|
||||
inventory_image = "bitumen_gasoline_engine.png",
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
26
crafts.lua
26
crafts.lua
|
@ -32,6 +32,21 @@ minetest.register_craft({
|
|||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bitumen:pump_gas 1",
|
||||
type = "shapeless",
|
||||
recipe = {"bitumen:pump", "bitumen:gas_engine"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bitumen:gas_engine 1",
|
||||
recipe = {
|
||||
{"", "", ""},
|
||||
{"default:steel_ingot", "", "default:steel_ingot"},
|
||||
{"", "default:steelblock", ""},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
|
||||
-- drilling
|
||||
|
@ -306,7 +321,7 @@ minetest.register_craft({
|
|||
})
|
||||
|
||||
|
||||
--
|
||||
-- misc machines
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bitumen:kerosene_light",
|
||||
|
@ -316,3 +331,12 @@ minetest.register_craft({
|
|||
{"", "bitumen:drum_extractor", ""},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bitumen:rock_crusher",
|
||||
recipe = {
|
||||
{"", "bitumen:galv_steel_sheet", ""},
|
||||
{"bitumen:galv_steel_sheet", "bitumen:rock_crusher_blueprint", "bitumen:galv_steel_sheet"},
|
||||
{"", "bitumen:galv_steel_sheet", ""},
|
||||
}
|
||||
})
|
||||
|
|
|
@ -32,6 +32,7 @@ local function register_fluid(modname, name, info)
|
|||
description = info.desc,
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "leveled",
|
||||
tiles = {
|
||||
{
|
||||
name = "default_river_water_source_animated.png"..info.colorize,
|
||||
|
@ -85,6 +86,7 @@ local function register_fluid(modname, name, info)
|
|||
description = info.desc,
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "leveled",
|
||||
tiles = {
|
||||
{
|
||||
name = "default_river_water_source_animated.png"..info.colorize,
|
||||
|
|
3
init.lua
3
init.lua
|
@ -104,6 +104,7 @@ dofile(modpath.."/cylinder_tank.lua")
|
|||
dofile(modpath.."/sphere_tank.lua")
|
||||
dofile(modpath.."/refinery.lua")
|
||||
dofile(modpath.."/lights.lua")
|
||||
dofile(modpath.."/rock_crusher.lua")
|
||||
|
||||
|
||||
|
||||
|
@ -181,7 +182,7 @@ minetest.register_abm({
|
|||
|
||||
if ym.name == "air" then
|
||||
local nb = {}
|
||||
print("air below")
|
||||
-- print("air below")
|
||||
|
||||
for _,p in ipairs(npos) do
|
||||
local n = minetest.get_node(p)
|
||||
|
|
14
ore_gen.lua
14
ore_gen.lua
|
@ -85,23 +85,25 @@ minetest.register_ore({
|
|||
minetest.register_ore({
|
||||
ore_type = "blob",
|
||||
ore = "bitumen:chalk",
|
||||
wherein = {"default:stone"},
|
||||
clust_scarcity = 32 * 32 * 32,
|
||||
clust_size = 6,
|
||||
wherein = {"default:stone", "default:sand"},
|
||||
clust_scarcity = 48 * 48 * 48,
|
||||
clust_size = 14,
|
||||
y_min = 2,
|
||||
y_max = 30,
|
||||
noise_threshold = 0.0,
|
||||
noise_params = {
|
||||
offset = 0.5,
|
||||
scale = 0.2,
|
||||
spread = {x = 5, y = 5, z = 5},
|
||||
spread = {x = 10, y = 5, z = 7},
|
||||
seed = -343,
|
||||
octaves = 1,
|
||||
persist = 0.0
|
||||
persist = 0.1
|
||||
},
|
||||
biomes = {"savanna", "savanna_shore", "savanna_ocean",
|
||||
"rainforest", "rainforest_swamp", "rainforest_ocean", "underground",
|
||||
"floatland_coniferous_forest", "floatland_coniferous_forest_ocean"}
|
||||
"floatland_coniferous_forest", "floatland_coniferous_forest_ocean"
|
||||
-- ,"grassland", "desert", "sandstone_desert"
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -528,8 +528,9 @@ minetest.register_abm({
|
|||
local take = math.max(0, math.min(ulevel, cap - pnet.buffer))
|
||||
pnet.buffer = pnet.buffer + take
|
||||
--print("intake took "..take.. " water")
|
||||
if ulevel - rate > 0 then
|
||||
minetest.set_node_level(pos, ulevel - take)
|
||||
local nl = math.floor(ulevel - take + 0.5)
|
||||
if nl > 0 then
|
||||
minetest.set_node_level(pos, nl)
|
||||
else
|
||||
minetest.set_node(pos, {name = "air"})
|
||||
end
|
||||
|
@ -613,7 +614,7 @@ minetest.register_abm({
|
|||
--print("cap: ".. cap .." avail: ".. avail .. " out: "..out)
|
||||
pnet.buffer = pnet.buffer - out
|
||||
minetest.set_node_level(pos, blevel + out)
|
||||
elseif bnode.name == "air" then
|
||||
elseif bnode.name == "air" or bnode.name == "bitumen:vapor_1" or bnode.name == "bitumen:vapor_2" then
|
||||
local out = math.min(64, math.max(0, avail))
|
||||
pnet.buffer = pnet.buffer - out
|
||||
minetest.set_node(pos, {name = pnet.fluid})
|
||||
|
|
206
pump.lua
206
pump.lua
|
@ -38,7 +38,11 @@ end
|
|||
minetest.register_node("bitumen:pump", {
|
||||
description = "Pump",
|
||||
drawtype = "normal",
|
||||
tiles = {"default_steel_block.png"},
|
||||
tiles = {
|
||||
"default_steel_block.png^bitumen_arrow.png^[transformR90", "default_steel_block.png^bitumen_arrow.png^[transformR270",
|
||||
"default_steel_block.png^bitumen_arrow.png", "default_steel_block.png^bitumen_arrow.png^[transformR180",
|
||||
"default_copper_block.png", "default_tin_block.png",
|
||||
},
|
||||
is_ground_content = false,
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, petroleum_fixture=1, oddly_breakable_by_hand = 3},
|
||||
|
@ -85,7 +89,11 @@ minetest.register_node("bitumen:pump", {
|
|||
minetest.register_node("bitumen:pump_on", {
|
||||
description = "Pump (Active)",
|
||||
drawtype = "normal",
|
||||
tiles = {"default_tin_block.png"},
|
||||
tiles = {
|
||||
"default_steel_block.png^bitumen_arrow_yellow.png^[transformR90", "default_steel_block.png^bitumen_arrow_yellow.png^[transformR270",
|
||||
"default_steel_block.png^bitumen_arrow_yellow.png", "default_steel_block.png^bitumen_arrow_yellow.png^[transformR180",
|
||||
"default_copper_block.png", "default_tin_block.png",
|
||||
},
|
||||
is_ground_content = false,
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, petroleum_fixture=1, oddly_breakable_by_hand = 3, --[[not_in_creaetive_inventory=1]]},
|
||||
|
@ -120,11 +128,6 @@ minetest.register_node("bitumen:pump_on", {
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"bitumen:pump_on"},
|
||||
interval = 1,
|
||||
|
@ -165,10 +168,10 @@ minetest.register_abm({
|
|||
|
||||
local taken, fluid = bitumen.pipes.take_fluid(frontpos, to_take)
|
||||
local pushed = bitumen.pipes.push_fluid(backpos, fluid, taken, lift)
|
||||
-- print("bitumen pumped " ..taken .. " > "..pushed)
|
||||
-- print("bitumen pumped " ..taken .. " > "..pushed)
|
||||
|
||||
if pushed < taken then
|
||||
print("bitumen pump leaked ".. (taken - pushed))
|
||||
print("bitumen pump leaked ".. (taken - pushed) .. " at " ..pos.x..","..pos.y..","..pos.z)
|
||||
end
|
||||
|
||||
--print("")
|
||||
|
@ -177,3 +180,188 @@ minetest.register_abm({
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- gas-powered pump
|
||||
|
||||
minetest.register_node("bitumen:pump_gas", {
|
||||
description = "Gas-powered Pump",
|
||||
drawtype = "normal",
|
||||
tiles = {
|
||||
"default_steel_block.png^default_obsidian_glass.png^bitumen_arrow.png^[transformR90", "default_steel_block.png^default_obsidian_glass.png^bitumen_arrow.png^[transformR270",
|
||||
"default_steel_block.png^default_obsidian_glass.png^bitumen_arrow.png", "default_steel_block.png^default_obsidian_glass.png^bitumen_arrow.png^[transformR180",
|
||||
"default_copper_block.png^default_obsidian_glass.png", "default_tin_block.png^default_obsidian_glass.png",
|
||||
},
|
||||
is_ground_content = false,
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, petroleum_fixture=1, oddly_breakable_by_hand = 3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_place = minetest.rotate_node,
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", pump_formspec)
|
||||
|
||||
--bitumen.pipes.on_construct(pos)
|
||||
end,
|
||||
|
||||
--[[ not working, apparently due to an "undocumented feature" in the engine ;)
|
||||
on_receive_fields = function(pos, form, fields, player)
|
||||
local meta = minetest:get_meta(pos)
|
||||
local mf = meta:get_string("formspec")
|
||||
print(dump(mf).."\n")
|
||||
|
||||
if fields.start then
|
||||
print("start")
|
||||
swap_node(pos, "bitumen:pump_on")
|
||||
|
||||
-- refetch the meta after the node swap just to be sure
|
||||
local meta = minetest:get_meta(pos)
|
||||
meta:set_string("formspec", "")
|
||||
meta:set_string("formspec", pump_formspec_on)
|
||||
local mf = meta:get_string("formspec")
|
||||
print(dump(mf))
|
||||
|
||||
minetest.show_formspec(player:get_player_name(), "", pump_formspec_on)
|
||||
end
|
||||
end,
|
||||
]]
|
||||
|
||||
on_punch = function(pos)
|
||||
swap_node(pos, "bitumen:pump_gas_on")
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
minetest.register_node("bitumen:pump_gas_on", {
|
||||
description = "Gas-powered Pump (Active)",
|
||||
drawtype = "normal",
|
||||
tiles = {
|
||||
"default_steel_block.png^default_obsidian_glass.png^bitumen_arrow_yellow.png^[transformR90", "default_steel_block.png^default_obsidian_glass.png^bitumen_arrow_yellow.png^[transformR270",
|
||||
"default_steel_block.png^default_obsidian_glass.png^bitumen_arrow_yellow.png", "default_steel_block.png^default_obsidian_glass.png^bitumen_arrow_yellow.png^[transformR180",
|
||||
"default_copper_block.png^default_obsidian_glass.png", "default_tin_block.png^default_obsidian_glass.png",
|
||||
},
|
||||
is_ground_content = false,
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky = 1, petroleum_fixture=1, oddly_breakable_by_hand = 3, --[[not_in_creaetive_inventory=1]]},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
on_place = minetest.rotate_node,
|
||||
drop = "bitumen:pump_gas",
|
||||
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", pump_formspec_on)
|
||||
|
||||
--bitumen.pipes.on_construct(pos)
|
||||
end,
|
||||
|
||||
--[[ not working, apparently due to an "undocumented feature" in the engine ;)
|
||||
on_receive_fields = function(pos, form, fields, player)
|
||||
if fields.stop then
|
||||
print("stop")
|
||||
swap_node(pos, {name="bitumen:pump"})
|
||||
|
||||
local meta = minetest:get_meta(pos)
|
||||
meta:set_string("formspec", pump_formspec)
|
||||
minetest.show_formspec(player:get_player_name(), "", pump_formspec)
|
||||
end
|
||||
end,
|
||||
]]
|
||||
|
||||
on_punch = function(pos)
|
||||
swap_node(pos, "bitumen:pump_gas")
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"bitumen:pump_gas_on"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local fuel = meta:get_int("fuel")
|
||||
-- print("pump fuel "..fuel)
|
||||
if fuel <= 0 then
|
||||
local below = {x=pos.x, y=pos.y-1, z=pos.z}
|
||||
local bnode = minetest.get_node(below)
|
||||
if bnode.name == "bitumen:oil_drum" then
|
||||
local bmeta = minetest.get_meta(below)
|
||||
local fluid = bmeta:get_string("fluid")
|
||||
if fluid == "bitumen:gasoline" then
|
||||
local fill = bmeta:get_int("fill")
|
||||
print("pump fill "..fill)
|
||||
if fill >= 1 then
|
||||
fill = fill - 1
|
||||
bmeta:set_int("fill", fill)
|
||||
|
||||
local max_fill = bmeta:get_int("maxfill")
|
||||
bmeta:set_string("infotext", fluid .." (".. math.floor(((fill*100)/max_fill)+0.5) .."%)")
|
||||
|
||||
fuel = 60
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if fuel <= 0 then
|
||||
-- minetest.set_node(pos, {name="bitumen:pump_gas"})
|
||||
print("pump out of gas " .. fuel)
|
||||
swap_node(pos, "bitumen:pump_gas")
|
||||
return
|
||||
else
|
||||
|
||||
fuel = fuel - 1
|
||||
meta:set_int("fuel", fuel)
|
||||
end
|
||||
|
||||
|
||||
local back_dir = minetest.facedir_to_dir(node.param2)
|
||||
local backpos = vector.add(pos, back_dir)
|
||||
local backnet = bitumen.pipes.get_net(backpos)
|
||||
if backnet == nil then
|
||||
print("bpump no backnet at "..minetest.pos_to_string(backpos))
|
||||
return
|
||||
end
|
||||
|
||||
local front_dir = vector.multiply(back_dir, -1)
|
||||
local frontpos = vector.add(pos, front_dir)
|
||||
local frontnet = bitumen.pipes.get_net(frontpos)
|
||||
if frontnet == nil then
|
||||
print("bpump no frontnet at "..minetest.pos_to_string(frontpos))
|
||||
return
|
||||
end
|
||||
|
||||
if backnet.fluid ~= frontnet.fluid and backnet.fluid ~= "air" then
|
||||
print("bpump: bad_fluid")
|
||||
return -- incompatible fluids
|
||||
end
|
||||
|
||||
local lift = 50
|
||||
--print("fpos ".. minetest.pos_to_string(frontpos) .. " | bpos "..minetest.pos_to_string(backpos))
|
||||
--print("fp ".. frontnet.in_pressure .. " | bp "..backnet.in_pressure)
|
||||
-- HACK: hardcoded buffer amount
|
||||
local to_take = 64 - backnet.buffer
|
||||
if to_take <= 0 then
|
||||
-- print("pump: output pipe full")
|
||||
return
|
||||
end
|
||||
|
||||
local taken, fluid = bitumen.pipes.take_fluid(frontpos, to_take)
|
||||
local pushed = bitumen.pipes.push_fluid(backpos, fluid, taken, lift)
|
||||
-- print("bitumen pumped " ..taken .. " > "..pushed)
|
||||
|
||||
if pushed < taken then
|
||||
print("bitumen pump leaked ".. (taken - pushed) .. " at " ..pos.x..","..pos.y..","..pos.z)
|
||||
end
|
||||
|
||||
--print("")
|
||||
end
|
||||
})
|
||||
|
||||
|
|
|
@ -166,7 +166,7 @@ bitumen.register_burner({"bitumen:distillation_column_boiler_on"}, {
|
|||
finish_cook = function(pos)
|
||||
--print("y1 ".. pos.y)
|
||||
local input = bitumen.pipes.take_fluid(pos, 64)
|
||||
---print("crude taken: ".. input)
|
||||
print(pos.x .. " crude taken: ".. input)
|
||||
if input <= 0 then
|
||||
return
|
||||
end
|
||||
|
|
108
rock_crusher.lua
108
rock_crusher.lua
|
@ -68,12 +68,12 @@ local rock_crusher_formspec =
|
|||
|
||||
local function take_gas(itemstack, amount)
|
||||
|
||||
if st:get_name() ~= "bitumen:oil_drum_filled" end
|
||||
if itemstack:get_name() ~= "bitumen:oil_drum_filled" then
|
||||
return false
|
||||
end
|
||||
|
||||
local smeta = st:get_meta()
|
||||
if smeta:get_float("fluid") ~= "bitumen:gasoline" then
|
||||
local smeta = itemstack:get_meta()
|
||||
if smeta:get_string("fluid") ~= "bitumen:gasoline" then
|
||||
return false
|
||||
end
|
||||
|
||||
|
@ -88,6 +88,62 @@ local function take_gas(itemstack, amount)
|
|||
end
|
||||
|
||||
|
||||
|
||||
|
||||
function crushtimer(pos, elapsed)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local fuel = meta:get_float("fuel") or 0.0
|
||||
|
||||
if fuel <= 0 then
|
||||
-- try to get some fuel
|
||||
local inv = meta:get_inventory()
|
||||
|
||||
local st = inv:get_stack("main", 1)
|
||||
|
||||
if take_gas(st, 1) then
|
||||
inv:set_stack("main", 1, st);
|
||||
fuel = fuel + 1
|
||||
else
|
||||
-- out of fuel, turn off
|
||||
return false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
fuel = fuel - .1
|
||||
meta:set_float("fuel", fuel)
|
||||
|
||||
-- try to grind some rocks
|
||||
pos.y = pos.y + 1
|
||||
-- local tnode = minetest.get_node(pos)
|
||||
|
||||
local tmeta = minetest.get_meta(pos)
|
||||
local tinv = tmeta:get_inventory()
|
||||
local cob = tinv:remove_item("main", "default:cobble 1")
|
||||
if cob:get_count() <= 0 then
|
||||
cob = tinv:remove_item("main", "default:desert_cobble 1")
|
||||
end
|
||||
|
||||
|
||||
|
||||
if cob:get_count() > 0 then
|
||||
pos.y = pos.y - 2
|
||||
local bmeta = minetest.get_meta(pos)
|
||||
local binv = bmeta:get_inventory()
|
||||
|
||||
binv:add_item("main", "default:gravel 1")
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_node("bitumen:rock_crusher", {
|
||||
description = "Small Gas Rock Crusher",
|
||||
drawtype = "nodebox",
|
||||
|
@ -120,40 +176,13 @@ minetest.register_node("bitumen:rock_crusher", {
|
|||
|
||||
on_punch = function(pos)
|
||||
swap_node(pos, "bitumen:rock_crusher_on")
|
||||
try_turn_on(pos)
|
||||
minetest.get_node_timer(pos):start(2.0)
|
||||
--try_turn_on(pos)
|
||||
end,
|
||||
|
||||
on_timer = function(pos)
|
||||
return false
|
||||
end,
|
||||
|
||||
on_timer = function(pos, elapsed)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local fuel = meta:get_float("fuel") or 0.0
|
||||
|
||||
if fuel <= 0 then
|
||||
-- try to get some fuel
|
||||
local inv = meta:get_inventory()
|
||||
|
||||
local st = inv:get_stack("main", 1)
|
||||
|
||||
if take_gas(st, 1) then
|
||||
inv:set_stack("main", 1, st);
|
||||
fuel = fuel + 1
|
||||
else
|
||||
-- out of fuel, turn off
|
||||
return false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
fuel = fuel - .1
|
||||
meta:set_float("fuel", fuel)
|
||||
|
||||
-- try to grind some rocks
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
})
|
||||
|
||||
|
@ -190,11 +219,16 @@ minetest.register_node("bitumen:rock_crusher_on", {
|
|||
|
||||
on_punch = function(pos)
|
||||
swap_node(pos, "bitumen:rock_crusher")
|
||||
destruct_light(pos)
|
||||
-- destruct_light(pos)
|
||||
end,
|
||||
|
||||
on_timer = crushtimer,
|
||||
|
||||
})
|
||||
|
||||
bitumen.register_blueprint({
|
||||
name="bitumen:rock_crusher",
|
||||
no_constructor_craft = true,
|
||||
})
|
||||
|
||||
|
||||
|
|
47
spills.lua
47
spills.lua
|
@ -53,6 +53,7 @@ local soil_more = {}
|
|||
local soil_less = {}
|
||||
local soil_abm_nodes = {}
|
||||
local soil_abm_neighbors = {}
|
||||
local burnable_soiled_nodes = {}
|
||||
|
||||
|
||||
local function spill_name(orig, lvl)
|
||||
|
@ -117,6 +118,9 @@ local register_spill_node = function(old)
|
|||
table.insert(soil_abm_neighbors, n2)
|
||||
table.insert(soil_abm_neighbors, n1)
|
||||
table.insert(soil_abm_neighbors, old)
|
||||
|
||||
table.insert(burnable_soiled_nodes, n3)
|
||||
table.insert(burnable_soiled_nodes, n2)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -425,7 +429,14 @@ minetest.register_abm({
|
|||
-- print(dump2(x).. " -> " ..dump2(bnode.name))
|
||||
else
|
||||
local lvl = minetest.get_node_level(pos)
|
||||
minetest.set_node_level(pos, math.max(0, lvl - 10))
|
||||
local nl = math.max(0, lvl - 10)
|
||||
|
||||
if nl == 0 then
|
||||
minetest.set_node(pos, {name="air"})
|
||||
else
|
||||
minetest.set_node_level(pos, nl)
|
||||
end
|
||||
|
||||
minetest.set_node(bp, {name=x})
|
||||
|
||||
return
|
||||
|
@ -439,7 +450,39 @@ minetest.register_abm({
|
|||
|
||||
|
||||
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Spilled nodes burn slowly",
|
||||
nodenames = burnable_soiled_nodes,
|
||||
neighbors = {"fire:basic_flame"},
|
||||
interval = 4,
|
||||
chance = 20,
|
||||
catch_up = true,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local n = minetest.get_node(pos)
|
||||
if n then
|
||||
local less = soil_less[n.name]
|
||||
if less then
|
||||
minetest.set_node(pos, {name = less})
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Spilled nodes catch fire",
|
||||
nodenames = burnable_soiled_nodes,
|
||||
neighbors = {"fire:basic_flame"},
|
||||
interval = 3,
|
||||
chance = 5,
|
||||
catch_up = true,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local n = minetest.find_node_near(pos, 1, {"air"})
|
||||
if n then
|
||||
minetest.set_node(n, {name = "fire:basic_flame"})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 415 B |
Binary file not shown.
After Width: | Height: | Size: 419 B |
Binary file not shown.
After Width: | Height: | Size: 485 B |
Loading…
Reference in New Issue