Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions multifurnace/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,14 @@ end
-- Furnace lifecycle --
-----------------------

local function swap_node(pos, node, name)
if node.name == name then
return
end
node.name = name
core.swap_node(pos, node)
end

function multifurnace.api.check_controller(pos)
local check_serial = math.random(10000, 99999)
local node = core.get_node_or_nil(pos)
Expand All @@ -219,8 +227,10 @@ function multifurnace.api.check_controller(pos)

if not dimensions then
ctrl_meta:set_string("serial", "")
ctrl_meta:set_string("formspec", "")
notify_ports_removal(pos)
update_timer(pos)
swap_node(pos, node, "multifurnace:controller")
return
end

Expand All @@ -242,6 +252,8 @@ function multifurnace.api.check_controller(pos)
end

local volume = calculate_volume(dimensions)
swap_node(pos, node, "multifurnace:controller_active")
def = core.registered_nodes["multifurnace:controller_active"]
multifurnace.loaded_controllers[key] = {
controller = pos,
serial = check_serial,
Expand Down
58 changes: 47 additions & 11 deletions multifurnace/furnace.lua
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,39 @@ core.register_node("multifurnace:controller", {
tubedevice = 1,
tubedevice_receiver = 1
},
paramtype2 = "facedir",
is_ground_content = false,
-- on_timer = controller_timer,
on_construct = function(pos)
local meta = core.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("melt", 1)
meta:set_string("formspec", "")
multifurnace.api.component_changed_nearby(pos)
end,
on_destruct = function(pos) multifurnace.api.remove_controller(pos) end,
_mcl_hardness = 2,
_mcl_blast_resistance = 2,
_multifurnace_fuel_consumption = 10,
_multifurnace_max_dimensions = 8,
})

core.register_node("multifurnace:controller_active", {
description = S("Multifurnace Controller"),
tiles = {
"metal_melter_heatbrick.png", "metal_melter_heatbrick.png",
"metal_melter_heatbrick.png", "metal_melter_heatbrick.png",
"metal_melter_heatbrick.png",
"metal_melter_heatbrick.png^(multifurnace_controller_face.png^[colorize:#DD7C00:60)"
},
groups = {
cracky = 3,
pickaxey = 1,
multifurnace = 1,
multifurnace_controller = 1,
tubedevice = 1,
tubedevice_receiver = 1
},
tube = {
can_remove = function() return 0 end,
insert_object = function(pos, node, stack, direction)
Expand Down Expand Up @@ -474,9 +507,15 @@ core.register_node("multifurnace:controller", {
_mcl_hardness = 2,
_mcl_blast_resistance = 2,
_multifurnace_fuel_consumption = 10,
_multifurnace_max_dimensions = 8
_multifurnace_max_dimensions = 8,
drop = "multifurnace:controller",
})

-- Add entry alias for the Help
if minetest.get_modpath("doc") then
doc.add_entry_alias("nodes", "multifurnace:controller", "nodes", "multifurnace:controller_active")
end

core.register_node("multifurnace:port", {
description = S("Multifurnace Port"),
tiles = {
Expand Down Expand Up @@ -558,23 +597,20 @@ core.override_item("metal_melter:heated_bricks", {

core.register_abm({
label = "Update Multifurnace structures",
nodenames = {"multifurnace:controller"},
without_neighbors = {"multifurnace:controller"},
nodenames = {"multifurnace:controller", "multifurnace:controller_active"},
without_neighbors = {"multifurnace:controller", "multifurnace:controller_active"},
interval = 5,
chance = 1,
action = function(pos) multifurnace.api.detect_changes(pos) end
})

core.register_lbm({
name = "multifurnace:load_controllers",
nodenames = {"multifurnace:controller"},
action = function(pos) multifurnace.api.detect_changes(pos) end
})

if core.get_modpath("tubelib") then
core.override_item("multifurnace:controller", {
after_dig_node = function(pos) tubelib.remove_node(pos) end
})
core.override_item("multifurnace:controller_active", {
after_place_node = function(pos, placer)
tubelib.add_node(pos, "multifurnace:controller")
tubelib.add_node(pos, "multifurnace:controller_active")
end,
after_dig_node = function(pos) tubelib.remove_node(pos) end
})
Expand All @@ -598,7 +634,7 @@ if core.get_modpath("tubelib") then
return true
end

tubelib.register_node("multifurnace:controller", {}, {
tubelib.register_node("multifurnace:controller_active", {}, {
on_pull_item = function() return nil end,
on_push_item = function(pos, side, item)
return tubelib_insert(pos, side, item)
Expand Down