season/init.lua
2014-11-09 19:47:53 +00:00

190 lines
5.3 KiB
Lua

season = {}
season.current = "spring"
-- Spring Leaves
minetest.register_node(":default:leaves", {
description = "Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.1,
tiles = {"default_leaves.png"},
inventory_image = "default_leaves.png",
paramtype = "light",
waving = 1,
groups = {snappy=3, leafdecay=3, leaves=1, season=1},
drop = {
max_items = 1,
items = {
{items = {"default:sapling"}, rarity = 20},
{items = {"default:leaves"}}
}
},
--sounds = default.node_sound_leaves_defaults(),
})
-- End of Summer Leaves
minetest.register_node("season:leaves_summer", {
description = "Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.1,
tiles = {"season_leaves_summer.png"},
inventory_image = "season_leaves_summer.png",
paramtype = "light",
waving = 1,
groups = {snappy=3, leafdecay=3, leaves=1, season=1},
drop = {
max_items = 1,
items = {
{items = {"default:sapling"}, rarity = 20},
{items = {"default:leaves"}}
}
},
--sounds = default.node_sound_leaves_defaults(),
})
-- Autumn Leaves
minetest.register_node("season:leaves_autumn", {
description = "Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.1,
tiles = {"season_leaves_autumn.png"},
inventory_image = "season_leaves_autumn.png",
paramtype = "light",
waving = 1,
groups = {snappy=3, leafdecay=3, leaves=1, season=1},
drop = {
max_items = 1,
items = {
{items = {"default:sapling"}, rarity = 20},
{items = {"default:leaves"}}
}
},
--sounds = default.node_sound_leaves_defaults(),
})
-- Winter Leaves
minetest.register_node("season:leaves_winter", {
description = "Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.1,
tiles = {"season_leaves_winter.png"},
inventory_image = "season_leaves_winter.png",
paramtype = "light",
waving = 1,
groups = {snappy=3, leafdecay=3, leaves=1 ,season=1},
drop = {
max_items = 1,
items = {
{items = {"default:sapling"}, rarity = 20},
{items = {"default:leaves"}}
}
},
--sounds = default.node_sound_leaves_defaults(),
})
-- Change Season Command
minetest.register_chatcommand("season", {
params = "<season>",
description = "Changes season <spring | summer | autumn | winter>",
privs = {server=true},
func = function(name, param)
if not param or param == "" then return end
local ssn = string.match(param, "([^ ]+)")
if not ssn then return end
season.current = ssn
print("Season changed to:", season.current)
end,
})
-- Spring Grass
minetest.register_node(":default:dirt_with_grass", {
description = "Dirt with Grass and Footsteps",
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1,season=1},
drop = 'default:dirt',
--sounds = default.node_sound_dirt_defaults({
-- footstep = {name="default_grass_footstep", gain=0.25},
-- }),
})
-- Summer Grass
minetest.register_node("season:dirt_summer", {
description = "Dirt with Grass",
tiles = {"season_summer_grass.png", "default_dirt.png", "default_dirt.png^season_summer_grass_side.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1 ,season=1},
drop = 'default:dirt',
--sounds = default.node_sound_dirt_defaults({
-- footstep = {name="default_grass_footstep", gain=0.25},
-- }),
})
-- Autumn Grass
minetest.register_node("season:dirt_autumn", {
description = "Dirt with Grass",
tiles = {"season_autumn_grass.png", "default_dirt.png", "default_dirt.png^season_autumn_grass_side.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1 ,season=1},
drop = 'default:dirt',
-- sounds = default.node_sound_dirt_defaults({
--footstep = {name="default_grass_footstep", gain=0.25},
--}),
})
-- Winter Grass
minetest.register_node(":default:dirt_with_snow", {
description = "Dirt with Snow",
tiles = {"default_snow.png", "default_dirt.png", "default_dirt.png^default_snow_side.png"},
is_ground_content = true,
groups = {crumbly=3 ,season=1},
drop = 'default:dirt',
--sounds = default.node_sound_dirt_defaults({
-- footstep = {name="default_snow_footstep", gain=0.25},
-- }),
})
-- Abm that switches leaves depending on Season
minetest.register_abm({
nodenames = {"group:season"},
interval = 20,
chance = 4,
action = function(pos, node, active_object_count, active_object_count_wider)
local data = nil
data = string.split(node.name, ":", 2)
local mod = data[1]..":"
local nod = data[2]
data = string.split(nod, "_", 2)
local typ = data[1]
--print ("TYPE:", mod, nod, typ)
if typ == "leaves" then
if season.current == "spring" then
minetest.add_node(pos, {name="default:leaves"})
elseif season.current == "summer" then
minetest.add_node(pos, {name="season:leaves_summer"})
elseif season.current == "autumn" then
minetest.add_node(pos, {name="season:leaves_autumn"})
elseif season.current == "winter" then
minetest.add_node(pos, {name="season:leaves_winter"})
end
elseif typ == "dirt" then
if season.current == "spring" then
minetest.add_node(pos, {name="default:dirt_with_grass"})
elseif season.current == "summer" then
minetest.add_node(pos, {name="season:dirt_summer"})
elseif season.current == "autumn" then
minetest.add_node(pos, {name="season:dirt_autumn"})
elseif season.current == "winter" then
minetest.add_node(pos, {name="default:dirt_with_snow"})
end
end
end,
})