capturetheflag/mods/mtg/flowers/init.lua

214 lines
5.3 KiB
Lua

-- flowers/init.lua
-- Minetest 0.4 mod: default
-- See README.txt for licensing and other information.
-- Namespace for functions
flowers = {}
-- Load support for MT game translation.
local S = minetest.get_translator("flowers")
--
-- Flowers
--
-- Aliases for original flowers mod
minetest.register_alias("flowers:flower_rose", "flowers:rose")
minetest.register_alias("flowers:flower_tulip", "flowers:tulip")
minetest.register_alias("flowers:flower_dandelion_yellow", "flowers:dandelion_yellow")
minetest.register_alias("flowers:flower_geranium", "flowers:geranium")
minetest.register_alias("flowers:flower_viola", "flowers:viola")
minetest.register_alias("flowers:flower_dandelion_white", "flowers:dandelion_white")
-- Flower registration
local function add_simple_flower(name, desc, box, f_groups)
-- Common flowers' groups
f_groups.snappy = 3
f_groups.flower = 1
f_groups.flora = 1
f_groups.attached_node = 1
minetest.register_node("flowers:" .. name, {
description = desc,
drawtype = "plantlike",
waving = 1,
tiles = {"flowers_" .. name .. ".png"},
inventory_image = "flowers_" .. name .. ".png",
wield_image = "flowers_" .. name .. ".png",
sunlight_propagates = true,
paramtype = "light",
walkable = false,
buildable_to = true,
groups = f_groups,
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = box
}
})
end
flowers.datas = {
{
"rose",
S("Red Rose"),
{-2 / 16, -0.5, -2 / 16, 2 / 16, 5 / 16, 2 / 16},
{color_red = 1, flammable = 1}
},
{
"tulip",
S("Orange Tulip"),
{-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16},
{color_orange = 1, flammable = 1}
},
{
"dandelion_yellow",
S("Yellow Dandelion"),
{-4 / 16, -0.5, -4 / 16, 4 / 16, -2 / 16, 4 / 16},
{color_yellow = 1, flammable = 1}
},
{
"chrysanthemum_green",
S("Green Chrysanthemum"),
{-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16},
{color_green = 1, flammable = 1}
},
{
"geranium",
S("Blue Geranium"),
{-2 / 16, -0.5, -2 / 16, 2 / 16, 2 / 16, 2 / 16},
{color_blue = 1, flammable = 1}
},
{
"viola",
S("Viola"),
{-5 / 16, -0.5, -5 / 16, 5 / 16, -1 / 16, 5 / 16},
{color_violet = 1, flammable = 1}
},
{
"dandelion_white",
S("White Dandelion"),
{-5 / 16, -0.5, -5 / 16, 5 / 16, -2 / 16, 5 / 16},
{color_white = 1, flammable = 1}
},
{
"tulip_black",
S("Black Tulip"),
{-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16},
{color_black = 1, flammable = 1}
},
}
for _,item in pairs(flowers.datas) do
add_simple_flower(unpack(item))
end
--
-- Mushrooms
--
minetest.register_node("flowers:mushroom_red", {
description = S("Red Mushroom"),
tiles = {"flowers_mushroom_red.png"},
inventory_image = "flowers_mushroom_red.png",
wield_image = "flowers_mushroom_red.png",
drawtype = "plantlike",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {mushroom = 1, snappy = 3, attached_node = 1, flammable = 1},
sounds = default.node_sound_leaves_defaults(),
-- on_use = minetest.item_eat(-5),
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16},
}
})
minetest.register_node("flowers:mushroom_brown", {
description = S("Brown Mushroom"),
tiles = {"flowers_mushroom_brown.png"},
inventory_image = "flowers_mushroom_brown.png",
wield_image = "flowers_mushroom_brown.png",
drawtype = "plantlike",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {mushroom = 1, food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 1},
sounds = default.node_sound_leaves_defaults(),
-- on_use = minetest.item_eat(1),
selection_box = {
type = "fixed",
fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, -2 / 16, 3 / 16},
}
})
--
-- Waterlily
--
local waterlily_def = {
description = S("Waterlily"),
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
tiles = {"flowers_waterlily.png", "flowers_waterlily_bottom.png"},
inventory_image = "flowers_waterlily.png",
wield_image = "flowers_waterlily.png",
liquids_pointable = true,
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy = 3, flower = 1, flammable = 1},
sounds = default.node_sound_leaves_defaults(),
node_placement_prediction = "",
node_box = {
type = "fixed",
fixed = {-0.5, -31 / 64, -0.5, 0.5, -15 / 32, 0.5}
},
selection_box = {
type = "fixed",
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, -15 / 32, 7 / 16}
},
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above
local node = minetest.get_node(pointed_thing.under)
local def = minetest.registered_nodes[node.name]
if def and def.on_rightclick then
return def.on_rightclick(pointed_thing.under, node, placer, itemstack,
pointed_thing)
end
if def and def.liquidtype == "source" and
minetest.get_item_group(node.name, "water") > 0 then
minetest.set_node(pos, {name = "flowers:waterlily" ..
(def.waving == 3 and "_waving" or ""),
param2 = math.random(0, 3)})
itemstack:take_item()
end
return itemstack
end
}
local waterlily_waving_def = table.copy(waterlily_def)
waterlily_waving_def.waving = 3
waterlily_waving_def.drop = "flowers:waterlily"
waterlily_waving_def.groups.not_in_creative_inventory = 1
minetest.register_node("flowers:waterlily", waterlily_def)
minetest.register_node("flowers:waterlily_waving", waterlily_waving_def)