123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- -----------------------------------------------------------------------------------------------
- -- Grasses - Reedmace 0.1.1
- -----------------------------------------------------------------------------------------------
- -- by Mossmanikin
- -- textures & ideas partly by Neuromancer
- -- Contains code from: biome_lib
- -- Looked at code from: default, trees
- -----------------------------------------------------------------------------------------------
- -- NOTES (from wikipedia, some of this might get implemented)
- -- rhizomes are edible
- -- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus
- -- leaf bases can be eaten raw or cooked
- -- sheath can be removed from the developing green flower spike, which can then be boiled and eaten like corn on the cob
- -- pollen can be collected and used as a flour supplement or thickener
- -- Typha stems and leaves can be used to make paper
- -- The seed hairs were used by some Native American groups as tinder for starting fires
- -- support for i18n
- local S = minetest.get_translator("dryplants")
- -----------------------------------------------------------------------------------------------
- -- REEDMACE SHAPES
- -----------------------------------------------------------------------------------------------
- abstract_dryplants.grow_reedmace = function(pos)
- local size = math.random(1,3)
- local spikes = math.random(1,3)
- local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
- local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
- local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
- if minetest.get_node(pos_01).name == "air" -- bug fix
- or minetest.get_node(pos_01).name == "dryplants:reedmace_sapling" then
- if minetest.get_node(pos_02).name ~= "air" then
- minetest.swap_node(pos_01, {name="dryplants:reedmace_top"})
- elseif minetest.get_node(pos_03).name ~= "air" then
- minetest.swap_node(pos_01, {name="dryplants:reedmace_height_2"})
- elseif size == 1 then
- minetest.swap_node(pos_01, {name="dryplants:reedmace_top"})
- elseif size == 2 then
- minetest.swap_node(pos_01, {name="dryplants:reedmace_height_2"})
- elseif size == 3 then
- if spikes == 1 then
- minetest.swap_node(pos_01, {name="dryplants:reedmace_height_3_spikes"})
- else
- minetest.swap_node(pos_01, {name="dryplants:reedmace_height_3"})
- end
- end
- end
- end
- abstract_dryplants.grow_reedmace_water = function(pos)
- local size = math.random(1,3)
- local spikes = math.random(1,3)
- local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
- local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
- local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
- local pos_04 = {x = pos.x, y = pos.y + 4, z = pos.z}
- minetest.add_entity(pos_01, "dryplants:reedmace_water_entity")
- if minetest.get_node(pos_02).name == "air" then -- bug fix
- if minetest.get_node(pos_03).name ~= "air" then
- minetest.swap_node(pos_02, {name="dryplants:reedmace_top"})
- elseif minetest.get_node(pos_04).name ~= "air" then
- minetest.swap_node(pos_02, {name="dryplants:reedmace_height_2"})
- elseif size == 1 then
- minetest.swap_node(pos_02, {name="dryplants:reedmace_top"})
- elseif size == 2 then
- minetest.swap_node(pos_02, {name="dryplants:reedmace_height_2"})
- elseif size == 3 then
- if spikes == 1 then
- minetest.swap_node(pos_02, {name="dryplants:reedmace_height_3_spikes"})
- else
- minetest.swap_node(pos_02, {name="dryplants:reedmace_height_3"})
- end
- end
- end
- end
- -----------------------------------------------------------------------------------------------
- -- REEDMACE SPIKES
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_spikes", {
- description = S("Reedmace"),
- drawtype = "plantlike",
- paramtype = "light",
- tiles = {"dryplants_reedmace_spikes.png"},
- inventory_image = "dryplants_reedmace_spikes.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2,
- not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE height: 1
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_top", {
- description = S("Reedmace, height: 1"),
- drawtype = "plantlike",
- paramtype = "light",
- tiles = {"dryplants_reedmace_top.png"},
- inventory_image = "dryplants_reedmace_top.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2,
- not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE height: 2
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_height_2", {
- description = S("Reedmace, height: 2"),
- drawtype = "plantlike",
- visual_scale = math.sqrt(8),
- paramtype = "light",
- tiles = {"dryplants_reedmace_height_2.png"},
- inventory_image = "dryplants_reedmace_top.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2--,
- --not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE height: 3
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_height_3", {
- description = S("Reedmace, height: 3"),
- drawtype = "plantlike",
- visual_scale = math.sqrt(8),
- paramtype = "light",
- tiles = {"dryplants_reedmace_height_3.png"},
- inventory_image = "dryplants_reedmace_top.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2--,
- --not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE height: 3 & Spikes
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_height_3_spikes", {
- description = S("Reedmace, height: 3 & Spikes"),
- drawtype = "plantlike",
- visual_scale = math.sqrt(8),
- paramtype = "light",
- tiles = {"dryplants_reedmace_height_3_spikes.png"},
- inventory_image = "dryplants_reedmace_top.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2--,
- --not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE STEMS
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace", {
- description = S("Reedmace"),
- drawtype = "plantlike",
- paramtype = "light",
- tiles = {"dryplants_reedmace.png"},
- inventory_image = "dryplants_reedmace.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2,
- not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- after_destruct = function(pos,oldnode)
- local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
- if node.name == "dryplants:reedmace_top"
- or node.name == "dryplants:reedmace_spikes" then
- minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
- minetest.add_item(pos,"dryplants:reedmace_sapling")
- end
- end,
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE BOTTOM
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_bottom", {
- description = S("Reedmace"),
- drawtype = "plantlike",
- paramtype = "light",
- tiles = {"dryplants_reedmace_bottom.png"},
- inventory_image = "dryplants_reedmace_bottom.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2,
- not_in_creative_inventory=1
- },
- drop = 'dryplants:reedmace_sapling',
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- after_destruct = function(pos,oldnode)
- local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
- if node.name == "dryplants:reedmace"
- or node.name == "dryplants:reedmace_top"
- or node.name == "dryplants:reedmace_spikes" then
- minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z})
- minetest.add_item(pos,"dryplants:reedmace_sapling")
- end
- end,
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE "SAPLING" (the drop from the above)
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_sapling", {
- description = S("Reedmace"),
- drawtype = "plantlike",
- paramtype = "light",
- tiles = {"dryplants_reedmace_sapling.png"},
- inventory_image = "dryplants_reedmace_sapling.png",
- walkable = false,
- groups = {
- snappy=3,
- flammable=2,
- attached_node=1
- },
- sounds = default.node_sound_leaves_defaults(),
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -- abm
- minetest.register_abm({
- nodenames = "dryplants:reedmace_sapling",
- interval = REEDMACE_GROWING_TIME,
- chance = 100/REEDMACE_GROWING_CHANCE,
- action = function(pos, node, _, _)
- if string.find(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z }).name, "default:water")
- or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}).name, "default:water")
- or string.find(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z }).name, "default:water")
- or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}).name, "default:water") then
- if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
- abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
- end
- minetest.swap_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
- else
- abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
- end
- end
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE WATER (for entity)
- -----------------------------------------------------------------------------------------------
- minetest.register_node("dryplants:reedmace_water", {
- description = S("Reedmace"),
- drawtype = "plantlike",
- paramtype = "light",
- tiles = {"dryplants_reedmace_water.png"},
- inventory_image = "dryplants_reedmace_water.png",
- groups = {not_in_creative_inventory=1},
- selection_box = {
- type = "fixed",
- fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
- },
- })
- -----------------------------------------------------------------------------------------------
- -- REEDMACE WATER ENTITY
- -----------------------------------------------------------------------------------------------
- minetest.register_entity("dryplants:reedmace_water_entity",{
- visual = "mesh",
- mesh = "plantlike.obj",
- visual_size = {x=10, y=10},
- textures = {"dryplants_reedmace_water.png"},
- collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
- on_punch = function(self, puncher)
- if puncher:is_player() and puncher:get_inventory() then
- if not minetest.setting_getbool("creative_mode") then
- puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling")
- end
- self.object:remove()
- end
- end,
- })
- -----------------------------------------------------------------------------------------------
- -- SPAWN REEDMACE
- -----------------------------------------------------------------------------------------------
- --[[biome_lib:spawn_on_surfaces({
- spawn_delay = 1200,
- spawn_plants = {"dryplants:reedmace_sapling"},
- spawn_chance = 400,
- spawn_surfaces = {
- "default:dirt_with_grass",
- "default:desert_sand",
- "default:sand",
- "dryplants:grass_short",
- "stoneage:grass_with_silex"
- },
- seed_diff = 329,
- near_nodes = {"default:water_source"},
- near_nodes_size = 2,
- near_nodes_vertical = 1,
- near_nodes_count = 1,
- })]]
- -----------------------------------------------------------------------------------------------
- -- GENERATE REEDMACE
- -----------------------------------------------------------------------------------------------
- -- near water or swamp
- biome_lib:register_generate_plant({
- surface = {
- "default:dirt_with_grass",
- "default:desert_sand",
- "stoneage:grass_with_silex",
- "sumpf:peat",
- "sumpf:sumpf"
- },
- max_count = REEDMACE_NEAR_WATER_PER_MAPBLOCK,
- rarity = 101 - REEDMACE_NEAR_WATER_RARITY,
- --rarity = 60,
- min_elevation = 1, -- above sea level
- near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
- near_nodes_size = 2,
- near_nodes_vertical = 1,
- near_nodes_count = 1,
- plantlife_limit = -0.9,
- },
- abstract_dryplants.grow_reedmace
- )
- -- in water
- biome_lib:register_generate_plant({
- surface = {
- "default:dirt",
- "default:dirt_with_grass",
- --"default:desert_sand",
- --"stoneage:grass_with_silex",
- "stoneage:sand_with_silex",
- "sumpf:peat",
- "sumpf:sumpf"
- },
- max_count = REEDMACE_IN_WATER_PER_MAPBLOCK,
- rarity = 101 - REEDMACE_IN_WATER_RARITY,
- --rarity = 35,
- min_elevation = 0, -- a bit below sea level
- max_elevation = 0, -- ""
- near_nodes = {"default:water_source","sumpf:dirtywater_source"},
- near_nodes_size = 1,
- near_nodes_count = 1,
- plantlife_limit = -0.9,
- },
- abstract_dryplants.grow_reedmace_water
- )
- -- for oases & tropical beaches & tropical swamps
- biome_lib:register_generate_plant({
- surface = {
- "default:sand",
- "sumpf:sumpf"
- },
- max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK,
- rarity = 101 - REEDMACE_FOR_OASES_RARITY,
- --rarity = 10,
- neighbors = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
- ncount = 1,
- min_elevation = 1, -- above sea level
- near_nodes = {"default:desert_sand","sumpf:sumpf"},
- near_nodes_size = 2,
- near_nodes_vertical = 1,
- near_nodes_count = 1,
- plantlife_limit = -0.9,
- },
- abstract_dryplants.grow_reedmace
- )
|