diff --git a/mods/bakedclay/depends.txt b/mods/bakedclay/depends.txt new file mode 100644 index 00000000..4abda40a --- /dev/null +++ b/mods/bakedclay/depends.txt @@ -0,0 +1,4 @@ +default +stairs +moreblocks? +lucky_block? \ No newline at end of file diff --git a/mods/bakedclay/description.txt b/mods/bakedclay/description.txt new file mode 100644 index 00000000..b469a1b5 --- /dev/null +++ b/mods/bakedclay/description.txt @@ -0,0 +1 @@ +Adds the ability to bake clay into blocks and colour them with dye. \ No newline at end of file diff --git a/mods/bakedclay/init.lua b/mods/bakedclay/init.lua new file mode 100644 index 00000000..10001b4d --- /dev/null +++ b/mods/bakedclay/init.lua @@ -0,0 +1,270 @@ + +-- Baked Clay by TenPlus1 + +local clay = { + {"white", "White"}, + {"grey", "Grey"}, + {"black", "Black"}, + {"red", "Red"}, + {"yellow", "Yellow"}, + {"green", "Green"}, + {"cyan", "Cyan"}, + {"blue", "Blue"}, + {"magenta", "Magenta"}, + {"orange", "Orange"}, + {"violet", "Violet"}, + {"brown", "Brown"}, + {"pink", "Pink"}, + {"dark_grey", "Dark Grey"}, + {"dark_green", "Dark Green"}, +} + +local stairs_mod = minetest.get_modpath("stairs") +local stairsplus_mod = minetest.get_modpath("moreblocks") + and minetest.global_exists("stairsplus") + +for _, clay in pairs(clay) do + + -- node definition + + minetest.register_node("bakedclay:" .. clay[1], { + description = clay[2] .. " Baked Clay", + tiles = {"baked_clay_" .. clay[1] ..".png"}, + groups = {cracky = 3, bakedclay = 1}, + sounds = default.node_sound_stone_defaults(), + }) + + -- craft from dye and any baked clay + + minetest.register_craft({ + output = "bakedclay:" .. clay[1] .. " 8", + recipe = { + {"group:bakedclay", "group:bakedclay", "group:bakedclay"}, + {"group:bakedclay", "dye:" .. clay[1], "group:bakedclay"}, + {"group:bakedclay", "group:bakedclay", "group:bakedclay"} + }, + }) + + -- register stairsplus stairs if found + if stairsplus_mod then + + stairsplus:register_all("bakedclay", "baked_clay_" .. clay[1], "bakedclay:" .. clay[1], { + description = clay[2] .. " Baked Clay", + tiles = {"baked_clay_" .. clay[1] .. ".png"}, + groups = {cracky = 3}, + sounds = default.node_sound_stone_defaults(), + }) + + stairsplus:register_alias_all("bakedclay", clay[1], "bakedclay", "baked_clay_" .. clay[1]) + minetest.register_alias("stairs:slab_bakedclay_".. clay[1], "bakedclay:slab_baked_clay_" .. clay[1]) + minetest.register_alias("stairs:stair_bakedclay_".. clay[1], "bakedclay:stair_baked_clay_" .. clay[1]) + + -- register all stair types for stairs redo + elseif stairs_mod and stairs.mod then + + stairs.register_all("bakedclay_" .. clay[1], "bakedclay:" .. clay[1], + {cracky = 3}, + {"baked_clay_" .. clay[1] .. ".png"}, + clay[2] .. " Baked Clay", + default.node_sound_stone_defaults()) + + -- register stair and slab using default stairs + elseif stairs_mod then + + stairs.register_stair_and_slab("bakedclay_".. clay[1], "bakedclay:".. clay[1], + {cracky = 3}, + {"baked_clay_" .. clay[1] .. ".png"}, + clay[2] .. " Baked Clay Stair", + clay[2] .. " Baked Clay Slab", + default.node_sound_stone_defaults()) + end +end + +-- cook clay block into white baked clay + +minetest.register_craft({ + type = "cooking", + output = "bakedclay:white", + recipe = "default:clay", +}) + +-- register a few extra dye colour options + +minetest.register_craft( { + type = "shapeless", + output = "dye:dark_grey 3", + recipe = {"dye:black", "dye:black", "dye:white"} +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:grey 3", + recipe = {"dye:black", "dye:white", "dye:white"} +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:green 4", + recipe = {"default:cactus"} +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:black 4", + recipe = {"default:coal_lump"} +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:brown 4", + recipe = {"default:dry_shrub"} +}) + +-- 2x2 red bakedclay makes 16x clay brick +minetest.register_craft( { + output = "default:clay_brick 16", + recipe = { + {"bakedclay:red", "bakedclay:red"}, + {"bakedclay:red", "bakedclay:red"}, + } +}) + +-- register some new flowers to fill in missing dye colours +-- flower registration (borrowed from default game) + +local function add_simple_flower(name, desc, box, f_groups) + + f_groups.snappy = 3 + f_groups.flower = 1 + f_groups.flora = 1 + f_groups.attached_node = 1 + + minetest.register_node("bakedclay:" .. name, { + description = desc, + drawtype = "plantlike", + waving = 1, + tiles = {"baked_clay_" .. name .. ".png"}, + inventory_image = "baked_clay_" .. name .. ".png", + wield_image = "baked_clay_" .. name .. ".png", + sunlight_propagates = true, + paramtype = "light", + walkable = false, + buildable_to = true, + stack_max = 99, + groups = f_groups, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = box + } + }) +end + +local flowers = { + {"delphinium", "Blue Delphinium", {-0.15, -0.5, -0.15, 0.15, 0.3, 0.15}, {color_cyan = 1}}, + {"thistle", "Thistle", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_magenta = 1}}, + {"lazarus", "Lazarus Bell", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_pink = 1}}, + {"mannagrass", "Reed Mannagrass", {-0.15, -0.5, -0.15, 0.15, 0.2, 0.15}, {color_dark_green = 1}}, +} + +for _,item in pairs(flowers) do + add_simple_flower(unpack(item)) +end + +-- mapgen for new flowers + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.004, + spread = {x = 100, y = 100, z = 100}, + seed = 7133, + octaves = 3, + persist = 0.6 + }, + y_min = 10, + y_max = 90, + decoration = "bakedclay:delphinium", +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.004, + spread = {x = 100, y = 100, z = 100}, + seed = 7134, + octaves = 3, + persist = 0.6 + }, + y_min = 15, + y_max = 90, + decoration = "bakedclay:thistle", +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:dirt_with_rainforest_litter"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.01, + spread = {x = 100, y = 100, z = 100}, + seed = 7135, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = 90, + decoration = "bakedclay:lazarus", + spawn_by = "default:jungletree", + num_spawn_by = 1, +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass", "default:sand"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.009, + spread = {x = 100, y = 100, z = 100}, + seed = 7136, + octaves = 3, + persist = 0.6 + }, + y_min = 1, + y_max = 15, + decoration = "bakedclay:mannagrass", + spawn_by = "group:water", + num_spawn_by = 1, +}) + +-- add lucky blocks + +if minetest.get_modpath("lucky_block") then +local p = "bakedclay:" +lucky_block:add_blocks({ + {"dro", {"bakedclay:"}, 10, true}, + {"fal", {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green", + p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange", + p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 0}, + {"fal", {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green", + p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange", + p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 0, true}, + {"dro", {p.."delphinium"}, 5}, + {"dro", {p.."lazarus"}, 5}, + {"dro", {p.."mannagrass"}, 5}, + {"dro", {p.."thistle"}, 6}, + {"flo", 5, {p.."black", p.."blue", p.."brown", p.."cyan", p.."dark_green", + p.."dark_grey", p.."green", p.."grey", p.."magenta", p.."orange", + p.."pink", p.."red", p.."violet", p.."white", p.."yellow"}, 2}, +}) +end + +print ("[MOD] Baked Clay loaded") diff --git a/mods/bakedclay/license.txt b/mods/bakedclay/license.txt new file mode 100644 index 00000000..fec6f6aa --- /dev/null +++ b/mods/bakedclay/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 TenPlus1 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/mods/bakedclay/mod.conf b/mods/bakedclay/mod.conf new file mode 100644 index 00000000..bdf596f5 --- /dev/null +++ b/mods/bakedclay/mod.conf @@ -0,0 +1 @@ +name = bakedclay \ No newline at end of file