56 lines
2.2 KiB
Lua
56 lines
2.2 KiB
Lua
local NAME = minetest.get_current_modname()
|
|
|
|
minetest.register_tool(NAME .. ":cableinserter", {
|
|
description = "Cable Inserter",
|
|
inventory_image = "cableinserter.png",
|
|
stack_max = 1,
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
-- TODO Check that nodes does not already interact with the grid
|
|
if pointed_thing["type"] == "node" then
|
|
local node = minetest.get_node(pointed_thing.under)
|
|
local meta = minetest.get_meta(pointed_thing.under)
|
|
local inv = placer:get_inventory()
|
|
local s = ItemStack("sparkcore:cable")
|
|
s:set_count(1)
|
|
|
|
if meta:get_int("sparktech_net_passive") == 1 then
|
|
meta:set_int("sparktech_net_passive", 0)
|
|
sparktech.remove_node_from_net(pointed_thing.under, node, true)
|
|
minetest.chat_send_player(placer:get_player_name(), "Cable Inserter: Removed cable")
|
|
if inv:room_for_item("main", s) then
|
|
inv:add_item("main", s)
|
|
else
|
|
minetest.item_drop(s, placer, pointed_thing.above)
|
|
end
|
|
else
|
|
if inv:remove_item("main", s):get_count() ~= 0 then
|
|
meta:set_int("sparktech_net_passive", 1)
|
|
sparktech.add_node_to_net(pointed_thing.under, node)
|
|
minetest.chat_send_player(placer:get_player_name(), "Cable Inserter: Added cable")
|
|
end
|
|
end
|
|
end
|
|
return itemstack
|
|
end,
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
if pointed_thing["type"] == "node" then
|
|
local node = minetest.get_node(pointed_thing.under)
|
|
local meta = minetest.get_meta(pointed_thing.under)
|
|
if meta:get_int("sparktech_net_passive") == 1 then
|
|
minetest.chat_send_player(user:get_player_name(), "Cable Inserter: Contains cable")
|
|
else
|
|
minetest.chat_send_player(user:get_player_name(), "Cable Inserter: Does not contain a cable")
|
|
end
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = NAME .. ":cableinserter",
|
|
recipe = {
|
|
{ "group:steel_plate", "", "" },
|
|
{ "", "group:steel_plate", "" },
|
|
{ "", "group:steel_plate", ""},
|
|
}
|
|
})
|