init.lua 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. local use_moreores = minetest.get_modpath("moreores")
  2. -- Register Shields
  3. local function register_shield(name, data)
  4. data._armor_resist_groups = sysdmg.get_armor_resist_for(name)
  5. data._armor_wear_groups = sysdmg.get_armor_wear_for(name)
  6. if not data.groups then
  7. data.groups = {armor_shield=1}
  8. else
  9. data.groups.armor_shield = 1
  10. end
  11. data.groups = sysdmg.get_armor_groups_for(name, data.groups)
  12. minetest.register_tool(name, data)
  13. end
  14. -- Enhanced wooden shield. -----------------------------------------------------
  15. register_shield("shields:shield_enhanced_wood", {
  16. description = "Enhanced Wood Shield",
  17. inventory_image = "shields_inv_shield_enhanced_wood.png",
  18. })
  19. minetest.register_craft({
  20. output = "shields:shield_enhanced_wood",
  21. recipe = {
  22. {"default:steel_ingot"},
  23. {"shields:shield_wood"},
  24. {"default:steel_ingot"},
  25. },
  26. })
  27. minetest.register_craft({
  28. type = "cooking",
  29. output = "default:steel_ingot 2",
  30. recipe = "shields:shield_enhanced_wood",
  31. })
  32. --------------------------------------------------------------------------------
  33. for key, data in pairs(ARMOR_MATERIALS) do
  34. local nrba = nil
  35. if data.not_repaired_by_anvil then
  36. nrba = 1
  37. end
  38. register_shield("shields:shield_" .. key, {
  39. description = data.name .. " Shield",
  40. inventory_image = "shields_inv_shield_" .. key .. ".png",
  41. groups = {not_repaired_by_anvil=nrba},
  42. })
  43. end
  44. for key, data in pairs(ARMOR_MATERIALS) do
  45. local k = key
  46. local v = data.item
  47. local fueltime = data.fuel or 0
  48. local cooktime = data.cook or 0
  49. if data.shield then
  50. local center = "techcrafts:composite_plate"
  51. if string.find(v, "wood") then
  52. center = "default:steel_ingot"
  53. end
  54. minetest.register_craft({
  55. output = "shields:shield_"..k,
  56. recipe = {
  57. {v, "mobs:leather_padding", v},
  58. {v, center, v},
  59. {"", v, ""},
  60. },
  61. })
  62. -- Reverse cooking recipes for all shields except wood and diamond.
  63. if cooktime > 0 then
  64. minetest.register_craft({
  65. type = "cooking",
  66. output = v .. " 5",
  67. recipe = "shields:shield_" .. k,
  68. cooktime = cooktime,
  69. })
  70. end
  71. if fueltime > 0 then
  72. minetest.register_craft({
  73. type = "fuel",
  74. recipe = "shields:shield_" .. k,
  75. burntime = fueltime,
  76. })
  77. end
  78. end
  79. end
  80. minetest.after(0, function()
  81. table.insert(armor.elements, "shield")
  82. end)