nodes.lua 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  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:nether_basalt_with_huntite', {
  93. description = 'Netherrack with Huntite',
  94. tiles = {
  95. "epic_huntite_basalt.png",
  96. "nether_basalt.png",
  97. "nether_basalt_side.png^epic_huntite_ore.png",
  98. },
  99. groups = {cracky = 1, stone = 1},
  100. drop = 'epic:huntite 2',
  101. sounds = default.node_sound_stone_defaults(),
  102. })
  103. minetest.register_node('epic:tree_ash', {
  104. description = 'Burnt tree',
  105. paramtype2 = 'facedir',
  106. tiles = {'epic_tree_ash_top.png', 'epic_tree_ash_top.png', 'epic_tree_ash_side.png'},
  107. groups = {choppy = 3, oddly_breakable_by_hand = 3},
  108. on_place = minetest.rotate_node
  109. })
  110. minetest.register_node('epic:wood_ash', {
  111. description = 'Burnt wood',
  112. tiles = {'epic_wood_ash.png'},
  113. groups = {choppy = 3, oddly_breakable_by_hand = 3},
  114. })
  115. minetest.register_node('epic:scorched_dirt', {
  116. description = 'Scorched dirt',
  117. tiles = {{name='epic_scorched_dirt.png', align_style='world', scale=4}},
  118. 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',
  119. groups = {crumbly = 3},
  120. })
  121. minetest.register_node('epic:stone_with_salt', {
  122. description = 'Salt crystals',
  123. tiles = {'default_stone.png^epic_salt_ore.png'},
  124. is_ground_content = true,
  125. sounds = default.node_sound_stone_defaults(),
  126. drop = 'epic:salt_lump',
  127. groups = {cracky = 3},
  128. })
  129. minetest.register_node('epic:desert_stone_with_nitre', {
  130. description = 'Nitre ore',
  131. tiles = {'default_desert_stone.png^epic_nitre_ore.png'},
  132. is_ground_content = true,
  133. sounds = default.node_sound_stone_defaults(),
  134. drop = 'epic:potassium_nitrate',
  135. groups = {cracky = 2},
  136. })
  137. minetest.register_node('epic:mineral_sulfur', {
  138. description = 'Sulfur Ore',
  139. tiles = {'default_stone.png^epic_mineral_sulfur.png'},
  140. is_ground_content = true,
  141. groups = {cracky=2},
  142. sounds = default.node_sound_stone_defaults(),
  143. drop = 'epic:sulfur_lump',
  144. })
  145. minetest.register_node('epic:metal_lead', {
  146. description = 'Lead Ore',
  147. tiles = {'default_stone.png^epic_metal_lead.png'},
  148. is_ground_content = true,
  149. groups = {cracky=2},
  150. sounds = default.node_sound_stone_defaults(),
  151. drop = 'epic:lead_lump',
  152. })
  153. minetest.register_node('epic:desert_garnet', {
  154. description = 'Garnet crystal',
  155. tiles = {'default_desert_stone.png^epic_garnet_ore.png'},
  156. is_ground_content = true,
  157. sounds = default.node_sound_stone_defaults(),
  158. drop = 'epic:garnet',
  159. groups = {cracky = 1, level = 2},
  160. })
  161. minetest.register_node('epic:stone_garnet', {
  162. description = 'Garnet crystal',
  163. tiles = {'default_stone.png^epic_garnet_ore.png'},
  164. is_ground_content = true,
  165. sounds = default.node_sound_stone_defaults(),
  166. drop = 'epic:garnet',
  167. groups = {cracky = 1, level = 2},
  168. })
  169. minetest.register_node('epic:desert_stone_with_coal', {
  170. description = 'Coal Ore',
  171. tiles = {'default_desert_stone.png^default_mineral_coal.png'},
  172. groups = {cracky = 3},
  173. drop = 'default:coal_lump',
  174. sounds = default.node_sound_stone_defaults(),
  175. })
  176. minetest.register_node('epic:desert_stone_with_iron', {
  177. description = 'Iron Ore',
  178. tiles = {'default_desert_stone.png^default_mineral_iron.png'},
  179. groups = {cracky = 2},
  180. drop = 'default:iron_lump',
  181. sounds = default.node_sound_stone_defaults(),
  182. })
  183. minetest.register_node('epic:bloodstone_ore', {
  184. description = 'Bloodstone Ore',
  185. tiles = {'default_stone.png^epic_bloodstone_ore.png'},
  186. is_ground_content = true,
  187. sounds = default.node_sound_stone_defaults(),
  188. drop = 'epic:bloodstone',
  189. groups = {cracky = 2, level = 2},
  190. })
  191. minetest.register_node('epic:3grass_brick', {
  192. description = 'Grass with Stone Brick',
  193. drawtype = 'mesh',
  194. mesh = 'epic_triangle.obj',
  195. tiles = {'default_stone_brick.png', 'default_grass.png', 'default_dirt.png^default_grass_side.png'},
  196. paramtype = 'light',
  197. paramtype2 = 'facedir',
  198. groups = {cracky = 2, crumbly = 2},
  199. })
  200. minetest.register_node('epic:3brick_grass', {
  201. description = 'Stone Brick with Grass',
  202. drawtype = 'mesh',
  203. mesh = 'epic_triangle.obj',
  204. tiles = {'default_grass.png', 'default_stone_brick.png', 'default_dirt.png^default_grass_side.png'},
  205. paramtype = 'light',
  206. paramtype2 = 'facedir',
  207. groups = {cracky = 2, crumbly = 2},
  208. })
  209. minetest.register_node('epic:3dirt_cobble', {
  210. description = 'Dirt with Cobble',
  211. drawtype = 'mesh',
  212. mesh = 'epic_triangle.obj',
  213. tiles = {'default_dirt.png', 'default_cobble.png', 'default_dirt.png'},
  214. paramtype = 'light',
  215. paramtype2 = 'facedir',
  216. groups = {cracky = 2, crumbly = 2},
  217. })
  218. minetest.register_node('epic:3cobble_dirt', {
  219. description = 'Cobble with Dirt',
  220. drawtype = 'mesh',
  221. mesh = 'epic_triangle.obj',
  222. tiles = {'default_cobble.png', 'default_dirt.png', 'default_dirt.png'},
  223. paramtype = 'light',
  224. paramtype2 = 'facedir',
  225. groups = {cracky = 2, crumbly = 2},
  226. })
  227. minetest.register_node('epic:poison', {
  228. description = 'Animal poison',
  229. drawtype = 'signlike',
  230. tiles = {'epic_animal_poison.png'},
  231. inventory_image = 'epic_animal_poison.png',
  232. wield_image = 'epic_animal_poison.png',
  233. paramtype = 'light',
  234. paramtype2 = 'wallmounted',
  235. sunlight_propagates = true,
  236. selection_box = {
  237. type = 'fixed',
  238. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  239. },
  240. collision_box = {
  241. type = 'fixed',
  242. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  243. },
  244. groups = {dig_immediate = 3, attached_node = 1},
  245. })
  246. local function flood_flame(pos, oldnode, newnode)
  247. -- Play flame extinguish sound if liquid is not an 'igniter'
  248. local nodedef = minetest.registered_items[newnode.name]
  249. if not (nodedef and nodedef.groups and
  250. nodedef.groups.igniter and nodedef.groups.igniter > 0) then
  251. minetest.sound_play('fire_extinguish_flame',
  252. {pos = pos, max_hear_distance = 16, gain = 0.15})
  253. end
  254. -- Remove the flame
  255. return false
  256. end
  257. minetest.register_node('epic:permanent_flame', {
  258. description = 'Permanent Flame',
  259. drawtype = 'firelike',
  260. tiles = {
  261. {
  262. name = 'fire_basic_flame_animated.png',
  263. animation = {
  264. type = 'vertical_frames',
  265. aspect_w = 16,
  266. aspect_h = 16,
  267. length = 1
  268. },
  269. },
  270. },
  271. inventory_image = 'fire_basic_flame.png',
  272. paramtype = 'light',
  273. light_source = 13,
  274. walkable = false,
  275. buildable_to = true,
  276. sunlight_propagates = true,
  277. floodable = true,
  278. damage_per_second = 4,
  279. groups = {dig_immediate = 3},
  280. drop = '',
  281. on_flood = flood_flame,
  282. })
  283. minetest.register_node('epic:empty', {
  284. description = 'empty node :P',
  285. drawtype = 'airlike',
  286. paramtype = 'light',
  287. walkable = true,
  288. pointable = false,
  289. diggable = false,
  290. drop = '',
  291. groups = {not_in_creative_inventory = 1, empty_node=1},
  292. on_blast = function() end,
  293. tiles = {'epic_blank.png'},
  294. node_box = {
  295. type = 'fixed',
  296. fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32}
  297. },
  298. })
  299. minetest.register_node('epic:acacia_bark', {
  300. description = 'Acacia bark',
  301. tiles = {'default_acacia_tree.png'},
  302. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  303. sounds = default.node_sound_wood_defaults(),
  304. })
  305. minetest.register_node('epic:aspen_bark', {
  306. description = 'Aspen bark',
  307. tiles = {'default_aspen_tree.png'},
  308. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  309. sounds = default.node_sound_wood_defaults(),
  310. })
  311. minetest.register_node('epic:jungle_bark', {
  312. description = 'Jungle bark',
  313. tiles = {'default_jungletree.png'},
  314. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  315. sounds = default.node_sound_wood_defaults(),
  316. })
  317. minetest.register_node('epic:pine_bark', {
  318. description = 'Pine bark',
  319. tiles = {'default_pine_tree.png'},
  320. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  321. sounds = default.node_sound_wood_defaults(),
  322. })
  323. minetest.register_node('epic:tree_bark', {
  324. description = 'Tree bark',
  325. tiles = {'default_tree.png'},
  326. groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
  327. sounds = default.node_sound_wood_defaults(),
  328. })