repairkit.lua 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. --[[
  2. Tube Library
  3. ============
  4. Copyright (C) 2017-2020 Joachim Stolberg
  5. AGPL v3
  6. See LICENSE.txt for more information
  7. repairkit.lua:
  8. ]]--
  9. -- Load support for I18n
  10. local S = tubelib.S
  11. -- for lazy programmers
  12. local P = minetest.string_to_pos
  13. local M = minetest.get_meta
  14. local function destroy_node(itemstack, placer, pointed_thing)
  15. if pointed_thing.type == "node" then
  16. local pos = pointed_thing.under
  17. if not minetest.is_protected(pos, placer:get_player_name()) then
  18. M(pos):set_int("tubelib_aging", 999999)
  19. end
  20. end
  21. end
  22. local function repair_node(itemstack, user, pointed_thing)
  23. local pos = pointed_thing.under
  24. if pos then
  25. if tubelib.repair_node(pos) then
  26. minetest.chat_send_player(user:get_player_name(), S("[Tubelib] Node repaired"))
  27. itemstack:take_item()
  28. return itemstack
  29. end
  30. end
  31. return
  32. end
  33. local function read_state(itemstack, user, pointed_thing)
  34. local pos = pointed_thing.under
  35. if pos then
  36. local number = tubelib.get_node_number(pos)
  37. if number then
  38. local state = tubelib.send_request(number, "state", nil)
  39. local counter = tubelib.send_request(number, "counter", nil)
  40. local aging = tubelib.send_request(number, "aging", nil)
  41. if state and counter and aging then
  42. if type(counter) ~= "number" then counter = "unknown" end
  43. minetest.chat_send_player(user:get_player_name(), S("[Tubelib] state").." ="..state..", "..S("counter").." = "..counter..", "..S("aging").." = "..aging)
  44. end
  45. end
  46. end
  47. end
  48. minetest.register_craftitem("tubelib:repairkit", {
  49. description = S("Tubelib Repair Kit"),
  50. inventory_image = "tubelib_repairkit.png",
  51. wield_image = "tubelib_repairkit.png^[transformR270",
  52. groups = {cracky=1, book=1},
  53. on_use = repair_node,
  54. node_placement_prediction = "",
  55. })
  56. minetest.register_node("tubelib:end_wrench", {
  57. description = S("Tubelib End Wrench (use = read status, place = destroy)"),
  58. inventory_image = "tubelib_end_wrench.png",
  59. wield_image = "tubelib_end_wrench.png",
  60. groups = {cracky=1, book=1},
  61. on_use = read_state,
  62. on_place = destroy_node,
  63. node_placement_prediction = "",
  64. })
  65. minetest.register_craft({
  66. output = "tubelib:repairkit",
  67. recipe = {
  68. {"", "basic_materials:gear_steel", ""},
  69. {"", "tubelib:end_wrench", ""},
  70. {"", "basic_materials:oil_extract", ""},
  71. },
  72. })
  73. minetest.register_craft({
  74. output = "tubelib:end_wrench 4",
  75. recipe = {
  76. {"", "", "default:steel_ingot"},
  77. {"", "default:tin_ingot", ""},
  78. {"default:steel_ingot", "", ""},
  79. },
  80. })