1186 lines
36 KiB
Lua

--nodes.lua
-- This file is part of BFD.
-- BFD is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
-- BFD is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-- You may contact Jordach via the Minetest Forums PM service for help
-- or ask on the forum topic for which this game is set on.
-- You should have received a copy of the GNU General Public License
-- along with BFD. If not, see <http://www.gnu.org/licenses/>.
minetest.register_node("mapgen:long_grass_1", {
description = "Long Grass",
drawtype = "plantlike",
tiles = {"mapgen_grass_1.png"},
-- use a bigger inventory image
inventory_image = "mapgen_grass_3.png",
wield_image = "mapgen_grass_3.png",
waving = 1,
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'mapgen:long_grass_1'}},
}
},
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:long_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:long_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:long_grass_2", {
description = "Long Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"mapgen_grass_2.png"},
-- use a bigger inventory image
inventory_image = "mapgen_grass_3.png",
wield_image = "mapgen_grass_3.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'mapgen:long_grass_1'}},
}
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:long_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:long_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:long_grass_3", {
description = "Long Grass",
waving = 1,
drawtype = "plantlike",
tiles = {"mapgen_grass_3.png"},
-- use a bigger inventory image
inventory_image = "mapgen_grass_3.png",
wield_image = "mapgen_grass_3.png",
paramtype = "light",
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'mapgen:long_grass_1'}},
}
},
walkable = false,
is_ground_content = true,
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:long_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:long_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:long_grass_4", {
description = "Long Grass",
drawtype = "plantlike",
tiles = {"mapgen_grass_4.png"},
waving = 1,
-- use a bigger inventory image
inventory_image = "mapgen_grass_3.png",
wield_image = "mapgen_grass_3.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'mapgen:long_grass_1'}},
}
},
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:long_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:long_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:long_grass_5", {
description = "Long Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"mapgen_grass_5.png"},
-- use a bigger inventory image
inventory_image = "mapgen_grass_3.png",
wield_image = "mapgen_grass_3.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 5},
{items = {'mapgen:long_grass_1'}},
}
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:long_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:long_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
--
-- Desert Stuff, plus dead dirt
--
minetest.register_node("mapgen:cactus", {
description = "Cactus",
tiles = {"mapgen_cactus_top.png", "mapgen_cactus_top.png", "mapgen_cactus_side.png"},
is_ground_content = true,
groups = {snappy=1,choppy=3,flammable=2},
sounds = default.node_sound_wood_defaults(),
drawtype = "nodebox",
paramtype = "light",
damage_per_second = 1,
node_box = {
type = "fixed",
fixed = {{-7/16, -0.5, -7/16, 7/16, 0.5, 7/16}, {-8/16, -0.5, -7/16, -7/16, 0.5, -7/16},
{7/16, -0.5, -7/16, 7/16, 0.5, -8/16},{-7/16, -0.5, 7/16, -7/16, 0.5, 8/16},{7/16, -0.5, 7/16, 8/16, 0.5, 7/16}}--
},
selection_box = {
type = "fixed",
fixed = {-7/16, -0.5, -7/16, 7/16, 0.5, 7/16},
},
})
minetest.register_node("mapgen:sand", {
description = "Sand",
tiles = {"mapgen_sand.png"},
groups = {crumbly=3, falling_node=1, sand=1},
is_ground_content = true,
})
minetest.register_node("mapgen:sandstone", {
description = "Sandstone",
tiles = {"mapgen_sandstone.png"},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("mapgen:dead_bush", {
description = "Dead Bush",
tiles = {"mapgen_dead_bush.png"},
inventory_image = "mapgen_dead_bush.png",
wield_image = "mapgen_dead_bush.png",
waving = 1,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
drawtype = "plantlike",
paramtype = "light",
walkable = false,
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node("mapgen:perma_dirt", {
description = "Perma Dirt",
tiles = {"mapgen_perma_dirt.png"},
groups = {crumbly=3},
})
--
-- Dead Oak Stuff
--
minetest.register_node("mapgen:dead_oak", {
description = "Dead Oak Log",
tiles = {"mapgen_dead_oak_top.png", "mapgen_dead_oak_top.png", "mapgen_dead_oak_tree.png"},
is_ground_content = false,
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
drop = "mapgen:dead_oak_log"
})
minetest.register_node("mapgen:dead_oak_log", {
description = "Dead Oak Log",
tiles = {"mapgen_dead_oak_top.png", "mapgen_dead_oak_top.png", "mapgen_dead_oak_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
--
-- Oak Tree
--
minetest.register_node("mapgen:oak_log_tree", {
description = "Oak Log",
tiles = {"mapgen_oak_top.png", "mapgen_oak_top.png", "mapgen_oak_tree.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2,tree=1},
drop = "mapgen:oak_log",
})
minetest.register_node("mapgen:oak_log", {
description = "Oak Log",
paramtype2 = "facedir",
tiles = {"mapgen_oak_top.png", "mapgen_oak_top.png", "mapgen_oak_tree.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
on_place = minetest.rotate_node,
})
minetest.register_node("mapgen:oak_leaves", {
description = "Oak Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_oak_leaves.png"},
paramtype = "light",
waving = 1,
is_ground_content = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
items = {'mapgen:oak_sapling'},
rarity = 32,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'mapgen:oak_leaves'},
},
{
items = {'mapgen:apple'},
rarity = 20,
}
}
},
sounds = default.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:oak_leaves_deco")
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:oak_leaves".." "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:oak_leaves_deco", {
description = "Oak Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_oak_leaves.png"},
paramtype = "light",
waving=1,
is_ground_content = false,
groups = {snappy=3, flammable=2, leaves=1},
sounds = default.node_sound_leaves_defaults(),
drop = {'mapgen:oak_leaves'},
})
minetest.register_node("mapgen:oak_sapling", {
description = "Oak Sapling",
waving = 1,
visual_scale = 1.0,
drawtype = "plantlike",
tiles = {"mapgen_oak_sapling.png"},
inventory_image = "mapgen_oak_sapling.png",
wield_image = "mapgen_oak_sapling.png",
walkable = false,
paramtype = "light",
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
--
-- Cherry Blossom Stuff
--
minetest.register_node("mapgen:cherry_tree", {
description = "Cherry Log",
tiles = {"mapgen_cherry_top.png", "mapgen_cherry_top.png", "mapgen_cherry_tree.png"},
is_ground_content = false,
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
drop = "mapgen:cherry_log"
})
minetest.register_node("mapgen:cherry_log", {
description = "Cherry Log",
tiles = {"mapgen_cherry_top.png", "mapgen_cherry_top.png", "mapgen_cherry_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
minetest.register_node("mapgen:cherry_sapling", {
description = "Cherry Sapling",
waving = 1,
visual_scale = 1.0,
inventory_image = "mapgen_cherry_sapling.png",
wield_image = "mapgen_cherry_sapling.png",
drawtype = "plantlike",
paramtype = "light",
tiles = {"mapgen_cherry_sapling.png"},
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node("mapgen:cherry_blossom_leaves", {
description = "Cherry Blossom Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_cherry_blossom_leaves.png"},
paramtype = "light",
waving = 1,
is_ground_content = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
items = {'mapgen:cherry_sapling'},
rarity = 32,
},
{
items = {'mapgen:cherry_blossom_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:cherry_leaves_deco")
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:cherry_blossom_leaves".." "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:cherry_leaves_deco", {
description = "Cherry Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_cherry_blossom_leaves.png"},
paramtype = "light",
waving=1,
is_ground_content = false,
groups = {snappy=3, flammable=2, leaves=1},
sounds = default.node_sound_leaves_defaults(),
drop = {'mapgen:cherry_blossom_leaves'},
})
--
-- Birch
--
minetest.register_node("mapgen:birch_leaves", {
description = "Birch Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_birch_leaves.png"},
paramtype = "light",
waving = 1,
is_ground_content = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
items = {'mapgen:birch_sapling'},
rarity = 32,
},
{
items = {'mapgen:birch_leaves'},
},
{
items = {'mapgen:apple'},
rarity = 20,
}
}
},
sounds = default.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:birch_leaves_deco")
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:birch_leaves".." "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:birch_leaves_deco", {
description = "Birch Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_birch_leaves.png"},
paramtype = "light",
waving=1,
is_ground_content = false,
groups = {snappy=3, flammable=2, leaves=1},
sounds = default.node_sound_leaves_defaults(),
drop = {'mapgen:birch_leaves'},
})
minetest.register_node("mapgen:birch_sapling", {
description = "Birch Sapling",
waving = 1,
visual_scale = 1.0,
wield_image = "mapgen_birch_sapling.png",
inventory_image = "mapgen_birch_sapling.png",
drawtype = "plantlike",
paramtype = "light",
tiles = {"mapgen_birch_sapling.png"},
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node("mapgen:birch_log", {
description = "Birch Log",
tiles = {"mapgen_birch_top.png", "mapgen_birch_top.png", "mapgen_birch_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
minetest.register_node("mapgen:birch_tree", {
description = "Birch Log",
tiles = {"mapgen_birch_top.png", "mapgen_birch_top.png", "mapgen_birch_tree.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2,tree=1},
sounds = default.node_sound_wood_defaults(),
drop = "mapgen:birch_log",
})
--
-- Evergreen Tree <3
--
minetest.register_node("mapgen:evergreen_tree", {
description = "Evergreen Log",
tiles = {"mapgen_evergreen_top.png", "mapgen_evergreen_top.png", "mapgen_evergreen_side.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2,tree=1},
drop = "mapgen:evergreen_log",
})
minetest.register_node("mapgen:evergreen_log", {
description = "Evergreen Log",
paramtype2 = "facedir",
tiles = {"mapgen_evergreen_top.png", "mapgen_evergreen_top.png", "mapgen_evergreen_side.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
on_place = minetest.rotate_node,
})
minetest.register_node("mapgen:evergreen_leaves", {
description = "Evergreen Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_evergreen_leaves.png"},
paramtype = "light",
waving = 1,
is_ground_content = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
items = {'mapgen:evergreen_sapling'},
rarity = 32,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'mapgen:evergreen_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:evergreen_leaves_deco")
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:evergreen_leaves".." "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:evergreen_leaves_deco", {
description = "Evergreen Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_evergreen_leaves.png"},
paramtype = "light",
waving=1,
is_ground_content = false,
groups = {snappy=3, flammable=2, leaves=1},
sounds = default.node_sound_leaves_defaults(),
drop = {'mapgen:evergreen_leaves'},
})
minetest.register_node("mapgen:evergreen_leaves_snowy", {
description = "Evergreen Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_evergreen_leaves_snowy.png"},
paramtype = "light",
waving = 1,
is_ground_content = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
items = {'mapgen:evergreen_sapling'},
rarity = 32,
},
{
items = {'mapgen:snow'},
rarity = 10,
}
}
},
sounds = default.node_sound_snow_defaults(),
})
minetest.register_node("mapgen:evergreen_sapling", {
description = "Evergreen Sapling",
waving = 1,
visual_scale = 1.0,
drawtype = "plantlike",
tiles = {"mapgen_evergreen_sapling.png"},
inventory_image = "mapgen_evergreen_sapling.png",
wield_image = "mapgen_evergreen_sapling.png",
walkable = false,
paramtype = "light",
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
--
-- Snow and stuff related to snow
--
minetest.register_node("mapgen:snow", {
description = "Snow",
tiles = {"mapgen_snow.png"},
inventory_image = "mapgen_snowball.png",
wield_image = "mapgen_snowball.png",
is_ground_content = true,
paramtype = "light",
buildable_to = true,
leveled = 7,
drawtype = "nodebox",
node_box = {
type = "leveled",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.5+2/16, 0.5},
},
},
groups = {crumbly=3,falling_node=1},
sounds = default.node_sound_snow_defaults(),
on_construct = function(pos)
pos.y = pos.y - 1
if minetest.get_node(pos).name == "mapgen:grass" then
minetest.set_node(pos, {name="mapgen:snowy_grass"})
end
end,
})
minetest.register_node("mapgen:snowblock", {
description = "Snow Block",
tiles = {"mapgen_snow.png"},
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_snow_defaults(),
})
minetest.register_craft({
output = 'mapgen:snowblock',
recipe = {
{'mapgen:snow', 'mapgen:snow'},
{'mapgen:snow', 'mapgen:snow'},
}
})
minetest.register_node("mapgen:ice", {
description = "Ice",
tiles = {"mapgen_ice.png"},
is_ground_content = true,
paramtype = "light",
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
})
-- wheat grass
minetest.register_node("mapgen:wheat_grass_1", {
description = "Wheat Grass",
drawtype = "plantlike",
tiles = {"mapgen_wheat_grass_1.png"},
-- use a bigger inventory image
inventory_image = "mapgen_wheat_grass_3.png",
wield_image = "mapgen_wheat_grass_3.png",
waving = 1,
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 2},
{items = {'farming:wheat'}, rarity=7},
{items = {''},},
}
},
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:wheat_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:wheat_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:wheat_grass_2", {
description = "Wheat Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"mapgen_wheat_grass_2.png"},
-- use a bigger inventory image
inventory_image = "mapgen_wheat_grass_3.png",
wield_image = "mapgen_wheat_grass_3.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 2},
{items = {'farming:wheat'}, rarity=7},
{items = {''},},
}
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:wheat_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:wheat_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:wheat_grass_3", {
description = "Wheat Grass",
waving = 1,
drawtype = "plantlike",
tiles = {"mapgen_wheat_grass_3.png"},
-- use a bigger inventory image
inventory_image = "mapgen_wheat_grass_3.png",
wield_image = "mapgen_wheat_grass_3.png",
paramtype = "light",
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 2},
{items = {'farming:wheat'}, rarity=7},
{items = {''},},
}
},
walkable = false,
is_ground_content = true,
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:wheat_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:wheat_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:wheat_grass_4", {
description = "Wheat Grass",
drawtype = "plantlike",
tiles = {"mapgen_wheat_grass_4.png"},
waving = 1,
-- use a bigger inventory image
inventory_image = "mapgen_wheat_grass_3.png",
wield_image = "mapgen_wheat_grass_3.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 2},
{items = {'farming:wheat'}, rarity=7},
{items = {''},},
}
},
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:wheat_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:wheat_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:wheat_grass_5", {
description = "Wheat Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"mapgen_wheat_grass_5.png"},
-- use a bigger inventory image
inventory_image = "mapgen_wheat_grass_3.png",
wield_image = "mapgen_wheat_grass_3.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
buildable_to = true,
groups = {snappy=3,flammable=3,flora=1,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
drop = {
max_items = 1,
items = {
{items = {'farming:seed_wheat'},rarity = 2},
{items = {'farming:wheat'}, rarity=7},
{items = {''},},
}
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:wheat_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:wheat_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
--
-- don't drop the *soap*stone
--
minetest.register_node("mapgen:soap_stone", {
description = "Soap Stone",
tiles = {"mapgen_soap_stone.png"},
groups = {cracky=2, stone=1},
is_ground_content = true,
sounds = default.node_sound_stone_defaults(),
})
--
-- deathly stuff
--
d_grass_min = 1
d_grass_max = 4
minetest.register_node("mapgen:deathly_grass", {
description = "Deathly Grass",
tiles = {"mapgen_deathly_grass_1.png", "mapgen_dirt.png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png"},
groups = {crumbly=1},
is_ground_content = true,
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("mapgen:deathly_grass_1", {
description = "Deathly Grass",
tiles = {"mapgen_deathly_grass_1.png", "mapgen_dirt.png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png"},
groups = {crumbly=1},
drops = "mapgen:dirt",
is_ground_content = true,
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("mapgen:deathly_grass_2", {
description = "Deathly Grass",
tiles = {"mapgen_deathly_grass_2.png", "mapgen_dirt.png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png"},
groups = {crumbly=1},
drops = "mapgen:dirt",
is_ground_content = true,
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("mapgen:deathly_grass_3", {
description = "Deathly Grass",
tiles = {"mapgen_deathly_grass_3.png", "mapgen_dirt.png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png"},
groups = {crumbly=1},
drops = "mapgen:dirt",
is_ground_content = true,
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("mapgen:deathly_grass_4", {
description = "Deathly Grass",
tiles = {"mapgen_deathly_grass_1.png", "mapgen_dirt.png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png", "mapgen_dirt.png^mapgen_deathly_grass_side_"..math.random(d_grass_min,d_grass_max)..".png"},
groups = {crumbly=1},
drops = "mapgen:dirt",
is_ground_content = true,
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("mapgen:deathly_long_grass_1", {
description = "Deathly Long Grass",
drawtype = "plantlike",
tiles = {"mapgen_deathly_long_grass_1.png"},
-- use a bigger inventory image
inventory_image = "mapgen_deathly_long_grass_1.png",
wield_image = "mapgen_deathly_long_grass_1.png",
waving = 1,
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = 'mapgen:deathly_long_grass_1',
buildable_to = true,
groups = {snappy=3,flammable=3,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:deathly_long_grass_"..math.random(1,5))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:deathly_long_grass_" .. math.random(1,5) .. " "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:deathly_long_grass_2", {
description = "Deathly Long Grass",
drawtype = "plantlike",
tiles = {"mapgen_deathly_long_grass_2.png"},
-- use a bigger inventory image
inventory_image = "mapgen_deathly_long_grass_2.png",
wield_image = "mapgen_deathly_long_grass_2.png",
waving = 1,
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = 'mapgen:deathly_long_grass_1',
buildable_to = true,
groups = {snappy=3,flammable=3,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
minetest.register_node("mapgen:deathly_long_grass_3", {
description = "Deathly Long Grass",
drawtype = "plantlike",
tiles = {"mapgen_deathly_long_grass_3.png"},
-- use a bigger inventory image
inventory_image = "mapgen_deathly_long_grass_3.png",
wield_image = "mapgen_deathly_long_grass_3.png",
waving = 1,
paramtype = "light",
walkable = false,
is_ground_content = true,
drop = 'mapgen:deathly_long_grass_1',
buildable_to = true,
groups = {snappy=3,flammable=3,attached_node=1, waving=1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
-- deathly random
minetest.register_abm({
nodenames = {"mapgen:deathly_grass"},
interval = 1,
chance = 1,
action = function(pos)
local rotationrand = math.random(1,4)
minetest.env:add_node(pos,{name="mapgen:deathly_grass_"..rotationrand})
end,
})
-- deathly spread
--NOTICE: TURNED OFF FOR NOW AS IT IS COMPLETELY OVERPOWERED. BIOMES NEED TO BE LIMITED SOMEHOW.
-- minetest.register_abm({
-- nodenames = {"mapgen:grass1","mapgen:grass2","mapgen:grass3","mapgen:grass4",},
-- neighbors = {"mapgen:deathly_grass_1","mapgen:deathly_grass_2","mapgen:deathly_grass_3","mapgen:deathly_grass_4","mapgen:deathly_long_grass_1","mapgen:deathly_long_grass_2","mapgen:deathly_long_grass_3","mapgen:deathly_tree","mapgen:deathly_log","mapgen:deathly_leaves","mapgen:deathly_leaves_deco","mapgen:deathly_sapling"},
-- interval = 180*4,
-- chance = 4,
-- action = function(pos)
-- minetest.add_node(pos,{name="mapgen:deathly_grass_"..math.random(1,4)})
-- end,
-- })
-- deathly trees
minetest.register_node("mapgen:deathly_tree", {
description = "Deathly Log",
tiles = {"mapgen_deathly_log_top.png", "mapgen_deathly_log_top.png", "mapgen_deathly_log.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2,tree=1},
drop = "mapgen:deathly_log",
})
minetest.register_node("mapgen:deathly_log", {
description = "Deathly Log",
paramtype2 = "facedir",
tiles = {"mapgen_deathly_log_top.png", "mapgen_deathly_log_top.png", "mapgen_deathly_log.png"},
is_ground_content = false,
groups = {choppy=2,oddly_breakable_by_hand=1,flammable=2},
on_place = minetest.rotate_node,
})
minetest.register_node("mapgen:deathly_leaves", {
description = "Deathly Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_deathly_leaves.png"},
paramtype = "light",
waving = 1,
is_ground_content = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
items = {'mapgen:deathly_sapling'},
rarity = 32,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'mapgen:deathly_leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("mapgen:deathly_leaves_deco")
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("mapgen:deathly_leaves".." "..itemstack:get_count()-(1-ret:get_count()))
end,
})
minetest.register_node("mapgen:deathly_leaves_deco", {
description = "Deathly Leaves",
drawtype = "allfaces_optional",
visual_scale = 1.3,
tiles = {"mapgen_deathly_leaves.png"},
paramtype = "light",
waving=1,
is_ground_content = false,
groups = {snappy=3, flammable=2, leaves=1},
sounds = default.node_sound_leaves_defaults(),
drop = {'mapgen:deathly_leaves'},
})
minetest.register_node("mapgen:deathly_sapling", {
description = "Deathly Sapling",
waving = 1,
visual_scale = 1.0,
drawtype = "plantlike",
tiles = {"mapgen_deathly_sapling.png"},
inventory_image = "mapgen_deathly_sapling.png",
wield_image = "mapgen_deathly_sapling.png",
walkable = false,
paramtype = "light",
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1},
sounds = default.node_sound_leaves_defaults(),
})
---
--- Stuff
---
minetest.register_node("mapgen:edens_grass", {
description = "Eden's Grass",
tiles = {"mapgen_edens_grass.png", "mapgen_dirt.png", "mapgen_dirt.png^mapgen_edens_grass_side.png"},
groups = {crumbly=3, soil=1},
is_ground_content = true,
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_craftitem("mapgen:apple", {
description = "Apple",
inventory_image = "mapgen_apple.png",
on_use = minetest.item_eat(2),
})
-- eden's restoration liquids abm
minetest.register_abm({
nodenames = {"mapgen:deathly_grass_1","mapgen:deathly_grass_2","mapgen:deathly_grass_3","mapgen:deathly_grass_4"},
neighbors = {"mapgen:edens_water_source", "mapgen:edens_water_flowing"},
interval = 1,
chance = 1,
action = function(pos)
minetest.set_node(pos,{name="mapgen:grass"})
end,
})
minetest.register_abm({
nodenames = {"mapgen:deathly_long_grass_1","mapgen:deathly_long_grass_2","mapgen:deathly_long_grass_3"},
neighbors = {"mapgen:edens_water_source", "mapgen:edens_water_flowing"},
interval = 1,
chance = 1,
action = function(pos)
local rand = math.random(1,3)
minetest.set_node(pos,{name="mapgen:long_grass_"..rand})
end,
})
minetest.register_abm({
nodenames = {"mapgen:deathly_tree", "mapgen:deathly_log"},
neighbors = {"mapgen:edens_water_source", "mapgen:edens_water_flowing"},
interval = 1,
chance = 1,
action = function(pos)
minetest.set_node(pos,{name="mapgen:oak_log_tree"})
end,
})
minetest.register_abm({
nodenames = {"mapgen:deathly_leaves","mapgen:deathly_leaves_deco"},
neighbors = {"mapgen:edens_water_source", "mapgen:edens_water_flowing"},
interval = 1,
chance = 1,
action = function(pos)
minetest.set_node(pos,{name="mapgen:oak_leaves"})
end,
})
minetest.register_abm({
nodenames = {"mapgen:deathly_sapling"},
neighbors = {"mapgen:edens_water_source", "mapgen:edens_water_flowing"},
interval = 1,
chance = 1,
action = function(pos)
minetest.set_node(pos,{name="mapgen:oak_sapling"})
end,
})
minetest.register_craft({
output = 'bucket:bucket_edens_water 1',
recipe = {
{'mapgen:edens_grass'},
{'bucket:bucket_water'},
}
})