diff --git a/depends.txt b/depends.txt new file mode 100755 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100755 index 0000000..a904121 --- /dev/null +++ b/init.lua @@ -0,0 +1,175 @@ +-- add bones to dirt +minetest.override_item("default:dirt", { + drop = { + max_items = 1, + items = { + { + items = {'bone:bone', 'default:dirt'}, + rarity = 7, + }, + { + items = {'default:dirt'}, + } + } + }, +}) + +-- add bones to dirt with grass +minetest.override_item("default:dirt_with_grass", { + drop = { + max_items = 1, + items = { + { + items = {'bone:bone', 'default:dirt'}, + rarity = 7, + }, + { + items = {'default:dirt'}, + } + } + }, +}) + +-- bone item +minetest.register_craftitem("bone:bone", { + description = "Bone", + inventory_image = "bone_bone.png", +}) + +-- bonemeal recipe +minetest.register_craft({ + output = 'bone:bonemeal 5', + recipe = {{'bone:bone'}}, +}) + +-- apple tree definition +local apple_tree = { + axiom = "FFFFFAFFBF", + rules_a = "[&&&FFFFF&&FFFF][&&&++++FFFFF&&FFFF][&&&----FFFFF&&FFFF]", + rules_b = "[&&&++FFFFF&&FFFF][&&&--FFFFF&&FFFF][&&&------FFFFF&&FFFF]", + trunk = "default:tree", + leaves = "default:leaves", + angle = 30, + iterations = 2, + random_level = 0, + trunk_type = "single", + thin_branches = true, + fruit_chance = 10, + fruit="default:apple" +} + +local n +local n2 +local pos +local plant_tab = {} +local rnd_max = 5 + +minetest.after(0.5, function() + plant_tab[0] = "air" + plant_tab[1] = "default:grass_1" + plant_tab[2] = "default:grass_2" + plant_tab[3] = "default:grass_3" + plant_tab[4] = "default:grass_4" + plant_tab[5] = "default:grass_5" + + if minetest.get_modpath("flowers") ~= nil then + rnd_max = 11 + plant_tab[6] = "flowers:dandelion_white" + plant_tab[7] = "flowers:dandelion_yellow" + plant_tab[8] = "flowers:geranium" + plant_tab[9] = "flowers:rose" + plant_tab[10] = "flowers:tulip" + plant_tab[11] = "flowers:viola" + end + +end) + +local function duengen(pointed_thing) + + pos = pointed_thing.under + n = minetest.get_node(pos) + if n.name == "" then return end + local stage = "" + + -- grow sapling into tree + if n.name == "default:sapling" then + minetest.set_node(pos, {name="air"}) + if minetest.get_mapgen_params().mgname == "v6" then + default.grow_tree(pos, math.random(1, 4) == 1) + else + default.grow_new_apple_tree(pos) + end + + -- grow wheat + elseif string.find(n.name, "farming:wheat_") ~= nil then + stage = string.sub(n.name, 15) + if stage == "3" then + minetest.set_node(pos, {name="farming:wheat"}) + elseif math.random(1,5) < 3 then + minetest.set_node(pos, {name="farming:wheat"}) + else + minetest.set_node(pos, {name="farming:wheat_"..math.random(2,3)}) + end + + -- grow cotton + elseif string.find(n.name, "farming:cotton_") ~= nil then + stage = tonumber(string.sub(n.name, 16)) + if stage == 1 then + minetest.set_node(pos, {name="farming:cotton_"..math.random(stage, 2)}) + else + minetest.set_node(pos, {name="farming:cotton"}) + end + + -- grow pumpkin + elseif string.find(n.name, "farming:pumpkin_") ~= nil then + stage = tonumber(string.sub(n.name, 17)) + if stage == 1 then + minetest:set_node(pos, {name="farming:pumpkin_"..math.random(stage, 2)}) + else + minetest:set_node(pos, {name="farming:pumpkin"}) + end + + -- grow grass and flowers + elseif n.name == "default:dirt_with_grass" then + for i = -2, 3, 1 do + for j = -3, 2, 1 do + pos = pointed_thing.above + pos = {x = pos.x + i, y = pos.y, z = pos.z + j} + n = minetest.get_node(pos) + n2 = minetest.get_node({x = pos.x, y = pos.y-1, z = pos.z}) + + if n.name ~= "" + and n.name == "air" + and n2.name == "default:dirt_with_grass" then + if math.random(0,5) > 3 then + minetest.set_node(pos, + {name=plant_tab[math.random(0, rnd_max)]}) + else + minetest.set_node(pos, + {name=plant_tab[math.random(0, 5)]}) + end + end + end + end + end +end + +-- bonemeal item +minetest.register_craftitem("bone:bonemeal", { + description = "Bone Meal", + inventory_image = "bone_bonemeal.png", + liquids_pointable = false, + stack_max = 99, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type == "node" then + if not minetest.setting_getbool("creative_mode") then + local item = user:get_wielded_item() + item:take_item() + user:set_wielded_item(item) + end + duengen(pointed_thing) + itemstack:take_item() + return itemstack + end + end, +}) diff --git a/textures/bone_bone.png b/textures/bone_bone.png new file mode 100755 index 0000000..8c4aa08 Binary files /dev/null and b/textures/bone_bone.png differ diff --git a/textures/bone_bonemeal.png b/textures/bone_bonemeal.png new file mode 100755 index 0000000..f141263 Binary files /dev/null and b/textures/bone_bonemeal.png differ