techage/tools/trowel.lua
2022-01-04 19:40:27 +01:00

69 lines
1.7 KiB
Lua

--[[
TechAge
=======
Copyright (C) 2019 Joachim Stolberg
AGPL v3
See LICENSE.txt for more information
Trowel tool to hide/open cable/pipe/tube nodes
]]--
-- for lazy programmers
local P = minetest.string_to_pos
local M = minetest.get_meta
local S = techage.S
local function replace_node(itemstack, placer, pointed_thing)
if pointed_thing.type == "node" then
local pos = pointed_thing.under
local name = placer:get_player_name()
if minetest.is_protected(pos, name) then
return
end
local node = minetest.get_node(pos)
local res = false
if minetest.get_item_group(node.name, "techage_trowel") == 1 then
res = networks.hide_node(pos, node, placer)
elseif networks.hidden_name(pos) or M(pos):get_string("techage_hidden_nodename") ~= "" then
res = networks.open_node(pos, node, placer)
else
minetest.chat_send_player(placer:get_player_name(), "Invalid/unsuported block!")
return
end
if res then
minetest.sound_play("default_dig_snappy", {
pos = pos,
gain = 1,
max_hear_distance = 5})
elseif placer and placer.get_player_name then
minetest.chat_send_player(placer:get_player_name(), "Invalid fill material in inventory slot 1!")
end
end
end
minetest.register_tool("techage:trowel", {
description = S("TechAge Trowel"),
inventory_image = "techage_trowel.png",
wield_image = "techage_trowel.png",
use_texture_alpha = techage.CLIP,
groups = {cracky=1},
on_use = replace_node,
on_place = replace_node,
node_placement_prediction = "",
stack_max = 1,
})
minetest.register_craft({
output = "techage:trowel",
recipe = {
{"basic_materials:steel_bar", "basic_materials:steel_bar", ""},
{"basic_materials:steel_bar", "default:stick", ""},
{"", "", "default:stick"},
},
})