init.lua 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  1. -- Baked Clay by TenPlus1
  2. local clay = {
  3. {"natural", "Natural"},
  4. {"white", "White"},
  5. {"grey", "Grey"},
  6. {"black", "Black"},
  7. {"red", "Red"},
  8. {"yellow", "Yellow"},
  9. {"green", "Green"},
  10. {"cyan", "Cyan"},
  11. {"blue", "Blue"},
  12. {"magenta", "Magenta"},
  13. {"orange", "Orange"},
  14. {"violet", "Violet"},
  15. {"brown", "Brown"},
  16. {"pink", "Pink"},
  17. {"dark_grey", "Dark Grey"},
  18. {"dark_green", "Dark Green"}
  19. }
  20. local techcnc_mod = minetest.get_modpath("technic_cnc")
  21. local stairs_mod = minetest.get_modpath("stairs")
  22. local stairsplus_mod = minetest.get_modpath("moreblocks")
  23. and minetest.global_exists("stairsplus")
  24. for _, clay in pairs(clay) do
  25. -- node
  26. minetest.register_node("bakedclay:" .. clay[1], {
  27. description = clay[2] .. " Baked Clay",
  28. tiles = {"baked_clay_" .. clay[1] ..".png"},
  29. groups = {cracky = 3, bakedclay = 1},
  30. sounds = default.node_sound_stone_defaults()
  31. })
  32. -- craft recipe
  33. if clay[1] ~= "natural" then
  34. minetest.register_craft({
  35. output = "bakedclay:" .. clay[1] .. " 8",
  36. recipe = {
  37. {"group:bakedclay", "group:bakedclay", "group:bakedclay"},
  38. {"group:bakedclay", "dye:" .. clay[1], "group:bakedclay"},
  39. {"group:bakedclay", "group:bakedclay", "group:bakedclay"}
  40. }
  41. })
  42. end
  43. -- stairs plus
  44. if stairsplus_mod then
  45. stairsplus:register_all("bakedclay", "baked_clay_" .. clay[1],
  46. "bakedclay:" .. clay[1], {
  47. description = clay[2] .. " Baked Clay",
  48. tiles = {"baked_clay_" .. clay[1] .. ".png"},
  49. groups = {cracky = 3},
  50. sounds = default.node_sound_stone_defaults()
  51. })
  52. stairsplus:register_alias_all("bakedclay", clay[1],
  53. "bakedclay", "baked_clay_" .. clay[1])
  54. minetest.register_alias("stairs:slab_bakedclay_".. clay[1],
  55. "bakedclay:slab_baked_clay_" .. clay[1])
  56. minetest.register_alias("stairs:stair_bakedclay_".. clay[1],
  57. "bakedclay:stair_baked_clay_" .. clay[1])
  58. -- stairs redo
  59. elseif stairs_mod and stairs.mod then
  60. stairs.register_all("bakedclay_" .. clay[1], "bakedclay:" .. clay[1],
  61. {cracky = 3},
  62. {"baked_clay_" .. clay[1] .. ".png"},
  63. clay[2] .. " Baked Clay",
  64. default.node_sound_stone_defaults())
  65. -- default stairs
  66. elseif stairs_mod then
  67. stairs.register_stair_and_slab("bakedclay_".. clay[1], "bakedclay:".. clay[1],
  68. {cracky = 3},
  69. {"baked_clay_" .. clay[1] .. ".png"},
  70. clay[2] .. " Baked Clay Stair",
  71. clay[2] .. " Baked Clay Slab",
  72. default.node_sound_stone_defaults())
  73. end
  74. -- register bakedclay for use in technic_cnc mod
  75. if techcnc_mod then
  76. technic_cnc.register_all("bakedclay:" .. clay[1],
  77. {cracky = 3, not_in_creative_inventory = 1},
  78. {"baked_clay_" .. clay[1] .. ".png"},
  79. clay[2] .. " Baked Clay")
  80. end
  81. end
  82. -- Terracotta blocks (textures by D3monPixel, thanks for use :)
  83. for _, clay in pairs(clay) do
  84. if clay[1] ~= "natural" then
  85. local texture = "baked_clay_terracotta_" .. clay[1] ..".png"
  86. minetest.register_node("bakedclay:terracotta_" .. clay[1], {
  87. description = clay[2] .. " Glazed Terracotta",
  88. tiles = {
  89. texture .. "",
  90. texture .. "",
  91. texture .. "^[transformR180",
  92. texture .. "",
  93. texture .. "^[transformR270",
  94. texture .. "^[transformR90",
  95. },
  96. paramtype2 = "facedir",
  97. groups = {cracky = 3, terracotta = 1},
  98. sounds = default.node_sound_stone_defaults(),
  99. on_place = minetest.rotate_node
  100. })
  101. minetest.register_craft({
  102. type = "cooking",
  103. output = "bakedclay:terracotta_" .. clay[1],
  104. recipe = "bakedclay:" .. clay[1]
  105. })
  106. end
  107. end
  108. minetest.register_alias("bakedclay:terracotta_light_blue", "bakedclay:terracotta_cyan")
  109. -- cook clay block into white baked clay
  110. minetest.register_craft({
  111. type = "cooking",
  112. output = "bakedclay:natural",
  113. recipe = "default:clay",
  114. })
  115. -- register a few extra dye colour options
  116. minetest.register_craft( {
  117. type = "shapeless",
  118. output = "dye:dark_grey 3",
  119. recipe = {"dye:black", "dye:black", "dye:white"}
  120. })
  121. minetest.register_craft( {
  122. type = "shapeless",
  123. output = "dye:green 4",
  124. recipe = {"default:cactus"}
  125. })
  126. minetest.register_craft( {
  127. type = "shapeless",
  128. output = "dye:brown 4",
  129. recipe = {"default:dry_shrub"}
  130. })
  131. -- only add light grey recipe if unifieddye mod isnt present (conflict)
  132. if not minetest.get_modpath("unifieddyes") then
  133. minetest.register_craft( {
  134. type = "shapeless",
  135. output = "dye:grey 3",
  136. recipe = {"dye:black", "dye:white", "dye:white"}
  137. })
  138. end
  139. -- 2x2 red baked clay makes 16x clay brick
  140. minetest.register_craft( {
  141. output = "default:clay_brick 16",
  142. recipe = {
  143. {"bakedclay:red", "bakedclay:red"},
  144. {"bakedclay:red", "bakedclay:red"},
  145. }
  146. })
  147. -- register some new flowers to fill in missing dye colours
  148. -- flower registration (borrowed from default game)
  149. local function add_simple_flower(name, desc, box, f_groups)
  150. f_groups.snappy = 3
  151. f_groups.flower = 1
  152. f_groups.flora = 1
  153. f_groups.attached_node = 1
  154. minetest.register_node("bakedclay:" .. name, {
  155. description = desc,
  156. drawtype = "plantlike",
  157. waving = 1,
  158. tiles = {"baked_clay_" .. name .. ".png"},
  159. inventory_image = "baked_clay_" .. name .. ".png",
  160. wield_image = "baked_clay_" .. name .. ".png",
  161. sunlight_propagates = true,
  162. paramtype = "light",
  163. walkable = false,
  164. buildable_to = true,
  165. stack_max = 99,
  166. groups = f_groups,
  167. sounds = default.node_sound_leaves_defaults(),
  168. selection_box = {
  169. type = "fixed",
  170. fixed = box
  171. }
  172. })
  173. end
  174. local flowers = {
  175. {"delphinium", "Blue Delphinium",
  176. {-0.15, -0.5, -0.15, 0.15, 0.3, 0.15}, {color_cyan = 1}},
  177. {"thistle", "Thistle",
  178. {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_magenta = 1}},
  179. {"lazarus", "Lazarus Bell",
  180. {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_pink = 1}},
  181. {"mannagrass", "Reed Mannagrass",
  182. {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_dark_green = 1}}
  183. }
  184. for _,item in pairs(flowers) do
  185. add_simple_flower(unpack(item))
  186. end
  187. -- mapgen for new flowers
  188. minetest.register_decoration({
  189. deco_type = "simple",
  190. place_on = {"default:dirt_with_grass"},
  191. sidelen = 16,
  192. noise_params = {
  193. offset = 0,
  194. scale = 0.004,
  195. spread = {x = 100, y = 100, z = 100},
  196. seed = 7133,
  197. octaves = 3,
  198. persist = 0.6
  199. },
  200. y_min = 10,
  201. y_max = 90,
  202. decoration = "bakedclay:delphinium"
  203. })
  204. minetest.register_decoration({
  205. deco_type = "simple",
  206. place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"},
  207. sidelen = 16,
  208. noise_params = {
  209. offset = 0,
  210. scale = 0.004,
  211. spread = {x = 100, y = 100, z = 100},
  212. seed = 7134,
  213. octaves = 3,
  214. persist = 0.6
  215. },
  216. y_min = 15,
  217. y_max = 90,
  218. decoration = "bakedclay:thistle"
  219. })
  220. minetest.register_decoration({
  221. deco_type = "simple",
  222. place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"},
  223. sidelen = 16,
  224. noise_params = {
  225. offset = 0,
  226. scale = 0.01,
  227. spread = {x = 100, y = 100, z = 100},
  228. seed = 7135,
  229. octaves = 3,
  230. persist = 0.6
  231. },
  232. y_min = 1,
  233. y_max = 90,
  234. decoration = "bakedclay:lazarus",
  235. spawn_by = "default:jungletree",
  236. num_spawn_by = 1
  237. })
  238. minetest.register_decoration({
  239. deco_type = "simple",
  240. place_on = {"default:dirt_with_grass", "default:sand"},
  241. sidelen = 16,
  242. noise_params = {
  243. offset = 0,
  244. scale = 0.009,
  245. spread = {x = 100, y = 100, z = 100},
  246. seed = 7136,
  247. octaves = 3,
  248. persist = 0.6
  249. },
  250. y_min = 1,
  251. y_max = 15,
  252. decoration = "bakedclay:mannagrass",
  253. spawn_by = "group:water",
  254. num_spawn_by = 1
  255. })
  256. -- lucky blocks
  257. if minetest.get_modpath("lucky_block") then
  258. local p = "bakedclay:"
  259. lucky_block:add_blocks({
  260. {"dro", {"bakedclay:"}, 10, true},
  261. {"fal", {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green",
  262. p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange",
  263. p.."pink", p.."red", p.."violet", p.."white", p.."yellow", p.."natural"}, 0},
  264. {"fal", {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green",
  265. p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange",
  266. p.."pink", p.."red", p.."violet", p.."white", p.."yellow", p.."natural"}, 0, true},
  267. {"dro", {p.."delphinium"}, 5},
  268. {"dro", {p.."lazarus"}, 5},
  269. {"dro", {p.."mannagrass"}, 5},
  270. {"dro", {p.."thistle"}, 6},
  271. {"flo", 5, {p.."natural", p.."black", p.."blue", p.."brown", p.."cyan",
  272. p.."dark_green", p.."dark_grey", p.."green", p.."grey", p.."magenta",
  273. p.."orange", p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 2},
  274. {"nod", "default:chest", 0, {
  275. {name = p.."natural", max = 30},
  276. {name = p.."black", max = 30},
  277. {name = p.."blue", max = 30},
  278. {name = p.."brown", max = 30},
  279. {name = p.."cyan", max = 30},
  280. {name = p.."dark_green", max = 30},
  281. {name = p.."dark_grey", max = 30},
  282. {name = p.."green", max = 30},
  283. {name = p.."grey", max = 30},
  284. {name = p.."magenta", max = 30},
  285. {name = p.."orange", max = 30},
  286. {name = p.."pink", max = 30},
  287. {name = p.."red", max = 30},
  288. {name = p.."violet", max = 30},
  289. {name = p.."white", max = 30},
  290. {name = p.."yellow", max = 30}
  291. }},
  292. })
  293. p = "bakedclay:terracotta_"
  294. lucky_block:add_blocks({
  295. {"nod", "default:chest", 0, {
  296. {name = p.."black", max = 20},
  297. {name = p.."blue", max = 20},
  298. {name = p.."brown", max = 20},
  299. {name = p.."cyan", max = 20},
  300. {name = p.."dark_green", max = 20},
  301. {name = p.."dark_grey", max = 20},
  302. {name = p.."green", max = 20},
  303. {name = p.."grey", max = 20},
  304. {name = p.."magenta", max = 20},
  305. {name = p.."orange", max = 20},
  306. {name = p.."pink", max = 20},
  307. {name = p.."red", max = 20},
  308. {name = p.."violet", max = 20},
  309. {name = p.."white", max = 20},
  310. {name = p.."yellow", max = 20}
  311. }}
  312. })
  313. end
  314. -- colored clay compatibility
  315. if minetest.settings:get_bool("colored_clay_compatibility") == true then
  316. local cc = {
  317. {"black", "black"},
  318. {"blue", "blue"},
  319. {"bright", "natural"},
  320. {"brown", "brown"},
  321. {"cyan", "cyan"},
  322. {"dark_green", "dark_green"},
  323. {"dark_grey", "dark_grey"},
  324. {"green", "green"},
  325. {"grey", "grey"},
  326. {"hardened", "natural"},
  327. {"magenta", "magenta"},
  328. {"orange", "orange"},
  329. {"pink", "pink"},
  330. {"red", "red"},
  331. {"violet", "violet"},
  332. {"white", "white"},
  333. {"yellow", "yellow"}
  334. }
  335. for n = 1, #cc do
  336. local nod1 = "colored_clay:" .. cc[n][1]
  337. local nod2 = "bakedclay:" .. cc[n][2]
  338. minetest.register_alias(nod1, nod2)
  339. if stairsplus_mod then
  340. stairsplus:register_alias_all("colored_clay", cc[n][1], "bakedclay", cc[n][2])
  341. end
  342. end
  343. end
  344. -- flowerpot mod
  345. if minetest.get_modpath("flowerpot") then
  346. flowerpot.register_node("bakedclay:delphinium")
  347. flowerpot.register_node("bakedclay:thistle")
  348. flowerpot.register_node("bakedclay:lazarus")
  349. flowerpot.register_node("bakedclay:mannagrass")
  350. end
  351. print ("[MOD] Baked Clay loaded")