diff --git a/mods/ITEMS/flowers/init.lua b/mods/ITEMS/flowers/init.lua index 18b2fb8..29e8f1e 100644 --- a/mods/ITEMS/flowers/init.lua +++ b/mods/ITEMS/flowers/init.lua @@ -42,7 +42,7 @@ end flowers.datas = { { "rose", - "Rose", + "Red Rose", {-2/16, -8/16, -2/16, 2/16, 5/16, 2/16}, {color_red = 1} }, @@ -196,9 +196,9 @@ minetest.register_abm({ }) --- --- Waterlily --- +--[[ + Waterlily +--]] minetest.register_node("flowers:waterlily", { description = "Waterlily", @@ -218,11 +218,11 @@ minetest.register_node("flowers:waterlily", { node_placement_prediction = "", node_box = { type = "fixed", - fixed = {-0.5, -31 / 64, -0.5, 0.5, -15 / 32, 0.5} + fixed = {-8/16, -31/64, -8/16, 8/16, -15/32, 8/16} }, selection_box = { type = "fixed", - fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, -15 / 32, 7 / 16} + fixed = {-7/16, -8/16, -7/16, 7/16, -15/32, 7/16} }, on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/ITEMS/mushrooms/init.lua b/mods/ITEMS/mushrooms/init.lua index 0a4ea7c..798d4a4 100644 --- a/mods/ITEMS/mushrooms/init.lua +++ b/mods/ITEMS/mushrooms/init.lua @@ -2,6 +2,14 @@ Mushrooms --]] + +-- Namespace for functions + +mushrooms = {} + + +-- Mushroom registration + minetest.register_node("mushrooms:mushroom_red", { description = "Red Mushroom", tiles = {"mushrooms_mushroom_red.png"}, @@ -17,7 +25,7 @@ minetest.register_node("mushrooms:mushroom_red", { on_use = minetest.item_eat(-5), selection_box = { type = "fixed", - fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16}, + fixed = {-4/16, -8/16, -4/16, 4/16, -1/16, 4/16}, } }) @@ -36,45 +44,41 @@ minetest.register_node("mushrooms:mushroom_brown", { on_use = minetest.item_eat(1), selection_box = { type = "fixed", - fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, -2 / 16, 3 / 16}, + fixed = {-3/16, -8/16, -3/16, 3/16, -2/16, 3/16}, } }) -- Mushroom spread and death +function mushrooms.mushroom_spread(pos, node) + if minetest.get_node_light(pos, nil) == 15 then + minetest.remove_node(pos) + return + end + local positions = minetest.find_nodes_in_area_under_air( + {x = pos.x - 1, y = pos.y - 2, z = pos.z - 1}, + {x = pos.x + 1, y = pos.y + 1, z = pos.z + 1}, + {"group:soil", "group:tree"}) + if #positions == 0 then + return + end + local pos2 = positions[math.random(#positions)] + pos2.y = pos2.y + 1 + if minetest.get_node_light(pos, 0.5) <= 3 and + minetest.get_node_light(pos2, 0.5) <= 3 then + minetest.set_node(pos2, {name = node.name}) + end +end + minetest.register_abm({ label = "Mushroom spread", nodenames = {"mushrooms:mushroom_brown", "mushrooms:mushroom_red"}, interval = 11, - chance = 50, - action = function(pos, node) - if minetest.get_node_light(pos, nil) == 15 then - minetest.remove_node(pos) - return - end - local random = { - x = pos.x + math.random(-2, 2), - y = pos.y + math.random(-1, 1), - z = pos.z + math.random(-2, 2) - } - local random_node = minetest.get_node_or_nil(random) - if not random_node or random_node.name ~= "air" then - return - end - local node_under = minetest.get_node_or_nil({x = random.x, - y = random.y - 1, z = random.z}) - if not node_under then - return - end - - if (minetest.get_item_group(node_under.name, "soil") ~= 0 or - minetest.get_item_group(node_under.name, "tree") ~= 0) and - minetest.get_node_light(pos, 0.5) <= 3 and - minetest.get_node_light(random, 0.5) <= 3 then - minetest.set_node(random, {name = node.name}) - end - end + chance = 150, + action = function(...) + mushrooms.mushroom_spread(...) + end, }) -- Aliases for schematic nodes