init.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. --------------------------------------------------------------------------------
  2. -- Gem Minerals Mod for Must Test Survival
  3. -- Author: GoldFireUn
  4. -- License of Source Code: MIT
  5. -- License of Media: CC BY-SA 3.0
  6. --------------------------------------------------------------------------------
  7. if not minetest.global_exists("gem_minerals") then gem_minerals = {} end
  8. gem_minerals.modpath = minetest.get_modpath("gem_minerals")
  9. local gems = {
  10. {name="ruby", desc="Ruby", hardness=20, extra = true, texture = "default_stone.png",},
  11. {name="amethyst", desc="Amethyst", hardness=12, extra = true, texture = "default_stone.png",},
  12. {name="sapphire", desc="Sapphire", hardness=18, extra = true, texture = "default_stone.png", },
  13. {name="emerald", desc="Emerald", hardness=15, extra = true, texture = "default_stone.png",},
  14. {name="emerald2", desc="Emerald", hardness=15, texture = "xen_stone.png", altname = "emerald",},
  15. {name="sapphire2", desc="Sapphire", hardness=15, texture = "xen_stone.png", altname = "sapphire",},
  16. {name="ruby2", desc="Ruby", hardness=15, texture = "xen_stone.png", altname = "ruby",},
  17. {name="amethyst2", desc="Amethyst", hardness=15, texture = "xen_stone.png", altname = "amethyst",},
  18. }
  19. if not gem_minerals.registered then
  20. for k, v in ipairs(gems) do
  21. local ore = "gems:" .. v.name .. "_ore"
  22. local block = "gems:" .. v.name .. "_block"
  23. local gem = "gems:" .. v.name .. "_gem"
  24. local raw = "gems:raw_" .. v.name
  25. -- Ore.
  26. minetest.register_node(":" .. ore, {
  27. description = v.desc .. " Ore",
  28. tiles = {v.texture .. "^gem_minerals_" .. (v.altname or v.name) .. "_ore.png"},
  29. is_ground_content = true,
  30. groups = utility.dig_groups("hardstone"),
  31. sounds = default.node_sound_stone_defaults(),
  32. drop = "gems:raw_" .. (v.altname or v.name),
  33. silverpick_drop = true,
  34. place_param2 = 10,
  35. })
  36. if v.extra then
  37. minetest.register_alias(ore .. "_mined", ore)
  38. -- Block.
  39. minetest.register_node(":" .. block, {
  40. description = v.desc .. " Block",
  41. tiles = {"gem_minerals_" .. v.name .. "_block.png"},
  42. is_ground_content = false,
  43. groups = utility.dig_groups("obsidian"),
  44. sounds = default.node_sound_stone_defaults(),
  45. drop = gem .. " 8",
  46. silverpick_drop = block,
  47. })
  48. -- Cut Gem.
  49. minetest.register_craftitem(":" .. gem, {
  50. description = v.desc .. " Gem",
  51. inventory_image = "gem_minerals_" .. v.name .. "_gem.png",
  52. groups = {gem = 1, crystal = 1},
  53. })
  54. -- Raw gem.
  55. minetest.register_craftitem(":" .. raw, {
  56. description = "Uncut " .. v.desc .. " Gem",
  57. inventory_image = "gem_minerals_raw_" .. v.name .. ".png",
  58. groups = {gem = 1, crystal = 1},
  59. })
  60. -- Block craft.
  61. minetest.register_craft({
  62. output = block,
  63. recipe = {
  64. {gem, gem, gem},
  65. {gem, "default:stone", gem},
  66. {gem, gem, gem},
  67. }
  68. })
  69. -- Get gems back from block.
  70. minetest.register_craft({
  71. type = "shapeless",
  72. output = gem .. " 8",
  73. recipe = {block},
  74. })
  75. -- Cut raw gem.
  76. minetest.register_craft({
  77. type = "cutting",
  78. output = gem,
  79. recipe = raw,
  80. hardness = v.hardness,
  81. })
  82. end
  83. end
  84. local c = "gem_minerals:core"
  85. local f = gem_minerals.modpath .. "/init.lua"
  86. reload.register_file(c, f, false)
  87. gem_minerals.registered = true
  88. end