init.lua 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837
  1. rackstone = rackstone or {}
  2. rackstone.modpath = minetest.get_modpath("rackstone")
  3. -- group:rackstone is being used to check if a node should be considered naturally occuring for ambiance purposes.
  4. rackstone.rackstone_sounds =
  5. function()
  6. local table = {
  7. dig = {name="rackstone_dugstonemetal", gain=1.0},
  8. dug = {name="rackstone_digstonemetal", gain=1.0},
  9. --place = {name="rackstone_placestonemetal", gain=1.0},
  10. }
  11. return default.node_sound_stone_defaults(table)
  12. end
  13. rackstone.cobble_sounds =
  14. function()
  15. local table = {
  16. footstep = {name="default_gravel_footstep", gain=0.5},
  17. }
  18. return default.node_sound_stone_defaults(table)
  19. end
  20. rackstone.destabilize_dauthsand =
  21. function(pos)
  22. local minp = {x=pos.x-1, y=pos.y, z=pos.z-1}
  23. local maxp = {x=pos.x+1, y=pos.y, z=pos.z+1}
  24. local nodes = minetest.find_nodes_in_area(minp, maxp, "rackstone:dauthsand_stable")
  25. for k, v in ipairs(nodes) do
  26. minetest.add_node(v, {name="rackstone:dauthsand"})
  27. minetest.check_for_falling(v)
  28. end
  29. end
  30. minetest.register_node("rackstone:rackstone", {
  31. description = "Rackstone",
  32. tiles = {"rackstone_rackstone.png"},
  33. groups = utility.dig_groups("stone", {rackstone=1, stabilize_dauthsand=1, netherack=1}),
  34. sounds = default.node_sound_stone_defaults(),
  35. after_destruct = rackstone.destabilize_dauthsand,
  36. movement_speed_multiplier = default.ROAD_SPEED_NETHER,
  37. -- Common stone does not count toward tool's dig count.
  38. _toolranks = {
  39. ignore = true,
  40. },
  41. drop = "rackstone:cobble",
  42. })
  43. minetest.register_node("rackstone:cobble", {
  44. description = "Rackstone Cobble",
  45. tiles = {"rackstone_rackstone_cobble.png"},
  46. groups = utility.dig_groups("cobble", {rackstone=1, stabilize_dauthsand=1, netherack=1}),
  47. sounds = rackstone.cobble_sounds(),
  48. after_destruct = rackstone.destabilize_dauthsand,
  49. movement_speed_multiplier = default.ROAD_SPEED_NETHER,
  50. -- Common stone does not count toward tool's dig count.
  51. _toolranks = {
  52. ignore = true,
  53. },
  54. _no_auto_pop = true,
  55. })
  56. minetest.register_node("rackstone:rackstone_brick2", {
  57. description = "Rackstone Brick",
  58. paramtype2 = "facedir",
  59. place_param2 = 0,
  60. tiles = {"rackstone_rackstone_brick.png"},
  61. groups = utility.dig_groups("brick", {rackstone=1, brick=1}),
  62. sounds = default.node_sound_stone_defaults(),
  63. })
  64. minetest.register_node("rackstone:rackstone_block", {
  65. description = "Rackstone Block",
  66. paramtype2 = "facedir",
  67. place_param2 = 0,
  68. tiles = {"rackstone_rackstone_block.png"},
  69. groups = utility.dig_groups("block", {rackstone=1}),
  70. sounds = default.node_sound_stone_defaults(),
  71. })
  72. local after_redrack_remove = function(pos)
  73. -- Remove netherflame above.
  74. local flamepos = {x=pos.x, y=pos.y+1, z=pos.z}
  75. if minetest.get_node(flamepos).name == "fire:nether_flame" then
  76. minetest.remove_node(flamepos)
  77. end
  78. -- Tricks!
  79. if math.random(1, 500) == 1 then
  80. local which = math.random(1, 4)
  81. ambiance.sound_play("tnt_gunpowder_burning", pos, 2, 20)
  82. if which == 1 then
  83. minetest.add_node(pos, {name='rackstone:evilrack'})
  84. core.check_for_falling(pos)
  85. elseif which == 2 then
  86. minetest.add_node(pos, {name="fire:nether_flame"})
  87. elseif which == 3 then
  88. minetest.add_node(pos, {name="default:lava_source"})
  89. else
  90. --ambiance.sound_play("tnt_gunpowder_burning", pos, 2, 20)
  91. -- Delay after TNT gunpowder burning sound to give warning.
  92. minetest.after(1.5, function()
  93. local def = {
  94. radius = 3,
  95. damage_radius = 2,
  96. ignore_protection = false,
  97. disable_drops = true,
  98. ignore_on_blast = false,
  99. }
  100. tnt.boom(pos, def)
  101. end)
  102. end
  103. end
  104. end
  105. rackstone.after_redrack_remove = after_redrack_remove
  106. local on_redrack_place = function(pos)
  107. if math.random(1, 6) == 1 then
  108. local posabove = {x=pos.x, y=pos.y+1, z=pos.z}
  109. local light = minetest.get_node_light(posabove)
  110. if light then
  111. if light >= 15 then
  112. -- Copy position table, just in case.
  113. local npos = {x=pos.x, y=pos.y, z=pos.z}
  114. ambiance.sound_play("default_gravel_footstep", npos, 1, 20)
  115. minetest.after(math.random(1, 6), function()
  116. minetest.remove_node(npos)
  117. local def = {
  118. radius = 2,
  119. damage_radius = 2,
  120. ignore_protection = false,
  121. disable_drops = true,
  122. ignore_on_blast = false,
  123. }
  124. tnt.boom(npos, def)
  125. end)
  126. end
  127. end
  128. end
  129. end
  130. rackstone.on_redrack_place = on_redrack_place
  131. minetest.register_node("rackstone:redrack", {
  132. description = "Netherack",
  133. tiles = {"rackstone_redrack.png"},
  134. groups = utility.dig_groups("netherack", {rackstone=1, stabilize_dauthsand=1, netherack=1}),
  135. sounds = rackstone.rackstone_sounds(),
  136. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  137. drop = "rackstone:redrack_cobble",
  138. -- Common stone does not count toward tool's dig count.
  139. _toolranks = {
  140. ignore = true,
  141. },
  142. after_destruct = function(...)
  143. after_redrack_remove(...)
  144. rackstone.destabilize_dauthsand(...)
  145. end,
  146. on_construct = function(...)
  147. on_redrack_place(...)
  148. end,
  149. on_player_walk_over = function(pos, player)
  150. if math.random(1, 2000) == 1 then
  151. minetest.after(math.random(1, 4), function()
  152. if not minetest.test_protection(pos, "") then
  153. tnt.boom(pos, {
  154. radius = 2,
  155. ignore_protection = false,
  156. ignore_on_blast = false,
  157. damage_radius = 3,
  158. disable_drops = true,
  159. })
  160. end
  161. end)
  162. end
  163. end,
  164. })
  165. minetest.register_node("rackstone:redrack_cobble", {
  166. description = "Cobbled Netherack",
  167. tiles = {"rackstone_redrack_cobble.png"},
  168. groups = utility.dig_groups("netherack", {rackstone=1, stabilize_dauthsand=1, netherack=1}),
  169. sounds = rackstone.rackstone_sounds(),
  170. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  171. -- Common stone does not count toward tool's dig count.
  172. _toolranks = {
  173. ignore = true,
  174. },
  175. _no_auto_pop = true,
  176. after_destruct = function(...)
  177. rackstone.destabilize_dauthsand(...)
  178. end,
  179. on_construct = function(...)
  180. on_redrack_place(...)
  181. end,
  182. on_player_walk_over = function(pos, player)
  183. if math.random(1, 10000) == 1 then
  184. minetest.after(math.random(1, 4), function()
  185. if not minetest.test_protection(pos, "") then
  186. tnt.boom(pos, {
  187. radius = 2,
  188. ignore_protection = false,
  189. ignore_on_blast = false,
  190. damage_radius = 2,
  191. disable_drops = true,
  192. })
  193. end
  194. end)
  195. end
  196. end,
  197. })
  198. minetest.register_node("rackstone:nether_grit", {
  199. description = "Nether Grit",
  200. tiles = {"rackstone_redrack2.png"},
  201. groups = utility.dig_groups("racksand", {falling_node=1}),
  202. sounds = rackstone.rackstone_sounds(),
  203. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  204. liquid_viscosity = 8,
  205. liquidtype = "source",
  206. liquid_alternative_flowing = "rackstone:nether_grit",
  207. liquid_alternative_source = "rackstone:nether_grit",
  208. liquid_renewable = false,
  209. liquid_range = 0,
  210. walkable = false,
  211. drawtype = "glasslike",
  212. paramtype = "light",
  213. post_effect_color = {a = 200, r = 30, g = 0, b = 0},
  214. damage_per_second = 1,
  215. drop = {
  216. max_items = 1,
  217. items = {
  218. {items = {'default:flint'}, rarity = 16},
  219. {items = {'rackstone:nether_grit'}}
  220. }
  221. },
  222. })
  223. minetest.register_node("rackstone:void", {
  224. description = "Nether Void Gap (You Hacker!)",
  225. tiles = {"rackstone_redrack.png"},
  226. groups = utility.dig_groups("cobble"),
  227. sounds = rackstone.rackstone_sounds(),
  228. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  229. walkable = false,
  230. drawtype = "glasslike",
  231. paramtype = "light",
  232. post_effect_color = {a = 200, r = 30, g = 0, b = 0},
  233. damage_per_second = 1,
  234. drop = "",
  235. })
  236. minetest.register_node("rackstone:redrack_with_iron", {
  237. description = "Netherack With Iron",
  238. tiles = {"rackstone_redrack.png^default_mineral_iron.png"},
  239. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1, ore = 1}),
  240. sounds = rackstone.rackstone_sounds(),
  241. drop = "default:iron_lump",
  242. silverpick_drop = true,
  243. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  244. after_destruct = function(...)
  245. after_redrack_remove(...)
  246. end,
  247. })
  248. minetest.register_node("rackstone:redrack_with_copper", {
  249. description = "Netherack With Copper",
  250. tiles = {"rackstone_redrack.png^default_mineral_copper.png"},
  251. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1, ore=1}),
  252. sounds = rackstone.rackstone_sounds(),
  253. drop = "default:copper_lump",
  254. silverpick_drop = true,
  255. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  256. after_destruct = function(...)
  257. after_redrack_remove(...)
  258. end,
  259. })
  260. minetest.register_node("rackstone:redrack_with_coal", {
  261. description = "Netherack With Coal",
  262. tiles = {"rackstone_redrack.png^default_mineral_coal.png"},
  263. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  264. sounds = rackstone.rackstone_sounds(),
  265. drop = "default:coal_lump",
  266. silverpick_drop = true,
  267. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  268. after_destruct = function(...)
  269. after_redrack_remove(...)
  270. end,
  271. })
  272. minetest.register_node("rackstone:redrack_with_tin", {
  273. description = "Netherack With Tin",
  274. tiles = {"rackstone_redrack.png^moreores_mineral_tin.png"},
  275. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1, ore=1}),
  276. sounds = rackstone.rackstone_sounds(),
  277. drop = "moreores:tin_lump",
  278. silverpick_drop = true,
  279. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  280. after_destruct = function(...)
  281. after_redrack_remove(...)
  282. end,
  283. })
  284. minetest.register_node("rackstone:tile", {
  285. description = "Nether Grit Tile",
  286. paramtype2 = "facedir",
  287. place_param2 = 0,
  288. tiles = {"rackstone_redtile.png"},
  289. groups = utility.dig_groups("brick", {brick=1}),
  290. sounds = default.node_sound_stone_defaults(),
  291. })
  292. minetest.register_node("rackstone:brick", {
  293. description = "Netherack Brick",
  294. paramtype2 = "facedir",
  295. place_param2 = 0,
  296. tiles = {"rackstone_brick.png"},
  297. groups = utility.dig_groups("brick", {brick=1}),
  298. sounds = default.node_sound_stone_defaults(),
  299. })
  300. minetest.register_node("rackstone:redrack_block", {
  301. description = "Netherack Block",
  302. paramtype2 = "facedir",
  303. place_param2 = 0,
  304. tiles = {"rackstone_redrack_block.png"},
  305. groups = utility.dig_groups("block"),
  306. sounds = default.node_sound_stone_defaults(),
  307. })
  308. minetest.register_node("rackstone:brick_black", {
  309. description = "Black Rackstone Brick",
  310. paramtype2 = "facedir",
  311. place_param2 = 0,
  312. tiles = {"rackstone_brick_black.png"},
  313. groups = utility.dig_groups("brick", {brick=1}),
  314. sounds = default.node_sound_stone_defaults(),
  315. })
  316. minetest.register_node("rackstone:blackrack_block", {
  317. description = "Black Rackstone Block",
  318. paramtype2 = "facedir",
  319. place_param2 = 0,
  320. tiles = {"rackstone_blackrack_block.png"},
  321. groups = utility.dig_groups("block"),
  322. sounds = default.node_sound_stone_defaults(),
  323. })
  324. minetest.register_node("rackstone:bluerack", {
  325. description = "Blue Rackstone",
  326. tiles = {"rackstone_bluerack.png"},
  327. groups = utility.dig_groups("hardstone", {rackstone=1, netherack=1}),
  328. sounds = rackstone.rackstone_sounds(),
  329. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  330. })
  331. minetest.register_node("rackstone:bluerack_brick", {
  332. description = "Blue Rackstone Brick",
  333. paramtype2 = "facedir",
  334. place_param2 = 0,
  335. tiles = {"rackstone_bluerack_brick.png"},
  336. groups = utility.dig_groups("brick", {rackstone=1, brick=1}),
  337. sounds = rackstone.rackstone_sounds(),
  338. })
  339. minetest.register_node("rackstone:bluerack_block", {
  340. description = "Blue Rackstone Block",
  341. paramtype2 = "facedir",
  342. place_param2 = 0,
  343. tiles = {"rackstone_bluerack_block.png"},
  344. groups = utility.dig_groups("block", {rackstone=1}),
  345. sounds = rackstone.rackstone_sounds(),
  346. })
  347. minetest.register_node("rackstone:blackrack", {
  348. description = "Black Rackstone",
  349. tiles = {"rackstone_blackrack.png"},
  350. groups = utility.dig_groups("cobble", {rackstone=1, native_stone=1, stabilize_dauthsand=1, netherack=1}),
  351. sounds = rackstone.rackstone_sounds(),
  352. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  353. paramtype2 = "none",
  354. after_destruct = rackstone.destabilize_dauthsand,
  355. -- Nodes placed shall not produce starpearls when dug.
  356. after_place_node = function(pos, placer, itemstack, pointed_thing)
  357. if placer then
  358. local node = minetest.get_node(pos)
  359. node.param2 = 1
  360. minetest.swap_node(pos, node)
  361. end
  362. end,
  363. -- Digging nodes placed by mapgen shall sometimes produce starpearls.
  364. after_dig_node = function(pos, oldnode, oldmetadata, digger)
  365. if digger and oldnode.param2 == 0 then
  366. -- Only drop them rarely.
  367. -- Only drop if blackrack was placed by mapgen.
  368. -- This prevents place-harvest-place-harvest exploit.
  369. local chance = 80
  370. local tool = digger:get_wielded_item():get_name()
  371. if tool:find("pick") and tool:find("silver") then
  372. chance = 20
  373. end
  374. if math.random(1, chance) == 1 then
  375. local inv = digger:get_inventory()
  376. local leftover = inv:add_item("main", ItemStack('starpearl:pearl'))
  377. minetest.add_item(pos, leftover)
  378. end
  379. end
  380. end,
  381. })
  382. minetest.register_node("rackstone:evilrack", {
  383. description = "Witchrack",
  384. tiles = {"rackstone_evilstone.png"},
  385. groups = utility.dig_groups("netherack", {falling_node=1, rackstone=1, netherack=1}),
  386. sounds = rackstone.rackstone_sounds(),
  387. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  388. })
  389. minetest.register_node("rackstone:dauthsand", {
  390. description = "Dauthsand",
  391. tiles = {"rackstone_dauthsand.png"},
  392. groups = utility.dig_groups("racksand", {falling_node=1, racksand=1, nether_soil=1}),
  393. --damage_per_second = 4,
  394. post_effect_color = {a=255, r=0, g=0, b=0},
  395. sounds = default.node_sound_gravel_defaults(),
  396. drop = {
  397. items = {
  398. {items = {'bluegrass:seed'}, rarity = 32},
  399. {items = {'rackstone:dauthsand'}},
  400. {items = {'default:flint'}, rarity = 16}
  401. }
  402. },
  403. movement_speed_multiplier = default.SLOW_SPEED,
  404. -- Stabilize dauth sand if held by rackstone.
  405. on_construct = function(pos)
  406. local x1 = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z}).name
  407. local x2 = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z}).name
  408. local z1 = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1}).name
  409. local z2 = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1}).name
  410. if minetest.get_item_group(x1, "stabilize_dauthsand") > 0 and
  411. minetest.get_item_group(x2, "stabilize_dauthsand") > 0 then
  412. minetest.swap_node(pos, {name="rackstone:dauthsand_stable"})
  413. elseif minetest.get_item_group(z1, "stabilize_dauthsand") > 0 and
  414. minetest.get_item_group(z2, "stabilize_dauthsand") > 0 then
  415. minetest.swap_node(pos, {name="rackstone:dauthsand_stable"})
  416. end
  417. end,
  418. })
  419. -- Special sand type that doesn't fall.
  420. minetest.register_node("rackstone:dauthsand_stable", {
  421. description = "Dauthsand",
  422. tiles = {"rackstone_dauthsand.png"},
  423. groups = utility.dig_groups("gravel", {racksand=1, nether_soil=1}),
  424. --damage_per_second = 4,
  425. post_effect_color = {a=255, r=0, g=0, b=0},
  426. sounds = default.node_sound_gravel_defaults(),
  427. drop = 'rackstone:dauthsand',
  428. movement_speed_multiplier = default.SLOW_SPEED,
  429. })
  430. minetest.register_craft({
  431. type = "cooking",
  432. output = "default:glass",
  433. recipe = "rackstone:dauthsand",
  434. })
  435. -- Netherack Crafts
  436. minetest.register_craft({
  437. output = "rackstone:brick 4",
  438. recipe = {
  439. {"rackstone:redrack", "rackstone:redrack"},
  440. {"rackstone:redrack", "rackstone:redrack"},
  441. }
  442. })
  443. minetest.register_craft({
  444. output = "rackstone:redrack_block 9",
  445. recipe = {
  446. {"rackstone:redrack", "rackstone:redrack", "rackstone:redrack"},
  447. {"rackstone:redrack", "rackstone:redrack", "rackstone:redrack"},
  448. {"rackstone:redrack", "rackstone:redrack", "rackstone:redrack"},
  449. }
  450. })
  451. -- Blue Rackstone Crafts
  452. minetest.register_craft({
  453. output = "rackstone:bluerack_brick 4",
  454. recipe = {
  455. {"rackstone:bluerack", "rackstone:bluerack"},
  456. {"rackstone:bluerack", "rackstone:bluerack"},
  457. }
  458. })
  459. minetest.register_craft({
  460. output = "rackstone:bluerack_block 9",
  461. recipe = {
  462. {"rackstone:bluerack", "rackstone:bluerack", "rackstone:bluerack"},
  463. {"rackstone:bluerack", "rackstone:bluerack", "rackstone:bluerack"},
  464. {"rackstone:bluerack", "rackstone:bluerack", "rackstone:bluerack"},
  465. }
  466. })
  467. -- Black Rackstone Crafts
  468. minetest.register_craft({
  469. output = "rackstone:brick_black 4",
  470. recipe = {
  471. {"rackstone:blackrack", "rackstone:blackrack"},
  472. {"rackstone:blackrack", "rackstone:blackrack"},
  473. }
  474. })
  475. minetest.register_craft({
  476. output = "rackstone:blackrack_block 9",
  477. recipe = {
  478. {"rackstone:blackrack", "rackstone:blackrack", "rackstone:blackrack"},
  479. {"rackstone:blackrack", "rackstone:blackrack", "rackstone:blackrack"},
  480. {"rackstone:blackrack", "rackstone:blackrack", "rackstone:blackrack"},
  481. }
  482. })
  483. -- Rackstone Crafts
  484. minetest.register_craft({
  485. output = "rackstone:rackstone_brick2 4",
  486. recipe = {
  487. {"rackstone:rackstone", "rackstone:rackstone"},
  488. {"rackstone:rackstone", "rackstone:rackstone"},
  489. }
  490. })
  491. minetest.register_craft({
  492. output = "rackstone:rackstone_block 9",
  493. recipe = {
  494. {"rackstone:rackstone", "rackstone:rackstone", "rackstone:rackstone"},
  495. {"rackstone:rackstone", "rackstone:rackstone", "rackstone:rackstone"},
  496. {"rackstone:rackstone", "rackstone:rackstone", "rackstone:rackstone"},
  497. }
  498. })
  499. minetest.register_craft({
  500. type = "cooking",
  501. output = 'rackstone:tile',
  502. recipe = 'rackstone:nether_grit',
  503. cooktime = 20,
  504. })
  505. minetest.register_craft({
  506. type = "cooking",
  507. output = 'rackstone:rackstone',
  508. recipe = 'rackstone:cobble',
  509. cooktime = 6,
  510. })
  511. minetest.register_craft({
  512. type = "cooking",
  513. output = 'rackstone:redrack',
  514. recipe = 'rackstone:redrack_cobble',
  515. cooktime = 3,
  516. })
  517. minetest.register_craft({
  518. type = "grinding",
  519. output = 'rackstone:dauthsand',
  520. recipe = 'rackstone:redrack',
  521. time = 20,
  522. })
  523. minetest.register_craft({
  524. type = "crushing",
  525. output = 'rackstone:nether_grit',
  526. recipe = 'rackstone:redrack',
  527. time = 60*1.0,
  528. })
  529. minetest.register_craft({
  530. type = "crushing",
  531. output = 'rackstone:dauthsand',
  532. recipe = 'rackstone:nether_grit',
  533. time = 60*1.0,
  534. })
  535. -- Rackstone
  536. stairs.register_stair_and_slab(
  537. "rackstone",
  538. "rackstone:rackstone",
  539. {cracky=1},
  540. {"rackstone_rackstone.png"},
  541. "Rackstone",
  542. default.node_sound_stone_defaults()
  543. )
  544. stairs.register_stair_and_slab(
  545. "rackstone_cobble",
  546. "rackstone:cobble",
  547. {cracky=2},
  548. {"rackstone_rackstone_cobble.png"},
  549. "Rackstone Cobble",
  550. default.node_sound_stone_defaults()
  551. )
  552. -- Rackstone Block
  553. stairs.register_stair_and_slab(
  554. "rackstone_block",
  555. "rackstone:rackstone_block",
  556. {cracky=1},
  557. {"rackstone_rackstone_block.png"},
  558. "Rackstone Block",
  559. default.node_sound_stone_defaults()
  560. )
  561. -- Rackstone Brick
  562. stairs.register_stair_and_slab(
  563. "rackstone_brick2",
  564. "rackstone:rackstone_brick2",
  565. {cracky=1},
  566. {"rackstone_rackstone_brick.png"},
  567. "Rackstone Brick",
  568. default.node_sound_stone_defaults()
  569. )
  570. -- Netherack
  571. stairs.register_stair_and_slab(
  572. "redrack",
  573. "rackstone:redrack",
  574. {cracky=3},
  575. {"rackstone_redrack.png"},
  576. "Netherack",
  577. rackstone.rackstone_sounds()
  578. )
  579. stairs.register_stair_and_slab(
  580. "redrack_cobble",
  581. "rackstone:redrack_cobble",
  582. {cracky=3},
  583. {"rackstone_redrack_cobble.png"},
  584. "Cobbled Netherack",
  585. rackstone.rackstone_sounds()
  586. )
  587. -- Netherack Block
  588. stairs.register_stair_and_slab(
  589. "redrack_block",
  590. "rackstone:redrack_block",
  591. {cracky=3},
  592. {"rackstone_redrack_block.png"},
  593. "Netherack Block",
  594. default.node_sound_stone_defaults()
  595. )
  596. -- Netherack Brick
  597. stairs.register_stair_and_slab(
  598. "rackstone_brick",
  599. "rackstone:brick",
  600. {cracky=2},
  601. {"rackstone_brick.png"},
  602. "Rackstone Brick",
  603. default.node_sound_stone_defaults()
  604. )
  605. -- Blue Rackstone
  606. stairs.register_stair_and_slab(
  607. "bluerack",
  608. "rackstone:bluerack",
  609. {cracky=2},
  610. {"rackstone_bluerack.png"},
  611. "Blue Rackstone",
  612. rackstone.rackstone_sounds()
  613. )
  614. -- Blue Rackstone Block
  615. stairs.register_stair_and_slab(
  616. "bluerack_block",
  617. "rackstone:bluerack_block",
  618. {cracky=2},
  619. {"rackstone_bluerack.png"},
  620. "Blue Rackstone Block",
  621. default.node_sound_stone_defaults()
  622. )
  623. -- Blue Rackstone Brick
  624. stairs.register_stair_and_slab(
  625. "bluerack_brick",
  626. "rackstone:bluerack_brick",
  627. {cracky=2},
  628. {"rackstone_bluerack_brick.png"},
  629. "Blue Rackstone Brick",
  630. default.node_sound_stone_defaults()
  631. )
  632. -- Blackrack
  633. stairs.register_stair_and_slab(
  634. "blackrack",
  635. "rackstone:blackrack",
  636. {cracky=2},
  637. {"rackstone_blackrack.png"},
  638. "Black Rackstone",
  639. rackstone.rackstone_sounds()
  640. )
  641. -- Black Rackstone Block
  642. stairs.register_stair_and_slab(
  643. "blackrack_block",
  644. "rackstone:blackrack_block",
  645. {cracky=2},
  646. {"rackstone_blackrack_block.png"},
  647. "Black Rackstone Block",
  648. default.node_sound_stone_defaults()
  649. )
  650. -- Black Rackstone Brick
  651. stairs.register_stair_and_slab(
  652. "rackstone_brick_black",
  653. "rackstone:brick_black",
  654. {cracky=2},
  655. {"rackstone_brick_black.png"},
  656. "Black Rackstone Brick",
  657. default.node_sound_stone_defaults()
  658. )
  659. -- These nodes appear only in the Outback.
  660. -- They have enhanced drops in order to help new players.
  661. minetest.register_node("rackstone:rackstone_with_coal", {
  662. description = "Rackstone With Coal",
  663. tiles = {"rackstone_rackstone.png^default_mineral_coal.png"},
  664. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  665. sounds = default.node_sound_stone_defaults(),
  666. drop = "default:coal_lump 3",
  667. silverpick_drop = true,
  668. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  669. })
  670. minetest.register_node("rackstone:rackstone_with_iron", {
  671. description = "Rackstone With Iron",
  672. tiles = {"rackstone_rackstone.png^default_mineral_iron.png"},
  673. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  674. sounds = default.node_sound_stone_defaults(),
  675. drop = "default:iron_lump 3",
  676. silverpick_drop = true,
  677. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  678. })
  679. minetest.register_node("rackstone:rackstone_with_copper", {
  680. description = "Rackstone With Copper",
  681. tiles = {"rackstone_rackstone.png^default_mineral_copper.png"},
  682. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  683. sounds = default.node_sound_stone_defaults(),
  684. drop = "default:copper_lump 2",
  685. silverpick_drop = true,
  686. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  687. })
  688. minetest.register_node("rackstone:rackstone_with_gold", {
  689. description = "Rackstone With Gold",
  690. tiles = {"rackstone_rackstone.png^default_mineral_gold.png"},
  691. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  692. sounds = default.node_sound_stone_defaults(),
  693. drop = "default:gold_lump 2",
  694. silverpick_drop = true,
  695. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  696. })
  697. minetest.register_node("rackstone:rackstone_with_diamond", {
  698. description = "Rackstone With Diamond",
  699. tiles = {"rackstone_rackstone.png^default_mineral_diamond.png"},
  700. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  701. sounds = default.node_sound_stone_defaults(),
  702. drop = "default:diamond 2",
  703. silverpick_drop = true,
  704. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  705. })
  706. minetest.register_node("rackstone:rackstone_with_mese", {
  707. description = "Rackstone With Mese",
  708. tiles = {"rackstone_rackstone.png^default_mineral_mese.png"},
  709. groups = utility.dig_groups("mineral", {rackstone=1, netherack=1}),
  710. sounds = default.node_sound_stone_defaults(),
  711. drop = "default:mese_crystal 2",
  712. silverpick_drop = true,
  713. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  714. })
  715. minetest.register_node("rackstone:rackstone_with_meat", {
  716. description = "Rackstone With Unidentified Meat",
  717. tiles = {"rackstone_rackstone.png^rackstone_meat.png"},
  718. groups = utility.dig_groups("netherack", {rackstone=1, netherack=1}),
  719. sounds = default.node_sound_stone_defaults(),
  720. drop = "mobs:meat_raw 4",
  721. silverpick_drop = true,
  722. movement_speed_multiplier = default.SLOW_SPEED_NETHER,
  723. })