nodes.lua 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. minetest.register_node('epic:stone', {
  2. description = 'Stone',
  3. tiles = {'default_stone.png'},
  4. groups = {cracky = 2, stone = 1},
  5. drop = {
  6. max_items = 2,
  7. items = {
  8. {items = {'epic:float_crystal_shard'}, rarity = 50,},
  9. {items = {'default:cobble'}},
  10. }
  11. },
  12. sounds = default.node_sound_stone_defaults(),
  13. })
  14. minetest.register_node('epic:border', {
  15. description = 'Invisible Border',
  16. drawtype = 'airlike',
  17. paramtype = 'light',
  18. pointable = false,
  19. groups = {not_in_creative_inventory=1},
  20. })
  21. minetest.register_node('epic:float_stone', {
  22. description = 'Actinolite',
  23. light_source = 3,
  24. tiles = {'epic_actinolite_top.png', 'default_stone.png', 'epic_actinolite_side.png'},
  25. groups = {cracky = 2, stone = 1, level = 4},
  26. drop = 'epic:float_crystal 4',
  27. sounds = default.node_sound_stone_defaults(),
  28. on_timer = function(pos)
  29. local new_pos = ({x=pos.x, y=pos.y+1, z=pos.z})
  30. local abovenode = minetest.get_node(new_pos).name
  31. if abovenode == 'air' then
  32. minetest.set_node(new_pos, {name='epic:float_stone'})
  33. minetest.set_node(pos, {name='air'})
  34. local timer = minetest.get_node_timer(new_pos)
  35. timer:start(1)
  36. end
  37. end,
  38. })
  39. minetest.register_node('epic:floating_base', {
  40. description = 'Laputa',
  41. light_source = 1,
  42. tiles = {'epic_laputa.png'},
  43. groups = {cracky = 2, stone = 1, level = 3, not_in_creative_inventory=1},
  44. drop = {
  45. max_items = 3,
  46. items = {
  47. {items = {'epic:float_crystal 2'}, rarity = 1},
  48. {items = {'epic:float_crystal 3'}, rarity = 3},
  49. {items = {'default:diamond 4'}, rarity = 1},
  50. {items = {'default:diamond 5'}, rarity = 3},
  51. {items = {'default:mese_crystal 4'}, rarity = 1},
  52. {items = {'default:mese_crystal 5'}, rarity = 3},
  53. },
  54. },
  55. sounds = default.node_sound_stone_defaults(),
  56. on_timer = function(pos)
  57. local new_pos = ({x=pos.x, y=pos.y+1, z=pos.z})
  58. local abovenode = minetest.get_node(new_pos).name
  59. if abovenode == 'air' then
  60. minetest.set_node(new_pos, {name='epic:floating_base'})
  61. minetest.set_node(pos, {name='air'})
  62. local timer = minetest.get_node_timer(new_pos)
  63. timer:start(10)
  64. end
  65. end,
  66. on_construct = function(pos)
  67. local timer = minetest.get_node_timer(pos)
  68. timer:start(30)
  69. end,
  70. })
  71. minetest.register_node('epic:stone_with_titanium', {
  72. description = 'Netherrack with Titanium',
  73. tiles = {'nether_rack.png^epic_titanium_ore.png'},
  74. groups = {cracky = 1, stone = 1},
  75. drop = 'epic:titanium_lump',
  76. sounds = default.node_sound_stone_defaults(),
  77. })
  78. minetest.register_node('epic:nether_with_gold', {
  79. description = 'Netherrack with Gold',
  80. tiles = {'nether_rack.png^default_mineral_gold.png'},
  81. groups = {cracky = 1, stone = 1},
  82. drop = 'default:gold_lump 2',
  83. sounds = default.node_sound_stone_defaults(),
  84. })
  85. minetest.register_node('epic:nether_with_diamond', {
  86. description = 'Netherrack with Diamond',
  87. tiles = {'nether_rack.png^default_mineral_diamond.png'},
  88. groups = {cracky = 1, stone = 1},
  89. drop = 'default:diamond 2',
  90. sounds = default.node_sound_stone_defaults(),
  91. })
  92. minetest.register_node('epic:tree_ash', {
  93. description = 'Burnt tree',
  94. paramtype2 = 'facedir',
  95. tiles = {'epic_tree_ash_top.png', 'epic_tree_ash_top.png', 'epic_tree_ash_side.png'},
  96. groups = {choppy = 3, oddly_breakable_by_hand = 3},
  97. on_place = minetest.rotate_node
  98. })
  99. minetest.register_node('epic:wood_ash', {
  100. description = 'Burnt wood',
  101. tiles = {'epic_wood_ash.png'},
  102. groups = {choppy = 3, oddly_breakable_by_hand = 3},
  103. })
  104. minetest.register_node('epic:scorched_dirt', {
  105. description = 'Scorched dirt',
  106. tiles = {{name='epic_scorched_dirt.png', align_style='world', scale=4}},
  107. inventory_image = '[inventorycube{epic_scorched_dirt.png&[sheet:4x4:1,1{epic_scorched_dirt.png&[sheet:4x4:1,1{epic_scorched_dirt.png&[sheet:4x4:1,1',
  108. groups = {crumbly = 3},
  109. })
  110. minetest.register_node('epic:stone_with_salt', {
  111. description = 'Salt crystals',
  112. tiles = {'default_stone.png^epic_salt_ore.png'},
  113. is_ground_content = true,
  114. sounds = default.node_sound_stone_defaults(),
  115. drop = 'epic:salt_lump',
  116. groups = {cracky = 3},
  117. })
  118. minetest.register_node('epic:desert_stone_with_nitre', {
  119. description = 'Nitre ore',
  120. tiles = {'default_desert_stone.png^epic_nitre_ore.png'},
  121. is_ground_content = true,
  122. sounds = default.node_sound_stone_defaults(),
  123. drop = 'epic:potassium_nitrate',
  124. groups = {cracky = 2},
  125. })
  126. minetest.register_node('epic:mineral_sulfur', {
  127. description = 'Sulfur Ore',
  128. tiles = {'default_stone.png^epic_mineral_sulfur.png'},
  129. is_ground_content = true,
  130. groups = {cracky=2},
  131. sounds = default.node_sound_stone_defaults(),
  132. drop = 'epic:sulfur_lump',
  133. })
  134. minetest.register_node('epic:metal_lead', {
  135. description = 'Lead Ore',
  136. tiles = {'default_stone.png^epic_metal_lead.png'},
  137. is_ground_content = true,
  138. groups = {cracky=2},
  139. sounds = default.node_sound_stone_defaults(),
  140. drop = 'epic:lead_lump',
  141. })
  142. minetest.register_node('epic:desert_garnet', {
  143. description = 'Garnet crystal',
  144. tiles = {'default_desert_stone.png^epic_garnet_ore.png'},
  145. is_ground_content = true,
  146. sounds = default.node_sound_stone_defaults(),
  147. drop = 'epic:garnet',
  148. groups = {cracky = 1, level = 2},
  149. })
  150. minetest.register_node('epic:stone_garnet', {
  151. description = 'Garnet crystal',
  152. tiles = {'default_stone.png^epic_garnet_ore.png'},
  153. is_ground_content = true,
  154. sounds = default.node_sound_stone_defaults(),
  155. drop = 'epic:garnet',
  156. groups = {cracky = 1, level = 2},
  157. })
  158. minetest.register_node('epic:desert_stone_with_coal', {
  159. description = 'Coal Ore',
  160. tiles = {'default_desert_stone.png^default_mineral_coal.png'},
  161. groups = {cracky = 3},
  162. drop = 'default:coal_lump',
  163. sounds = default.node_sound_stone_defaults(),
  164. })
  165. minetest.register_node('epic:desert_stone_with_iron', {
  166. description = 'Iron Ore',
  167. tiles = {'default_desert_stone.png^default_mineral_iron.png'},
  168. groups = {cracky = 2},
  169. drop = 'default:iron_lump',
  170. sounds = default.node_sound_stone_defaults(),
  171. })
  172. minetest.register_node('epic:bloodstone_ore', {
  173. description = 'Bloodstone Ore',
  174. tiles = {'default_stone.png^epic_bloodstone_ore.png'},
  175. is_ground_content = true,
  176. sounds = default.node_sound_stone_defaults(),
  177. drop = 'epic:bloodstone',
  178. groups = {cracky = 2, level = 2},
  179. })
  180. minetest.register_node('epic:3grass_brick', {
  181. description = 'Grass with Stone Brick',
  182. drawtype = 'mesh',
  183. mesh = 'epic_triangle.obj',
  184. tiles = {'default_stone_brick.png', 'default_grass.png', 'default_dirt.png^default_grass_side.png'},
  185. paramtype = 'light',
  186. paramtype2 = 'facedir',
  187. groups = {cracky = 2, crumbly = 2},
  188. })
  189. minetest.register_node('epic:3brick_grass', {
  190. description = 'Stone Brick with Grass',
  191. drawtype = 'mesh',
  192. mesh = 'epic_triangle.obj',
  193. tiles = {'default_grass.png', 'default_stone_brick.png', 'default_dirt.png^default_grass_side.png'},
  194. paramtype = 'light',
  195. paramtype2 = 'facedir',
  196. groups = {cracky = 2, crumbly = 2},
  197. })
  198. minetest.register_node('epic:3dirt_cobble', {
  199. description = 'Dirt with Cobble',
  200. drawtype = 'mesh',
  201. mesh = 'epic_triangle.obj',
  202. tiles = {'default_dirt.png', 'default_cobble.png', 'default_dirt.png'},
  203. paramtype = 'light',
  204. paramtype2 = 'facedir',
  205. groups = {cracky = 2, crumbly = 2},
  206. })
  207. minetest.register_node('epic:3cobble_dirt', {
  208. description = 'Cobble with Dirt',
  209. drawtype = 'mesh',
  210. mesh = 'epic_triangle.obj',
  211. tiles = {'default_cobble.png', 'default_dirt.png', 'default_dirt.png'},
  212. paramtype = 'light',
  213. paramtype2 = 'facedir',
  214. groups = {cracky = 2, crumbly = 2},
  215. })
  216. minetest.register_node('epic:poison', {
  217. description = 'Animal poison',
  218. drawtype = 'signlike',
  219. tiles = {'epic_animal_poison.png'},
  220. inventory_image = 'epic_animal_poison.png',
  221. wield_image = 'epic_animal_poison.png',
  222. paramtype = 'light',
  223. paramtype2 = 'wallmounted',
  224. sunlight_propagates = true,
  225. selection_box = {
  226. type = 'fixed',
  227. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  228. },
  229. collision_box = {
  230. type = 'fixed',
  231. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  232. },
  233. groups = {dig_immediate = 3, attached_node = 1},
  234. })
  235. local function flood_flame(pos, oldnode, newnode)
  236. -- Play flame extinguish sound if liquid is not an 'igniter'
  237. local nodedef = minetest.registered_items[newnode.name]
  238. if not (nodedef and nodedef.groups and
  239. nodedef.groups.igniter and nodedef.groups.igniter > 0) then
  240. minetest.sound_play('fire_extinguish_flame',
  241. {pos = pos, max_hear_distance = 16, gain = 0.15})
  242. end
  243. -- Remove the flame
  244. return false
  245. end
  246. minetest.register_node('epic:permanent_flame', {
  247. description = 'Permanent Flame',
  248. drawtype = 'firelike',
  249. tiles = {
  250. {
  251. name = 'fire_basic_flame_animated.png',
  252. animation = {
  253. type = 'vertical_frames',
  254. aspect_w = 16,
  255. aspect_h = 16,
  256. length = 1
  257. },
  258. },
  259. },
  260. inventory_image = 'fire_basic_flame.png',
  261. paramtype = 'light',
  262. light_source = 13,
  263. walkable = false,
  264. buildable_to = true,
  265. sunlight_propagates = true,
  266. floodable = true,
  267. damage_per_second = 4,
  268. groups = {dig_immediate = 3},
  269. drop = '',
  270. on_flood = flood_flame,
  271. })
  272. minetest.register_node('epic:empty', {
  273. description = 'empty node :P',
  274. drawtype = 'airlike',
  275. paramtype = 'light',
  276. walkable = true,
  277. pointable = false,
  278. diggable = false,
  279. drop = '',
  280. groups = {not_in_creative_inventory = 1, empty_node=1},
  281. on_blast = function() end,
  282. tiles = {'epic_blank.png'},
  283. node_box = {
  284. type = 'fixed',
  285. fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32}
  286. },
  287. })
  288. minetest.register_node('epic:acacia_bark', {
  289. description = 'Acacia bark',
  290. tiles = {'default_acacia_tree.png'},
  291. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  292. sounds = default.node_sound_wood_defaults(),
  293. })
  294. minetest.register_node('epic:aspen_bark', {
  295. description = 'Aspen bark',
  296. tiles = {'default_aspen_tree.png'},
  297. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  298. sounds = default.node_sound_wood_defaults(),
  299. })
  300. minetest.register_node('epic:jungle_bark', {
  301. description = 'Jungle bark',
  302. tiles = {'default_jungletree.png'},
  303. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  304. sounds = default.node_sound_wood_defaults(),
  305. })
  306. minetest.register_node('epic:pine_bark', {
  307. description = 'Pine bark',
  308. tiles = {'default_pine_tree.png'},
  309. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  310. sounds = default.node_sound_wood_defaults(),
  311. })
  312. minetest.register_node('epic:tree_bark', {
  313. description = 'Tree bark',
  314. tiles = {'default_tree.png'},
  315. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  316. sounds = default.node_sound_wood_defaults(),
  317. })
  318. stairsplus:register_all('epic', 'burnt_wood', 'epic:wood_ash', {
  319. description='Burnt Wood',
  320. groups = {choppy = 3, oddly_breakable_by_hand = 3, not_in_creative_inventory=1},
  321. tiles={'epic_wood_ash.png'},
  322. })
  323. stairsplus:register_all('ocean', 'prismarine', 'ocean:prismarine', {
  324. description='Prismarine',
  325. groups={cracky=1, not_in_creative_inventory=1},
  326. tiles={'prismarine.png'},
  327. })
  328. stairsplus:register_all('epic', 'acacia_bark', 'epic:acacia_bark', {
  329. description='Acacia',
  330. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  331. tiles={'default_acacia_tree.png'},
  332. })
  333. stairsplus:register_all('epic', 'aspen_bark', 'epic:aspen_bark', {
  334. description='Aspen',
  335. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  336. tiles={'default_aspen_tree.png'},
  337. })
  338. stairsplus:register_all('epic', 'jungle_bark', 'epic:jungle_bark', {
  339. description='Jungle',
  340. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  341. tiles={'default_jungletree.png'},
  342. })
  343. stairsplus:register_all('epic', 'pine_bark', 'epic:pine_bark', {
  344. description='Pine',
  345. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  346. tiles={'default_pine_tree.png'},
  347. })
  348. stairsplus:register_all('epic', 'tree_bark', 'epic:tree_bark', {
  349. description='Tree',
  350. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  351. tiles={'default_tree.png'},
  352. })
  353. stairsplus:register_all('epic', 'wood_ash', 'epic:wood_ash', {
  354. description='Burnt wood',
  355. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  356. tiles={'epic_wood_ash.png'},
  357. })
  358. stairsplus:register_all('epic', 'tree_ash', 'epic:tree_ash', {
  359. description='Burnt tree',
  360. groups={choppy = 2, oddly_breakable_by_hand = 1, not_in_creative_inventory=1},
  361. tiles={'epic_tree_ash_top.png', 'epic_tree_ash_side.png'},
  362. })
  363. stairsplus:register_all('asteroid', 'stone', 'asteroid:stone', {
  364. description='Asteroid Stone',
  365. groups={cracky = 2, not_in_creative_inventory=1},
  366. tiles={'asteroid_stone.png'},
  367. })
  368. stairsplus:register_all('asteroid', 'stone_brick', 'asteroid:stone_brick', {
  369. description='Asteroid Stone Brick',
  370. groups={cracky = 2, not_in_creative_inventory=1},
  371. tiles={'asteroid_stone_brick.png'},
  372. })
  373. stairsplus:register_all('caverealms', 'glow_amethyst', 'caverealms:glow_amethyst', {
  374. description='Glow Amethyst',
  375. groups={cracky = 2, not_in_creative_inventory=1},
  376. tiles={'caverealms_glow_amethyst.png'},
  377. light_source = 10
  378. })
  379. stairsplus:register_all('caverealms', 'glow_crystal', 'caverealms:glow_crystal', {
  380. description='Glow Crystal',
  381. groups={cracky = 2, not_in_creative_inventory=1},
  382. tiles={'caverealms_glow_crystal.png'},
  383. light_source = 10
  384. })
  385. stairsplus:register_all('caverealms', 'glow_emerald', 'caverealms:glow_emerald', {
  386. description='Glow Emerald',
  387. groups={cracky = 2, not_in_creative_inventory=1},
  388. tiles={'caverealms_glow_emerald.png'},
  389. light_source = 10
  390. })
  391. stairsplus:register_all('caverealms', 'glow_ruby', 'caverealms:glow_ruby', {
  392. description='Glow Ruby',
  393. groups={cracky = 2, not_in_creative_inventory=1},
  394. tiles={'caverealms_glow_ruby.png'},
  395. light_source = 10
  396. })
  397. stairsplus:register_all('nether', 'basalt', 'nether:basalt', {
  398. description='Burnt tree',
  399. groups={cracky = 2, not_in_creative_inventory=1},
  400. tiles={'nether_basalt.png', 'nether_basalt_side.png'},
  401. })