179 lines
5.3 KiB
Lua
179 lines
5.3 KiB
Lua
local pf = potted_farming
|
|
local S = pf.S
|
|
local max_uses = pf.watering_can_max_uses
|
|
|
|
-- Pot to plant
|
|
minetest.register_node(pf.modname .. ":pot_with_soil", {
|
|
description = S("Pot with Soil"),
|
|
|
|
tiles = {
|
|
"pot_with_soil_top.png",
|
|
"pot_with_soil_bottom.png",
|
|
"pot_with_soil_side.png",
|
|
"pot_with_soil_side.png",
|
|
"pot_with_soil_side.png",
|
|
"pot_with_soil_side.png"
|
|
},
|
|
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
|
|
groups = {oddly_breakable_by_hand = 4, crumbly = 1, cracky = 1, attached_node = 1},
|
|
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.1875, -0.5, -0.1875, 0.1875, -0.1875, 0.1875}, -- base_center
|
|
{-0.25, -0.375, -0.125, -0.1875, -0.1875, 0.125}, -- base1
|
|
{-0.125, -0.375, 0.1875, 0.125, -0.1875, 0.25}, -- base2
|
|
{0.1875, -0.375, -0.125, 0.25, -0.1875, 0.125}, -- base3
|
|
{-0.125, -0.375, -0.25, 0.125, -0.1875, -0.1875}, -- base4
|
|
}
|
|
},
|
|
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.1875, 0.25}, -- selection
|
|
}
|
|
},
|
|
|
|
collision_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.1875, 0.25}, -- selection
|
|
}
|
|
},
|
|
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
if player:is_player() and itemstack:is_empty() == false then
|
|
local itemname = itemstack:get_name()
|
|
local acceptable, type, plant = pf.is_acceptable_source(itemname)
|
|
local step = "1"
|
|
if type == "fruit_tree" then step = "sapling" end
|
|
if acceptable then
|
|
local n = math.random(1, 3)
|
|
minetest.sound_play("dirt-0".. n, {pos=pos, gain=1.2})
|
|
minetest.set_node(pos, {name = pf.modname .. ":pot_with_".. plant .. "_" .. step})
|
|
itemstack:take_item()
|
|
end
|
|
end
|
|
end,
|
|
|
|
on_rotate = function(pos, node)
|
|
return false
|
|
end,
|
|
|
|
}) -- minetest.register_node(pot
|
|
|
|
local pot_with_shrub = {
|
|
description = S("Pot with Shrub"),
|
|
groups = {flammable = 2, crumbly = 1, cracky = 1, attached_node = 1, not_in_creative_inventory = 1},
|
|
tiles = {
|
|
"pot_with_soil_top.png",
|
|
"pot_with_soil_bottom.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_shrub.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_shrub.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_shrub.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_shrub.png"
|
|
|
|
}, -- tiles
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
walkable = true,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.1875, -0.5, -0.1875, 0.1875, -0.1875, 0.1875}, -- base_center
|
|
{-0.25, -0.375, -0.125, -0.1875, -0.1875, 0.125}, -- base1
|
|
{-0.125, -0.375, 0.1875, 0.125, -0.1875, 0.25}, -- base2
|
|
{0.1875, -0.375, -0.125, 0.25, -0.1875, 0.125}, -- base3
|
|
{-0.125, -0.375, -0.25, 0.125, -0.1875, -0.1875}, -- base4
|
|
{-0.5, -0.5, 0, 0.5, 0.5, 0}, -- plant1X
|
|
{0, -0.5, -0.5, 0, 0.5, 0.5}, -- plant2Z
|
|
|
|
} -- fixed
|
|
|
|
}, -- node_box
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- selection
|
|
|
|
}
|
|
|
|
}, -- selection_box
|
|
|
|
collision_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, 0.5, 0.25}, -- selection
|
|
|
|
}
|
|
|
|
}, -- collsion_box
|
|
|
|
drop = {
|
|
items = {
|
|
{items = {pf.modname .. ":pot_with_soil"} },
|
|
{items = {"default:stick"} },
|
|
|
|
}, -- items
|
|
|
|
}, -- drop
|
|
|
|
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
|
|
if player:is_player() then
|
|
local itemname = itemstack:get_name()
|
|
if itemstack:is_empty() == false and itemname == pf.modname .. ":watering_can" then
|
|
local nodepos = pos
|
|
local possible_leaf_pos = vector.add(nodepos, vector.new(0, 1, 0))
|
|
local possible_leaf = minetest.get_node(possible_leaf_pos)
|
|
|
|
local fruit_name = nil
|
|
for k, v in pairs(pf.fruit_tree_list) do
|
|
if possible_leaf.name == pf.modname ..":".. k .."_leaves_3" then
|
|
fruit_name = k
|
|
end
|
|
end -- fruit_tree_list iteration
|
|
|
|
if fruit_name ~= nil then
|
|
itemstack = pf.add_watering_can_wear(itemstack)
|
|
|
|
local n = math.random(3, 4)
|
|
minetest.sound_play("water-splash-0".. n, {pos=nodepos, gain=1.2})
|
|
minetest.swap_node(possible_leaf_pos, {name = pf.modname .. ":".. fruit_name .."_leaves_1", param2 = 2})
|
|
|
|
end -- if node above is ANY thirsty leaves
|
|
|
|
end -- itemstack is watering_can
|
|
|
|
end -- player is a player
|
|
return itemstack
|
|
|
|
end, -- on_rightclick
|
|
-- no further action is required, the leaves should fall on their own, as they too are an attached_node
|
|
|
|
on_rotate = function(pos, node)
|
|
return false
|
|
end,
|
|
|
|
} -- pot_with_shrub table
|
|
|
|
minetest.register_node(pf.modname ..":pot_with_shrub", table.copy(pot_with_shrub) )
|
|
|
|
-- different shrub for a different plant, that differes only in texture
|
|
-- unfortunately i have to make another node just for this difference
|
|
|
|
pot_with_shrub.description = S("Pot with Plantain")
|
|
pot_with_shrub.tiles = {
|
|
"pot_with_soil_top.png",
|
|
"pot_with_soil_bottom.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_plantain.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_plantain.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_plantain.png",
|
|
"pot_with_soil_side.png^" .. pf.modname .. "_plantain.png"
|
|
|
|
} -- plantain tiles
|
|
|
|
minetest.register_node(pf.modname ..":pot_with_plantain", table.copy(pot_with_shrub) )
|