summaryrefslogtreecommitdiff
path: root/dryplants/reedmace.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:00:20 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2016-04-01 21:10:04 -0400
commit888b0ebfec8c2eff9015163549a7e47443cb8665 (patch)
tree915080159bfaa6ba6e226087c7ce0e8d5464b518 /dryplants/reedmace.lua
parentda66780a569712c23ae4f2996cfb4608a9f9d69d (diff)
downloaddreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.gz
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.bz2
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.tar.xz
dreambuilder_modpack-888b0ebfec8c2eff9015163549a7e47443cb8665.zip
"explode" all modpacks into their individual components
(you can't have a modpack buried inside a modpack)
Diffstat (limited to 'dryplants/reedmace.lua')
-rw-r--r--dryplants/reedmace.lua411
1 files changed, 411 insertions, 0 deletions
diff --git a/dryplants/reedmace.lua b/dryplants/reedmace.lua
new file mode 100644
index 0000000..9547c7a
--- /dev/null
+++ b/dryplants/reedmace.lua
@@ -0,0 +1,411 @@
+-----------------------------------------------------------------------------------------------
+-- Grasses - Reedmace 0.1.1
+-----------------------------------------------------------------------------------------------
+-- by Mossmanikin
+-- textures & ideas partly by Neuromancer
+
+-- License (everything): WTFPL
+-- 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
+
+-----------------------------------------------------------------------------------------------
+-- 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.set_node(pos_01, {name="dryplants:reedmace_top"})
+ elseif minetest.get_node(pos_03).name ~= "air" then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_2"})
+ elseif size == 1 then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_top"})
+ elseif size == 2 then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_2"})
+ elseif size == 3 then
+ if spikes == 1 then
+ minetest.set_node(pos_01, {name="dryplants:reedmace_height_3_spikes"})
+ else
+ minetest.set_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.set_node(pos_02, {name="dryplants:reedmace_top"})
+ elseif minetest.get_node(pos_04).name ~= "air" then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_2"})
+ elseif size == 1 then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_top"})
+ elseif size == 2 then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_2"})
+ elseif size == 3 then
+ if spikes == 1 then
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_3_spikes"})
+ else
+ minetest.set_node(pos_02, {name="dryplants:reedmace_height_3"})
+ end
+ end
+ end
+end
+
+-----------------------------------------------------------------------------------------------
+-- REEDMACE SPIKES
+-----------------------------------------------------------------------------------------------
+minetest.register_node("dryplants:reedmace_spikes", {
+ description = "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 = "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 = "Reedmace, height: 2",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ 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 = "Reedmace, height: 3",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ 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 = "Reedmace, height: 3 & Spikes",
+ drawtype = "plantlike",
+ visual_scale = 2,
+ 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 = "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 = "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 = "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.set_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 = "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
+)