techpack/tubelib/repairkit.lua
2019-01-06 15:03:22 +01:00

93 lines
2.4 KiB
Lua

--[[
Tube Library
============
Copyright (C) 2017-2018 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
repairkit.lua:
]]--
-- for lazy programmers
local S = function(pos) if pos then return minetest.pos_to_string(pos) end end
local P = minetest.string_to_pos
local M = minetest.get_meta
local function destroy_node(itemstack, placer, pointed_thing)
if pointed_thing.type == "node" then
local pos = pointed_thing.under
if not minetest.is_protected(pos, placer:get_player_name()) then
M(pos):set_int("tubelib_aging", 999999)
end
end
end
local function repair_node(itemstack, user, pointed_thing)
local pos = pointed_thing.under
if pos then
if tubelib.repair_node(pos) then
minetest.chat_send_player(user:get_player_name(), "[Tubelib] Node repaired")
itemstack:take_item()
return itemstack
end
end
return
end
local function read_state(itemstack, user, pointed_thing)
local pos = pointed_thing.under
if pos then
local number = tubelib.get_node_number(pos)
if number then
local state = tubelib.send_request(number, "state", nil)
local counter = tubelib.send_request(number, "counter", nil)
local aging = tubelib.send_request(number, "aging", nil)
if state and counter and aging then
if type(counter) ~= "number" then counter = "unknown" end
minetest.chat_send_player(user:get_player_name(), "[Tubelib] state ="..state..", counter = "..counter..", aging = "..aging)
end
end
end
end
minetest.register_craftitem("tubelib:repairkit", {
description = "Tubelib Repair Kit",
inventory_image = "tubelib_repairkit.png",
wield_image = "tubelib_repairkit.png^[transformR270",
groups = {cracky=1, book=1},
on_use = repair_node,
node_placement_prediction = "",
})
minetest.register_node("tubelib:end_wrench", {
description = "Tubelib End Wrench (use = read status, place = destroy)",
inventory_image = "tubelib_end_wrench.png",
wield_image = "tubelib_end_wrench.png",
groups = {cracky=1, book=1},
on_use = read_state,
on_place = destroy_node,
node_placement_prediction = "",
})
minetest.register_craft({
output = "tubelib:repairkit",
recipe = {
{"", "basic_materials:gear_steel", ""},
{"", "tubelib:end_wrench", ""},
{"", "basic_materials:oil_extract", ""},
},
})
minetest.register_craft({
output = "tubelib:end_wrench 4",
recipe = {
{"", "", "default:steel_ingot"},
{"", "default:tin_ingot", ""},
{"default:steel_ingot", "", ""},
},
})