mirror of
https://github.com/minetest-mods/digtron.git
synced 2024-12-22 20:32:22 +01:00
Added Pipeworks compatibility
This commit is contained in:
parent
4b5eb1b865
commit
1789316ec5
@ -3,7 +3,7 @@
|
|||||||
minetest.register_node("digtron:inventory",
|
minetest.register_node("digtron:inventory",
|
||||||
{
|
{
|
||||||
description = "Digtron Inventory Hopper",
|
description = "Digtron Inventory Hopper",
|
||||||
groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 2},
|
groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 2, tubedevice = 1, tubedevice_receiver = 1},
|
||||||
drop = "digtron:inventory",
|
drop = "digtron:inventory",
|
||||||
sounds = digtron.metal_sounds,
|
sounds = digtron.metal_sounds,
|
||||||
paramtype2= "facedir",
|
paramtype2= "facedir",
|
||||||
@ -34,6 +34,27 @@ minetest.register_node("digtron:inventory",
|
|||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
return inv:is_empty("main")
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- Pipeworks compatibility
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
tube = (function() if minetest.get_modpath("pipeworks") then return {
|
||||||
|
insert_object = function(pos, node, stack, direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
return inv:add_item("main", stack)
|
||||||
|
end,
|
||||||
|
can_insert = function(pos, node, stack, direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
return inv:room_for_item("main", stack)
|
||||||
|
end,
|
||||||
|
input_inventory = "main",
|
||||||
|
connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
|
||||||
|
} end end)(),
|
||||||
|
|
||||||
|
after_place_node = (function() if minetest.get_modpath("pipeworks") then return pipeworks.after_place end end)(),
|
||||||
|
after_dig_node = (function() if minetest.get_modpath("pipeworks") then return pipeworks.after_dig end end)()
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Fuel storage. Controller node draws fuel from here.
|
-- Fuel storage. Controller node draws fuel from here.
|
||||||
@ -41,7 +62,7 @@ minetest.register_node("digtron:inventory",
|
|||||||
minetest.register_node("digtron:fuelstore",
|
minetest.register_node("digtron:fuelstore",
|
||||||
{
|
{
|
||||||
description = "Digtron Fuel Hopper",
|
description = "Digtron Fuel Hopper",
|
||||||
groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 5},
|
groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 5, tubedevice = 1, tubedevice_receiver = 1},
|
||||||
drop = "digtron:fuelstore",
|
drop = "digtron:fuelstore",
|
||||||
sounds = digtron.metal_sounds,
|
sounds = digtron.metal_sounds,
|
||||||
paramtype2= "facedir",
|
paramtype2= "facedir",
|
||||||
@ -87,13 +108,40 @@ minetest.register_node("digtron:fuelstore",
|
|||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
return inv:is_empty("fuel")
|
return inv:is_empty("fuel")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- Pipeworks compatibility
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
tube = (function() if minetest.get_modpath("pipeworks") then return {
|
||||||
|
insert_object = function(pos, node, stack, direction)
|
||||||
|
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
return inv:add_item("fuel", stack)
|
||||||
|
end
|
||||||
|
return stack
|
||||||
|
end,
|
||||||
|
can_insert = function(pos, node, stack, direction)
|
||||||
|
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
return inv:room_for_item("fuel", stack)
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end,
|
||||||
|
input_inventory = "fuel",
|
||||||
|
connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
|
||||||
|
} end end)(),
|
||||||
|
|
||||||
|
after_place_node = (function() if minetest.get_modpath("pipeworks") then return pipeworks.after_place end end)(),
|
||||||
|
after_dig_node = (function() if minetest.get_modpath("pipeworks")then return pipeworks.after_dig end end)()
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Combined storage. Group 6 has both an inventory and a fuel store
|
-- Combined storage. Group 6 has both an inventory and a fuel store
|
||||||
minetest.register_node("digtron:combined_storage",
|
minetest.register_node("digtron:combined_storage",
|
||||||
{
|
{
|
||||||
description = "Digtron Combined Storage",
|
description = "Digtron Combined Storage",
|
||||||
groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 6},
|
groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 6, tubedevice = 1, tubedevice_receiver = 1},
|
||||||
drop = "digtron:combined_storage",
|
drop = "digtron:combined_storage",
|
||||||
sounds = digtron.metal_sounds,
|
sounds = digtron.metal_sounds,
|
||||||
paramtype2= "facedir",
|
paramtype2= "facedir",
|
||||||
@ -156,4 +204,31 @@ minetest.register_node("digtron:combined_storage",
|
|||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
return inv:is_empty("fuel") and inv:is_empty("main")
|
return inv:is_empty("fuel") and inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
-- Pipeworks compatibility
|
||||||
|
----------------------------------------------------------------
|
||||||
|
tube = (function() if minetest.get_modpath("pipeworks") then return {
|
||||||
|
insert_object = function(pos, node, stack, direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 and direction.y == 1 then
|
||||||
|
return inv:add_item("fuel", stack)
|
||||||
|
end
|
||||||
|
return inv:add_item("main", stack)
|
||||||
|
end,
|
||||||
|
can_insert = function(pos, node, stack, direction)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local inv = meta:get_inventory()
|
||||||
|
if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 and direction.y == 1 then
|
||||||
|
return inv:room_for_item("fuel", stack)
|
||||||
|
end
|
||||||
|
return inv:room_for_item("main", stack)
|
||||||
|
end,
|
||||||
|
input_inventory = "main",
|
||||||
|
connect_sides = {left = 1, right = 1, back = 1, front = 1, bottom = 1, top = 1}
|
||||||
|
} end end)(),
|
||||||
|
|
||||||
|
after_place_node = (function() if minetest.get_modpath("pipeworks") then return pipeworks.after_place end end)(),
|
||||||
|
after_dig_node = (function() if minetest.get_modpath("pipeworks") then return pipeworks.after_dig end end)()
|
||||||
|
|
||||||
})
|
})
|
||||||
|
8
util.lua
8
util.lua
@ -98,9 +98,13 @@ end
|
|||||||
digtron.move_node = function(pos, newpos, player_name)
|
digtron.move_node = function(pos, newpos, player_name)
|
||||||
-- Moves nodes, preserving digtron metadata and inventory
|
-- Moves nodes, preserving digtron metadata and inventory
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
|
local node_def = minetest.registered_nodes[node.name]
|
||||||
local oldnode = minetest.get_node(newpos)
|
local oldnode = minetest.get_node(newpos)
|
||||||
minetest.log("action", string.format("%s moves %s from (%d, %d, %d) to (%d, %d, %d), displacing %s", player_name, node.name, pos.x, pos.y, pos.z, newpos.x, newpos.y, newpos.z, oldnode.name))
|
minetest.log("action", string.format("%s moves %s from (%d, %d, %d) to (%d, %d, %d), displacing %s", player_name, node.name, pos.x, pos.y, pos.z, newpos.x, newpos.y, newpos.z, oldnode.name))
|
||||||
minetest.add_node(newpos, { name=node.name, param1=node.param1, param2=node.param2 })
|
minetest.add_node(newpos, { name=node.name, param1=node.param1, param2=node.param2 })
|
||||||
|
if node_def.after_place_node then
|
||||||
|
node_def.after_place_node(newpos)
|
||||||
|
end
|
||||||
|
|
||||||
local oldmeta = minetest.get_meta(pos)
|
local oldmeta = minetest.get_meta(pos)
|
||||||
local oldinv = oldmeta:get_inventory()
|
local oldinv = oldmeta:get_inventory()
|
||||||
@ -122,12 +126,16 @@ digtron.move_node = function(pos, newpos, player_name)
|
|||||||
newmeta:set_float("fuel_burning", oldmeta:get_float("fuel_burning"))
|
newmeta:set_float("fuel_burning", oldmeta:get_float("fuel_burning"))
|
||||||
newmeta:set_string("infotext", oldmeta:get_string("infotext"))
|
newmeta:set_string("infotext", oldmeta:get_string("infotext"))
|
||||||
|
|
||||||
|
-- Move the little floaty entity inside the builders
|
||||||
if minetest.get_item_group(node.name, "digtron") == 4 then
|
if minetest.get_item_group(node.name, "digtron") == 4 then
|
||||||
digtron.update_builder_item(newpos)
|
digtron.update_builder_item(newpos)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- remove node from old position
|
-- remove node from old position
|
||||||
minetest.remove_node(pos)
|
minetest.remove_node(pos)
|
||||||
|
if node_def.after_dig_node then
|
||||||
|
node_def.after_dig_node(pos)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
digtron.get_all_digtron_neighbours = function(pos, player)
|
digtron.get_all_digtron_neighbours = function(pos, player)
|
||||||
|
Loading…
Reference in New Issue
Block a user