1
0
mirror of https://github.com/minetest/minetest_game.git synced 2024-11-18 07:40:22 +01:00
minetest_game/mods/default/nodes.lua

2938 lines
81 KiB
Lua
Raw Normal View History

2013-05-19 18:43:04 +02:00
-- mods/default/nodes.lua
--[[ Node name convention:
Although many node names are in combined-word form, the required form for new
node names is words separated by underscores. If both forms are used in written
language (for example pinewood and pine wood) the underscore form should be used.
--]]
2014-12-07 16:29:36 +01:00
--[[ Index:
Stone
-----
(1. Material 2. Cobble variant 3. Brick variant 4. Modified forms)
2014-12-07 16:29:36 +01:00
default:stone
default:cobble
default:stonebrick
default:stone_block
2014-12-07 16:29:36 +01:00
default:mossycobble
default:desert_stone
default:desert_cobble
default:desert_stonebrick
default:desert_stone_block
2014-12-07 16:29:36 +01:00
default:sandstone
default:sandstonebrick
default:sandstone_block
default:desert_sandstone
default:desert_sandstone_brick
default:desert_sandstone_block
default:silver_sandstone
default:silver_sandstone_brick
default:silver_sandstone_block
2014-12-07 16:29:36 +01:00
default:obsidian
default:obsidianbrick
default:obsidian_block
2014-12-07 16:29:36 +01:00
Soft / Non-Stone
----------------
(1. Material 2. Modified forms)
2014-12-07 16:29:36 +01:00
default:dirt
default:dirt_with_grass
default:dirt_with_grass_footsteps
default:dirt_with_dry_grass
2014-12-07 16:29:36 +01:00
default:dirt_with_snow
default:dirt_with_rainforest_litter
default:dirt_with_coniferous_litter
2014-12-07 16:29:36 +01:00
default:permafrost
default:permafrost_with_stones
default:permafrost_with_moss
2014-12-07 16:29:36 +01:00
default:sand
default:desert_sand
default:silver_sand
2014-12-07 16:29:36 +01:00
default:gravel
default:clay
default:snow
default:snowblock
default:ice
default:cave_ice
2014-12-07 16:29:36 +01:00
Trees
-----
(1. Trunk 2. Fabricated trunk 3. Leaves 4. Sapling 5. Fruits)
2014-12-07 16:29:36 +01:00
default:tree
default:wood
default:leaves
default:sapling
default:apple
default:jungletree
default:junglewood
default:jungleleaves
default:junglesapling
default:emergent_jungle_sapling
2014-12-07 16:29:36 +01:00
default:pine_tree
default:pine_wood
2014-12-07 16:29:36 +01:00
default:pine_needles
default:pine_sapling
default:acacia_tree
default:acacia_wood
default:acacia_leaves
default:acacia_sapling
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
default:aspen_tree
default:aspen_wood
default:aspen_leaves
default:aspen_sapling
2014-12-07 16:29:36 +01:00
Ores
----
(1. In stone 2. Blocks)
2014-12-07 16:29:36 +01:00
default:stone_with_coal
default:coalblock
default:stone_with_iron
default:steelblock
default:stone_with_copper
default:copperblock
default:stone_with_tin
default:tinblock
2014-12-07 16:29:36 +01:00
default:bronzeblock
default:stone_with_gold
default:goldblock
default:stone_with_mese
default:mese
default:stone_with_diamond
default:diamondblock
Plantlife
---------
2014-12-07 16:29:36 +01:00
default:cactus
default:large_cactus_seedling
2014-12-07 16:29:36 +01:00
default:papyrus
default:dry_shrub
default:junglegrass
2014-12-07 16:29:36 +01:00
default:grass_1
default:grass_2
default:grass_3
default:grass_4
default:grass_5
default:dry_grass_1
default:dry_grass_2
default:dry_grass_3
default:dry_grass_4
default:dry_grass_5
default:fern_1
default:fern_2
default:fern_3
default:marram_grass_1
default:marram_grass_2
default:marram_grass_3
default:bush_stem
default:bush_leaves
default:bush_sapling
default:acacia_bush_stem
default:acacia_bush_leaves
default:acacia_bush_sapling
default:pine_bush_stem
default:pine_bush_needles
default:pine_bush_sapling
2018-10-09 21:54:22 +02:00
default:blueberry_bush_leaves_with_berries
default:blueberry_bush_leaves
default:blueberry_bush_sapling
default:sand_with_kelp
Corals
------
default:coral_brown
default:coral_orange
default:coral_skeleton
2014-12-07 16:29:36 +01:00
Liquids
-------
(1. Source 2. Flowing)
default:water_source
default:water_flowing
2015-04-17 07:50:06 +02:00
default:river_water_source
default:river_water_flowing
2014-12-07 16:29:36 +01:00
default:lava_source
default:lava_flowing
Tools / "Advanced" crafting / Non-"natural"
-------------------------------------------
2014-12-07 16:29:36 +01:00
default:bookshelf
default:sign_wall_wood
default:sign_wall_steel
2016-03-03 10:52:45 +01:00
default:ladder_wood
default:ladder_steel
2014-12-07 16:29:36 +01:00
default:fence_wood
default:fence_acacia_wood
default:fence_junglewood
default:fence_pine_wood
default:fence_aspen_wood
2014-12-07 16:29:36 +01:00
default:glass
default:obsidian_glass
default:brick
default:meselamp
default:mese_post_light
2014-12-07 16:29:36 +01:00
Misc
----
2014-12-07 16:29:36 +01:00
default:cloud
--]]
--
-- Stone
--
2013-05-19 18:43:04 +02:00
minetest.register_node("default:stone", {
description = "Stone",
tiles = {"default_stone.png"},
groups = {cracky = 3, stone = 1},
2013-05-19 18:43:04 +02:00
drop = 'default:cobble',
legacy_mineral = true,
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:cobble", {
description = "Cobblestone",
tiles = {"default_cobble.png"},
is_ground_content = false,
groups = {cracky = 3, stone = 2},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:stonebrick", {
description = "Stone Brick",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_stone_brick.png"},
is_ground_content = false,
groups = {cracky = 2, stone = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:stone_block", {
description = "Stone Block",
tiles = {"default_stone_block.png"},
is_ground_content = false,
groups = {cracky = 2, stone = 1},
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:mossycobble", {
description = "Mossy Cobblestone",
tiles = {"default_mossycobble.png"},
is_ground_content = false,
groups = {cracky = 3, stone = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
})
2013-05-19 18:43:04 +02:00
minetest.register_node("default:desert_stone", {
description = "Desert Stone",
tiles = {"default_desert_stone.png"},
groups = {cracky = 3, stone = 1},
2014-04-07 16:29:00 +02:00
drop = 'default:desert_cobble',
2013-05-19 18:43:04 +02:00
legacy_mineral = true,
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:desert_cobble", {
description = "Desert Cobblestone",
tiles = {"default_desert_cobble.png"},
is_ground_content = false,
groups = {cracky = 3, stone = 2},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:desert_stonebrick", {
description = "Desert Stone Brick",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_desert_stone_brick.png"},
is_ground_content = false,
groups = {cracky = 2, stone = 1},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:desert_stone_block", {
description = "Desert Stone Block",
tiles = {"default_desert_stone_block.png"},
is_ground_content = false,
groups = {cracky = 2, stone = 1},
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:sandstone", {
description = "Sandstone",
tiles = {"default_sandstone.png"},
groups = {crumbly = 1, cracky = 3},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:sandstonebrick", {
description = "Sandstone Brick",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_sandstone_brick.png"},
is_ground_content = false,
groups = {cracky = 2},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_stone_defaults(),
})
2013-06-08 18:08:48 +02:00
minetest.register_node("default:sandstone_block", {
description = "Sandstone Block",
tiles = {"default_sandstone_block.png"},
is_ground_content = false,
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:desert_sandstone", {
description = "Desert Sandstone",
tiles = {"default_desert_sandstone.png"},
groups = {crumbly = 1, cracky = 3},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:desert_sandstone_brick", {
description = "Desert Sandstone Brick",
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"default_desert_sandstone_brick.png"},
is_ground_content = false,
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:desert_sandstone_block", {
description = "Desert Sandstone Block",
tiles = {"default_desert_sandstone_block.png"},
is_ground_content = false,
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:silver_sandstone", {
description = "Silver Sandstone",
tiles = {"default_silver_sandstone.png"},
groups = {crumbly = 1, cracky = 3},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:silver_sandstone_brick", {
description = "Silver Sandstone Brick",
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"default_silver_sandstone_brick.png"},
is_ground_content = false,
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:silver_sandstone_block", {
description = "Silver Sandstone Block",
tiles = {"default_silver_sandstone_block.png"},
is_ground_content = false,
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:obsidian", {
description = "Obsidian",
tiles = {"default_obsidian.png"},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 1, level = 2},
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:obsidianbrick", {
description = "Obsidian Brick",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_obsidian_brick.png"},
is_ground_content = false,
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 1, level = 2},
2013-05-19 18:43:04 +02:00
})
minetest.register_node("default:obsidian_block", {
description = "Obsidian Block",
tiles = {"default_obsidian_block.png"},
is_ground_content = false,
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 1, level = 2},
})
2014-12-07 16:29:36 +01:00
--
-- Soft / Non-Stone
--
minetest.register_node("default:dirt", {
description = "Dirt",
tiles = {"default_dirt.png"},
groups = {crumbly = 3, soil = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_dirt_defaults(),
2013-05-19 18:43:04 +02:00
})
minetest.register_node("default:dirt_with_grass", {
description = "Dirt with Grass",
2015-08-19 00:26:32 +02:00
tiles = {"default_grass.png", "default_dirt.png",
{name = "default_dirt.png^default_grass_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
2013-05-19 18:43:04 +02:00
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.25},
2013-05-19 18:43:04 +02:00
}),
})
minetest.register_node("default:dirt_with_grass_footsteps", {
description = "Dirt with Grass and Footsteps",
tiles = {"default_grass.png^default_footprint.png", "default_dirt.png",
2015-08-19 00:26:32 +02:00
{name = "default_dirt.png^default_grass_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
minetest.register_node("default:dirt_with_dry_grass", {
description = "Dirt with Dry Grass",
tiles = {"default_dry_grass.png",
"default_dirt.png",
2015-08-19 00:26:32 +02:00
{name = "default_dirt.png^default_dry_grass_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.4},
}),
})
2013-05-19 18:43:04 +02:00
minetest.register_node("default:dirt_with_snow", {
description = "Dirt with Snow",
2015-08-19 00:26:32 +02:00
tiles = {"default_snow.png", "default_dirt.png",
{name = "default_dirt.png^default_snow_side.png",
tileable_vertical = false}},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1, snowy = 1},
2013-05-19 18:43:04 +02:00
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_snow_footstep", gain = 0.2},
2013-05-19 18:43:04 +02:00
}),
})
minetest.register_node("default:dirt_with_rainforest_litter", {
description = "Dirt with Rainforest Litter",
tiles = {
"default_rainforest_litter.png",
"default_dirt.png",
{name = "default_dirt.png^default_rainforest_litter_side.png",
tileable_vertical = false}
},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
drop = "default:dirt",
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.4},
}),
})
minetest.register_node("default:dirt_with_coniferous_litter", {
description = "Dirt with Coniferous Litter",
tiles = {
"default_coniferous_litter.png",
"default_dirt.png",
{name = "default_dirt.png^default_coniferous_litter_side.png",
tileable_vertical = false}
},
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
drop = "default:dirt",
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.4},
}),
})
minetest.register_node("default:permafrost", {
description = "Permafrost",
tiles = {"default_permafrost.png"},
groups = {cracky = 3},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("default:permafrost_with_stones", {
description = "Permafrost with Stones",
tiles = {"default_permafrost.png^default_stones.png",
"default_permafrost.png",
"default_permafrost.png^default_stones_side.png"},
groups = {cracky = 3},
sounds = default.node_sound_gravel_defaults(),
})
minetest.register_node("default:permafrost_with_moss", {
description = "Permafrost with Moss",
tiles = {"default_moss.png", "default_permafrost.png",
{name = "default_permafrost.png^default_moss_side.png",
tileable_vertical = false}},
groups = {cracky = 3},
sounds = default.node_sound_dirt_defaults({
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
})
2013-05-19 18:43:04 +02:00
minetest.register_node("default:sand", {
description = "Sand",
tiles = {"default_sand.png"},
groups = {crumbly = 3, falling_node = 1, sand = 1},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("default:desert_sand", {
description = "Desert Sand",
tiles = {"default_desert_sand.png"},
groups = {crumbly = 3, falling_node = 1, sand = 1},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("default:silver_sand", {
description = "Silver Sand",
tiles = {"default_silver_sand.png"},
groups = {crumbly = 3, falling_node = 1, sand = 1},
sounds = default.node_sound_sand_defaults(),
})
2014-12-07 16:29:36 +01:00
2013-05-19 18:43:04 +02:00
minetest.register_node("default:gravel", {
description = "Gravel",
tiles = {"default_gravel.png"},
groups = {crumbly = 2, falling_node = 1},
sounds = default.node_sound_gravel_defaults(),
2016-03-11 18:27:22 +01:00
drop = {
max_items = 1,
items = {
{items = {'default:flint'}, rarity = 16},
{items = {'default:gravel'}}
}
}
2013-05-19 18:43:04 +02:00
})
minetest.register_node("default:clay", {
description = "Clay",
tiles = {"default_clay.png"},
groups = {crumbly = 3},
2013-05-19 18:43:04 +02:00
drop = 'default:clay_lump 4',
2013-06-11 23:23:10 +02:00
sounds = default.node_sound_dirt_defaults(),
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:snow", {
description = "Snow",
tiles = {"default_snow.png"},
inventory_image = "default_snowball.png",
wield_image = "default_snowball.png",
paramtype = "light",
buildable_to = true,
floodable = true,
2014-12-07 16:29:36 +01:00
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
2015-07-24 02:24:13 +02:00
{-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
2014-12-07 16:29:36 +01:00
},
},
collision_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, -7 / 16, 0.5},
},
},
groups = {crumbly = 3, falling_node = 1, snowy = 1},
sounds = default.node_sound_snow_defaults(),
2014-12-07 16:29:36 +01:00
on_construct = function(pos)
pos.y = pos.y - 1
if minetest.get_node(pos).name == "default:dirt_with_grass" then
2015-07-24 02:24:13 +02:00
minetest.set_node(pos, {name = "default:dirt_with_snow"})
2014-12-07 16:29:36 +01:00
end
end,
})
2015-02-26 09:21:28 +01:00
2014-12-07 16:29:36 +01:00
minetest.register_node("default:snowblock", {
description = "Snow Block",
tiles = {"default_snow.png"},
groups = {crumbly = 3, cools_lava = 1, snowy = 1},
sounds = default.node_sound_snow_defaults(),
on_construct = function(pos)
pos.y = pos.y - 1
if minetest.get_node(pos).name == "default:dirt_with_grass" then
minetest.set_node(pos, {name = "default:dirt_with_snow"})
end
end,
2014-12-07 16:29:36 +01:00
})
-- 'is ground content = false' to avoid tunnels in sea ice or ice rivers
2014-12-07 16:29:36 +01:00
minetest.register_node("default:ice", {
description = "Ice",
tiles = {"default_ice.png"},
is_ground_content = false,
2014-12-07 16:29:36 +01:00
paramtype = "light",
groups = {cracky = 3, cools_lava = 1, slippery = 3},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_glass_defaults(),
2013-05-19 18:43:04 +02:00
})
-- Mapgen-placed ice with 'is ground content = true' to contain tunnels
minetest.register_node("default:cave_ice", {
description = "Cave Ice",
tiles = {"default_ice.png"},
paramtype = "light",
groups = {cracky = 3, cools_lava = 1, slippery = 3,
not_in_creative_inventory = 1},
drop = "default:ice",
sounds = default.node_sound_glass_defaults(),
})
2014-12-07 16:29:36 +01:00
--
-- Trees
--
2013-05-19 18:43:04 +02:00
minetest.register_node("default:tree", {
2017-07-23 10:26:10 +02:00
description = "Apple Tree",
2013-05-19 18:43:04 +02:00
tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
2013-11-07 17:48:00 +01:00
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_wood_defaults(),
2013-11-07 17:48:00 +01:00
on_place = minetest.rotate_node
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:wood", {
2017-07-23 10:26:10 +02:00
description = "Apple Wood Planks",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_wood_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:sapling", {
2017-07-23 10:26:10 +02:00
description = "Apple Tree Sapling",
2014-12-07 16:29:36 +01:00
drawtype = "plantlike",
tiles = {"default_sapling.png"},
inventory_image = "default_sapling.png",
wield_image = "default_sapling.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
sunlight_propagates = true,
2014-12-07 16:29:36 +01:00
walkable = false,
on_timer = default.grow_sapling,
2014-12-07 16:29:36 +01:00
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
2014-12-07 16:29:36 +01:00
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:sapling",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
{x = -3, y = 1, z = -3},
{x = 3, y = 6, z = 3},
-- maximum interval of interior volume check
4)
return itemstack
end,
2014-12-07 16:29:36 +01:00
})
minetest.register_node("default:leaves", {
2017-07-23 10:26:10 +02:00
description = "Apple Tree Leaves",
2014-12-07 16:29:36 +01:00
drawtype = "allfaces_optional",
waving = 1,
tiles = {"default_leaves.png"},
special_tiles = {"default_leaves_simple.png"},
2014-12-07 16:29:36 +01:00
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
2013-05-19 18:43:04 +02:00
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/20 chance
2014-12-07 16:29:36 +01:00
items = {'default:sapling'},
2013-05-19 18:43:04 +02:00
rarity = 20,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
2014-12-07 16:29:36 +01:00
items = {'default:leaves'},
2013-05-19 18:43:04 +02:00
}
}
},
sounds = default.node_sound_leaves_defaults(),
2014-12-07 16:29:36 +01:00
after_place_node = default.after_place_leaves,
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:apple", {
description = "Apple",
2013-05-19 18:43:04 +02:00
drawtype = "plantlike",
2014-12-07 16:29:36 +01:00
tiles = {"default_apple.png"},
inventory_image = "default_apple.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
2014-12-07 16:29:36 +01:00
sunlight_propagates = true,
2013-05-19 18:43:04 +02:00
walkable = false,
is_ground_content = false,
2013-05-19 18:43:04 +02:00
selection_box = {
type = "fixed",
fixed = {-3 / 16, -7 / 16, -3 / 16, 3 / 16, 4 / 16, 3 / 16}
2013-05-19 18:43:04 +02:00
},
groups = {fleshy = 3, dig_immediate = 3, flammable = 2,
leafdecay = 3, leafdecay_drop = 1, food_apple = 1},
on_use = minetest.item_eat(2),
2013-06-11 23:23:10 +02:00
sounds = default.node_sound_leaves_defaults(),
2014-12-07 16:29:36 +01:00
after_place_node = function(pos, placer, itemstack)
2017-10-01 15:41:58 +02:00
minetest.set_node(pos, {name = "default:apple", param2 = 1})
2014-12-07 16:29:36 +01:00
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if oldnode.param2 == 0 then
minetest.set_node(pos, {name = "default:apple_mark"})
minetest.get_node_timer(pos):start(math.random(300, 1500))
end
end,
})
minetest.register_node("default:apple_mark", {
description = "Apple Marker",
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
on_timer = function(pos, elapsed)
if not minetest.find_node_near(pos, 1, "default:leaves") then
minetest.remove_node(pos)
elseif minetest.get_node_light(pos) < 11 then
minetest.get_node_timer(pos):start(200)
else
minetest.set_node(pos, {name = "default:apple"})
end
end
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:jungletree", {
description = "Jungle Tree",
tiles = {"default_jungletree_top.png", "default_jungletree_top.png",
"default_jungletree.png"},
2014-12-07 16:29:36 +01:00
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:junglewood", {
2017-05-24 23:22:17 +02:00
description = "Jungle Wood Planks",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_junglewood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("default:jungleleaves", {
description = "Jungle Tree Leaves",
2013-05-19 18:43:04 +02:00
drawtype = "allfaces_optional",
waving = 1,
2014-12-07 16:29:36 +01:00
tiles = {"default_jungleleaves.png"},
special_tiles = {"default_jungleleaves_simple.png"},
2013-05-19 18:43:04 +02:00
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
2013-05-19 18:43:04 +02:00
drop = {
max_items = 1,
items = {
{items = {'default:junglesapling'}, rarity = 20},
{items = {'default:jungleleaves'}}
2013-05-19 18:43:04 +02:00
}
},
sounds = default.node_sound_leaves_defaults(),
2014-12-07 16:29:36 +01:00
after_place_node = default.after_place_leaves,
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:junglesapling", {
description = "Jungle Tree Sapling",
2013-05-19 18:43:04 +02:00
drawtype = "plantlike",
2014-12-07 16:29:36 +01:00
tiles = {"default_junglesapling.png"},
inventory_image = "default_junglesapling.png",
wield_image = "default_junglesapling.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
sunlight_propagates = true,
2013-05-19 18:43:04 +02:00
walkable = false,
on_timer = default.grow_sapling,
2013-05-19 18:43:04 +02:00
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
2013-05-19 18:43:04 +02:00
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:junglesapling",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
{x = -2, y = 1, z = -2},
{x = 2, y = 15, z = 2},
-- maximum interval of interior volume check
4)
return itemstack
end,
2013-05-19 18:43:04 +02:00
})
minetest.register_node("default:emergent_jungle_sapling", {
description = "Emergent Jungle Tree Sapling",
drawtype = "plantlike",
tiles = {"default_emergent_jungle_sapling.png"},
inventory_image = "default_emergent_jungle_sapling.png",
wield_image = "default_emergent_jungle_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:emergent_jungle_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -3, y = -5, z = -3},
{x = 3, y = 31, z = 3},
-- maximum interval of interior volume check
4)
return itemstack
end,
})
2014-04-15 21:04:34 +02:00
minetest.register_node("default:pine_tree", {
2014-12-07 16:29:36 +01:00
description = "Pine Tree",
tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png",
"default_pine_tree.png"},
2014-12-07 16:29:36 +01:00
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_wood_defaults(),
2014-12-07 16:29:36 +01:00
on_place = minetest.rotate_node
})
minetest.register_node("default:pine_wood", {
description = "Pine Wood Planks",
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"default_pine_wood.png"},
is_ground_content = false,
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_wood_defaults(),
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:pine_needles",{
description = "Pine Needles",
drawtype = "allfaces_optional",
tiles = {"default_pine_needles.png"},
waving = 1,
2013-05-19 18:43:04 +02:00
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
2014-12-07 16:29:36 +01:00
drop = {
max_items = 1,
items = {
{items = {"default:pine_sapling"}, rarity = 20},
{items = {"default:pine_needles"}}
2014-12-07 16:29:36 +01:00
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:pine_sapling", {
description = "Pine Tree Sapling",
2014-12-07 16:29:36 +01:00
drawtype = "plantlike",
tiles = {"default_pine_sapling.png"},
inventory_image = "default_pine_sapling.png",
wield_image = "default_pine_sapling.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
sunlight_propagates = true,
2014-12-07 16:29:36 +01:00
walkable = false,
on_timer = default.grow_sapling,
2013-05-19 18:43:04 +02:00
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
2013-05-19 18:43:04 +02:00
},
groups = {snappy = 2, dig_immediate = 3, flammable = 3,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:pine_sapling",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
{x = -2, y = 1, z = -2},
{x = 2, y = 14, z = 2},
-- maximum interval of interior volume check
4)
return itemstack
end,
})
minetest.register_node("default:acacia_tree", {
description = "Acacia Tree",
tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png",
"default_acacia_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("default:acacia_wood", {
description = "Acacia Wood Planks",
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"default_acacia_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("default:acacia_leaves", {
description = "Acacia Tree Leaves",
drawtype = "allfaces_optional",
tiles = {"default_acacia_leaves.png"},
special_tiles = {"default_acacia_leaves_simple.png"},
waving = 1,
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:acacia_sapling"}, rarity = 20},
{items = {"default:acacia_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:acacia_sapling", {
description = "Acacia Tree Sapling",
drawtype = "plantlike",
tiles = {"default_acacia_sapling.png"},
inventory_image = "default_acacia_sapling.png",
wield_image = "default_acacia_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:acacia_sapling",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
{x = -4, y = 1, z = -4},
{x = 4, y = 7, z = 4},
-- maximum interval of interior volume check
4)
return itemstack
end,
2013-05-19 18:43:04 +02:00
})
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
minetest.register_node("default:aspen_tree", {
description = "Aspen Tree",
tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png",
"default_aspen_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3},
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("default:aspen_wood", {
description = "Aspen Wood Planks",
paramtype2 = "facedir",
place_param2 = 0,
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
tiles = {"default_aspen_wood.png"},
is_ground_content = false,
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("default:aspen_leaves", {
description = "Aspen Tree Leaves",
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
drawtype = "allfaces_optional",
tiles = {"default_aspen_leaves.png"},
waving = 1,
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:aspen_sapling"}, rarity = 20},
{items = {"default:aspen_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:aspen_sapling", {
description = "Aspen Tree Sapling",
drawtype = "plantlike",
tiles = {"default_aspen_sapling.png"},
inventory_image = "default_aspen_sapling.png",
wield_image = "default_aspen_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
selection_box = {
type = "fixed",
fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16}
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
},
groups = {snappy = 2, dig_immediate = 3, flammable = 3,
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:aspen_sapling",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
{x = -2, y = 1, z = -2},
{x = 2, y = 12, z = 2},
-- maximum interval of interior volume check
4)
return itemstack
end,
Aspen trees. Adds a birch-like tree to the default_game. Aspen was chosen on purpose instead of birch, as several birch tree mods already exist and choosing a different name avoids any conflicts. Schematics were made for both normal and sapling version, assuring saplings will not be able to grief. The shape of the Aspen is "fanning out at the top" and provides an easy tree to walk under, but still a somewhat thick cover. The Aspen trunk is 4 to 6 blocks tall, with up to three layers of leaves on top, making it slightly taller than an Apple tree, but shorter than a Pine tree, which provides a good blend. Textures were painted from scratch, except tree_top and _wood variants, which are color modified versions of the pine_wood variants. Appropriate licenses have been chosen for the new textures. The leaf texture is light enough to contrast other trees, but dark enough to offset against our light default grass color. The leaves are drawn in the typical minetest default fashion with plenty of transparancy, but enough definition to suggest that you're seeing something that looks like leaves. The placement of leaves in the schematic also suggests the top of the tree is sparse and you can see the sky through the leaves. Sapling texture is both traditional and different, with lush green leaves and a well-defined stem, but slightly stick-like and skinny, as these plants tend to grow up first, then out. Add fallen Aspen logs. We make these logs a minimum of 2 blocks long, and up to 3. This allows us to make these logs a place where both red and brown mushrooms can be found, to these may be attractive to players. However, the spawn rate for these has been reduced a lot compared to the other logs, to account for the scarcity of Aspen. Add stairs, slabs for these wood types as well. Mapgen will place these trees in deciduous forests only, but in a way that the biome is a range between entirely Apple trees, and mostly entirely Aspen trees, with a bias to Apple trees. To make fallen logs somewhat correlated with trees, we modify the planting of Apple trees and logs to use perlin noise and not fill ratio, otherwise you'd always end up with Apple logs in Aspen tree areas, which would be suspicious. There still is a bit of a mix.
2016-01-05 02:56:20 +01:00
})
2014-12-07 16:29:36 +01:00
--
-- Ores
--
minetest.register_node("default:stone_with_coal", {
description = "Coal Ore",
tiles = {"default_stone.png^default_mineral_coal.png"},
groups = {cracky = 3},
2014-12-07 16:29:36 +01:00
drop = 'default:coal_lump',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:coalblock", {
description = "Coal Block",
tiles = {"default_coal_block.png"},
is_ground_content = false,
groups = {cracky = 3},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:stone_with_iron", {
description = "Iron Ore",
tiles = {"default_stone.png^default_mineral_iron.png"},
groups = {cracky = 2},
2014-12-07 16:29:36 +01:00
drop = 'default:iron_lump',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:steelblock", {
description = "Steel Block",
tiles = {"default_steel_block.png"},
is_ground_content = false,
groups = {cracky = 1, level = 2},
sounds = default.node_sound_metal_defaults(),
2014-12-07 16:29:36 +01:00
})
minetest.register_node("default:stone_with_copper", {
description = "Copper Ore",
tiles = {"default_stone.png^default_mineral_copper.png"},
groups = {cracky = 2},
2014-12-07 16:29:36 +01:00
drop = 'default:copper_lump',
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:copperblock", {
description = "Copper Block",
tiles = {"default_copper_block.png"},
is_ground_content = false,
groups = {cracky = 1, level = 2},
sounds = default.node_sound_metal_defaults(),
2014-12-07 16:29:36 +01:00
})
minetest.register_node("default:stone_with_tin", {
description = "Tin Ore",
tiles = {"default_stone.png^default_mineral_tin.png"},
groups = {cracky = 2},
drop = "default:tin_lump",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:tinblock", {
description = "Tin Block",
tiles = {"default_tin_block.png"},
is_ground_content = false,
groups = {cracky = 1, level = 2},
sounds = default.node_sound_metal_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:bronzeblock", {
description = "Bronze Block",
tiles = {"default_bronze_block.png"},
is_ground_content = false,
groups = {cracky = 1, level = 2},
sounds = default.node_sound_metal_defaults(),
2014-12-07 16:29:36 +01:00
})
minetest.register_node("default:stone_with_mese", {
description = "Mese Ore",
tiles = {"default_stone.png^default_mineral_mese.png"},
groups = {cracky = 1},
2014-12-07 16:29:36 +01:00
drop = "default:mese_crystal",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:mese", {
description = "Mese Block",
tiles = {"default_mese_block.png"},
paramtype = "light",
groups = {cracky = 1, level = 2},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
light_source = 3,
2014-12-07 16:29:36 +01:00
})
2015-02-26 09:21:28 +01:00
2014-12-07 16:29:36 +01:00
minetest.register_node("default:stone_with_gold", {
description = "Gold Ore",
tiles = {"default_stone.png^default_mineral_gold.png"},
groups = {cracky = 2},
2014-12-07 16:29:36 +01:00
drop = "default:gold_lump",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:goldblock", {
description = "Gold Block",
tiles = {"default_gold_block.png"},
is_ground_content = false,
groups = {cracky = 1},
sounds = default.node_sound_metal_defaults(),
2014-12-07 16:29:36 +01:00
})
minetest.register_node("default:stone_with_diamond", {
description = "Diamond Ore",
tiles = {"default_stone.png^default_mineral_diamond.png"},
groups = {cracky = 1},
2014-12-07 16:29:36 +01:00
drop = "default:diamond",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:diamondblock", {
description = "Diamond Block",
tiles = {"default_diamond_block.png"},
is_ground_content = false,
groups = {cracky = 1, level = 3},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
})
--
-- Plantlife (non-cubic)
--
minetest.register_node("default:cactus", {
description = "Cactus",
tiles = {"default_cactus_top.png", "default_cactus_top.png",
"default_cactus_side.png"},
2014-12-07 16:29:36 +01:00
paramtype2 = "facedir",
groups = {choppy = 3},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
minetest.register_node("default:large_cactus_seedling", {
description = "Large Cactus Seedling",
drawtype = "plantlike",
tiles = {"default_large_cactus_seedling.png"},
inventory_image = "default_large_cactus_seedling.png",
wield_image = "default_large_cactus_seedling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
selection_box = {
type = "fixed",
fixed = {
-5 / 16, -0.5, -5 / 16,
5 / 16, 0.5, 5 / 16
}
},
groups = {choppy = 3, dig_immediate = 3, attached_node = 1},
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:large_cactus_seedling",
{x = -2, y = -1, z = -2},
{x = 2, y = 5, z = 2},
4)
return itemstack
end,
on_construct = function(pos)
-- Normal cactus farming adds 1 cactus node by ABM,
-- interval 12s, chance 83.
-- Consider starting with 5 cactus nodes. We make sure that growing a
-- large cactus is not a faster way to produce new cactus nodes.
-- Confirmed by experiment, when farming 5 cacti, on average 1 new
-- cactus node is added on average every
-- 83 / 5 = 16.6 intervals = 16.6 * 12 = 199.2s.
-- Large cactus contains on average 14 cactus nodes.
-- 14 * 199.2 = 2788.8s.
-- Set random range to average to 2789s.
minetest.get_node_timer(pos):start(math.random(1859, 3719))
end,
on_timer = function(pos)
local node_under = minetest.get_node_or_nil(
{x = pos.x, y = pos.y - 1, z = pos.z})
if not node_under then
-- Node under not yet loaded, try later
minetest.get_node_timer(pos):start(300)
return
end
if minetest.get_item_group(node_under.name, "sand") == 0 then
-- Seedling dies
minetest.remove_node(pos)
return
end
local light_level = minetest.get_node_light(pos)
if not light_level or light_level < 13 then
-- Too dark for growth, try later in case it's night
minetest.get_node_timer(pos):start(300)
return
end
minetest.log("action", "A large cactus seedling grows into a large" ..
"cactus at ".. minetest.pos_to_string(pos))
default.grow_large_cactus(pos)
end,
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:papyrus", {
description = "Papyrus",
drawtype = "plantlike",
tiles = {"default_papyrus.png"},
inventory_image = "default_papyrus.png",
wield_image = "default_papyrus.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
sunlight_propagates = true,
2013-05-19 18:43:04 +02:00
walkable = false,
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
2013-05-19 18:43:04 +02:00
},
groups = {snappy = 3, flammable = 2},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger)
end,
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:dry_shrub", {
description = "Dry Shrub",
drawtype = "plantlike",
waving = 1,
tiles = {"default_dry_shrub.png"},
inventory_image = "default_dry_shrub.png",
wield_image = "default_dry_shrub.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
paramtype2 = "meshoptions",
place_param2 = 4,
sunlight_propagates = true,
2013-05-19 18:43:04 +02:00
walkable = false,
2014-12-07 16:29:36 +01:00
buildable_to = true,
groups = {snappy = 3, flammable = 3, attached_node = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
2013-05-19 18:43:04 +02:00
selection_box = {
2014-12-07 16:29:36 +01:00
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 4 / 16, 6 / 16},
2013-05-19 18:43:04 +02:00
},
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:junglegrass", {
description = "Jungle Grass",
drawtype = "plantlike",
waving = 1,
visual_scale = 1.69,
2014-12-07 16:29:36 +01:00
tiles = {"default_junglegrass.png"},
inventory_image = "default_junglegrass.png",
wield_image = "default_junglegrass.png",
paramtype = "light",
sunlight_propagates = true,
2014-12-07 16:29:36 +01:00
walkable = false,
buildable_to = true,
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
2017-12-24 20:24:11 +01:00
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
2014-12-07 16:29:36 +01:00
},
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:grass_1", {
description = "Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"default_grass_1.png"},
2014-12-12 17:47:31 +01:00
-- Use texture of a taller grass stage in inventory
2014-12-07 16:29:36 +01:00
inventory_image = "default_grass_3.png",
wield_image = "default_grass_3.png",
paramtype = "light",
sunlight_propagates = true,
2014-12-07 16:29:36 +01:00
walkable = false,
buildable_to = true,
groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, flammable = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -5 / 16, 6 / 16},
2014-12-07 16:29:36 +01:00
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random grass node
local stack = ItemStack("default:grass_" .. math.random(1,5))
2014-12-07 16:29:36 +01:00
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("default:grass_1 " ..
itemstack:get_count() - (1 - ret:get_count()))
2014-12-07 16:29:36 +01:00
end,
2013-05-19 18:43:04 +02:00
})
for i = 2, 5 do
minetest.register_node("default:grass_" .. i, {
2014-12-07 16:29:36 +01:00
description = "Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"default_grass_" .. i .. ".png"},
inventory_image = "default_grass_" .. i .. ".png",
wield_image = "default_grass_" .. i .. ".png",
2014-12-07 16:29:36 +01:00
paramtype = "light",
sunlight_propagates = true,
2014-12-07 16:29:36 +01:00
walkable = false,
buildable_to = true,
drop = "default:grass_1",
groups = {snappy = 3, flora = 1, attached_node = 1,
not_in_creative_inventory = 1, grass = 1, flammable = 1},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
2014-12-07 16:29:36 +01:00
},
})
end
2015-07-17 16:53:56 +02:00
minetest.register_node("default:dry_grass_1", {
description = "Dry Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"default_dry_grass_1.png"},
inventory_image = "default_dry_grass_3.png",
wield_image = "default_dry_grass_3.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, flora = 1,
attached_node = 1, dry_grass = 1},
2015-07-17 16:53:56 +02:00
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
2015-07-17 16:53:56 +02:00
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random dry grass node
local stack = ItemStack("default:dry_grass_" .. math.random(1, 5))
2015-07-17 16:53:56 +02:00
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("default:dry_grass_1 " ..
itemstack:get_count() - (1 - ret:get_count()))
2015-07-17 16:53:56 +02:00
end,
})
for i = 2, 5 do
minetest.register_node("default:dry_grass_" .. i, {
description = "Dry Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"default_dry_grass_" .. i .. ".png"},
inventory_image = "default_dry_grass_" .. i .. ".png",
wield_image = "default_dry_grass_" .. i .. ".png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1,
not_in_creative_inventory=1, dry_grass = 1},
drop = "default:dry_grass_1",
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -1 / 16, 6 / 16},
},
})
end
minetest.register_node("default:fern_1", {
description = "Fern",
drawtype = "plantlike",
waving = 1,
tiles = {"default_fern_1.png"},
inventory_image = "default_fern_1.png",
wield_image = "default_fern_1.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random fern node
local stack = ItemStack("default:fern_" .. math.random(1, 3))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("default:fern_1 " ..
itemstack:get_count() - (1 - ret:get_count()))
end,
})
for i = 2, 3 do
minetest.register_node("default:fern_" .. i, {
description = "Fern",
drawtype = "plantlike",
waving = 1,
visual_scale = 2,
tiles = {"default_fern_" .. i .. ".png"},
inventory_image = "default_fern_" .. i .. ".png",
wield_image = "default_fern_" .. i .. ".png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1,
not_in_creative_inventory=1},
drop = "default:fern_1",
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
},
})
end
minetest.register_node("default:marram_grass_1", {
description = "Marram Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"default_marram_grass_1.png"},
inventory_image = "default_marram_grass_1.png",
wield_image = "default_marram_grass_1.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, attached_node = 1},
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
},
on_place = function(itemstack, placer, pointed_thing)
-- place a random marram grass node
local stack = ItemStack("default:marram_grass_" .. math.random(1, 3))
local ret = minetest.item_place(stack, placer, pointed_thing)
return ItemStack("default:marram_grass_1 " ..
itemstack:get_count() - (1 - ret:get_count()))
end,
})
for i = 2, 3 do
minetest.register_node("default:marram_grass_" .. i, {
description = "Marram Grass",
drawtype = "plantlike",
waving = 1,
tiles = {"default_marram_grass_" .. i .. ".png"},
inventory_image = "default_marram_grass_" .. i .. ".png",
wield_image = "default_marram_grass_" .. i .. ".png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = {snappy = 3, flammable = 3, attached_node = 1,
not_in_creative_inventory=1},
drop = "default:marram_grass_1",
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
},
})
end
minetest.register_node("default:bush_stem", {
description = "Bush Stem",
drawtype = "plantlike",
visual_scale = 1.41,
tiles = {"default_bush_stem.png"},
inventory_image = "default_bush_stem.png",
wield_image = "default_bush_stem.png",
paramtype = "light",
sunlight_propagates = true,
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16},
},
})
minetest.register_node("default:bush_leaves", {
description = "Bush Leaves",
drawtype = "allfaces_optional",
waving = 1,
tiles = {"default_leaves_simple.png"},
paramtype = "light",
groups = {snappy = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:bush_sapling"}, rarity = 5},
{items = {"default:bush_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:bush_sapling", {
description = "Bush Sapling",
drawtype = "plantlike",
tiles = {"default_bush_sapling.png"},
inventory_image = "default_bush_sapling.png",
wield_image = "default_bush_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:bush_sapling",
-- minp, maxp to be checked, relative to sapling pos
2018-10-09 21:54:22 +02:00
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
minetest.register_node("default:blueberry_bush_leaves_with_berries", {
description = "Blueberry Bush Leaves with Berries",
drawtype = "allfaces_optional",
waving = 1,
tiles = {"default_blueberry_bush_leaves.png^default_blueberry_overlay.png"},
paramtype = "light",
groups = {snappy = 3, flammable = 2, leaves = 1, dig_immediate = 3},
drop = "default:blueberries",
sounds = default.node_sound_leaves_defaults(),
node_dig_prediction = "default:blueberry_bush_leaves",
after_dig_node = function(pos, oldnode, oldmetadata, digger)
minetest.set_node(pos, {name = "default:blueberry_bush_leaves"})
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
})
minetest.register_node("default:blueberry_bush_leaves", {
description = "Blueberry Bush Leaves",
drawtype = "allfaces_optional",
waving = 1,
tiles = {"default_blueberry_bush_leaves.png"},
paramtype = "light",
groups = {snappy = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:blueberry_bush_sapling"}, rarity = 5},
{items = {"default:blueberry_bush_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) < 11 then
minetest.get_node_timer(pos):start(200)
else
minetest.set_node(pos, {name = "default:blueberry_bush_leaves_with_berries"})
end
end,
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:blueberry_bush_sapling", {
description = "Blueberry Bush Sapling",
drawtype = "plantlike",
tiles = {"default_blueberry_bush_sapling.png"},
inventory_image = "default_blueberry_bush_sapling.png",
wield_image = "default_blueberry_bush_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:blueberry_bush_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
minetest.register_node("default:acacia_bush_stem", {
description = "Acacia Bush Stem",
drawtype = "plantlike",
visual_scale = 1.41,
tiles = {"default_acacia_bush_stem.png"},
inventory_image = "default_acacia_bush_stem.png",
wield_image = "default_acacia_bush_stem.png",
paramtype = "light",
sunlight_propagates = true,
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16},
},
})
minetest.register_node("default:acacia_bush_leaves", {
description = "Acacia Bush Leaves",
drawtype = "allfaces_optional",
waving = 1,
tiles = {"default_acacia_leaves_simple.png"},
paramtype = "light",
groups = {snappy = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:acacia_bush_sapling"}, rarity = 5},
{items = {"default:acacia_bush_leaves"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:acacia_bush_sapling", {
description = "Acacia Bush Sapling",
drawtype = "plantlike",
tiles = {"default_acacia_bush_sapling.png"},
inventory_image = "default_acacia_bush_sapling.png",
wield_image = "default_acacia_bush_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
selection_box = {
type = "fixed",
fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 2 / 16, 3 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:acacia_bush_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
minetest.register_node("default:pine_bush_stem", {
description = "Pine Bush Stem",
drawtype = "plantlike",
visual_scale = 1.41,
tiles = {"default_pine_bush_stem.png"},
inventory_image = "default_pine_bush_stem.png",
wield_image = "default_pine_bush_stem.png",
paramtype = "light",
sunlight_propagates = true,
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(),
selection_box = {
type = "fixed",
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16},
},
})
minetest.register_node("default:pine_bush_needles", {
description = "Pine Bush Needles",
drawtype = "allfaces_optional",
waving = 1,
tiles = {"default_pine_needles.png"},
paramtype = "light",
groups = {snappy = 3, flammable = 2, leaves = 1},
drop = {
max_items = 1,
items = {
{items = {"default:pine_bush_sapling"}, rarity = 5},
{items = {"default:pine_bush_needles"}}
}
},
sounds = default.node_sound_leaves_defaults(),
after_place_node = default.after_place_leaves,
})
minetest.register_node("default:pine_bush_sapling", {
description = "Pine Bush Sapling",
drawtype = "plantlike",
tiles = {"default_pine_bush_sapling.png"},
inventory_image = "default_pine_bush_sapling.png",
wield_image = "default_pine_bush_sapling.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
on_timer = default.grow_sapling,
selection_box = {
type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1},
sounds = default.node_sound_leaves_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(300, 1500))
end,
on_place = function(itemstack, placer, pointed_thing)
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"default:pine_bush_sapling",
-- minp, maxp to be checked, relative to sapling pos
{x = -1, y = 0, z = -1},
{x = 1, y = 1, z = 1},
-- maximum interval of interior volume check
2)
return itemstack
end,
})
minetest.register_node("default:sand_with_kelp", {
description = "Kelp",
drawtype = "plantlike_rooted",
waving = 1,
tiles = {"default_sand.png"},
special_tiles = {{name = "default_kelp.png", tileable_vertical = true}},
inventory_image = "default_kelp.png",
paramtype = "light",
paramtype2 = "leveled",
groups = {snappy = 3},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
{-2/16, 0.5, -2/16, 2/16, 3.5, 2/16},
},
},
node_dig_prediction = "default:sand",
node_placement_prediction = "",
sounds = default.node_sound_sand_defaults({
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
on_place = function(itemstack, placer, pointed_thing)
-- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" and placer and
not placer:get_player_control().sneak then
local node_ptu = minetest.get_node(pointed_thing.under)
local def_ptu = minetest.registered_nodes[node_ptu.name]
if def_ptu and def_ptu.on_rightclick then
return def_ptu.on_rightclick(pointed_thing.under, node_ptu, placer,
itemstack, pointed_thing)
end
end
local pos = pointed_thing.under
if minetest.get_node(pos).name ~= "default:sand" then
return itemstack
end
local height = math.random(4, 6)
local pos_top = {x = pos.x, y = pos.y + height, z = pos.z}
local node_top = minetest.get_node(pos_top)
local def_top = minetest.registered_nodes[node_top.name]
local player_name = placer:get_player_name()
if def_top and def_top.liquidtype == "source" and
minetest.get_item_group(node_top.name, "water") > 0 then
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pos_top, player_name) then
minetest.set_node(pos, {name = "default:sand_with_kelp",
param2 = height * 16})
if not (creative and creative.is_enabled_for
and creative.is_enabled_for(player_name)) then
itemstack:take_item()
end
else
minetest.chat_send_player(player_name, "Node is protected")
minetest.record_protection_violation(pos, player_name)
end
end
return itemstack
end,
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name = "default:sand"})
end
})
--
-- Corals
--
2018-11-15 01:49:16 +01:00
minetest.register_node("default:coral_green", {
description = "Green Coral",
drawtype = "plantlike_rooted",
waving = 1,
paramtype = "light",
tiles = {"default_coral_skeleton.png"},
special_tiles = {{name = "default_coral_green.png", tileable_vertical = true}},
inventory_image = "default_coral_green.png",
groups = {snappy = 3},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
},
},
node_dig_prediction = "default:coral_skeleton",
node_placement_prediction = "",
sounds = default.node_sound_stone_defaults({
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
2018-11-15 01:49:16 +01:00
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" or not placer then
return itemstack
end
local player_name = placer:get_player_name()
local pos_under = pointed_thing.under
local pos_above = pointed_thing.above
if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or
minetest.get_node(pos_above).name ~= "default:water_source" then
return itemstack
end
if minetest.is_protected(pos_under, player_name) or
minetest.is_protected(pos_above, player_name) then
minetest.chat_send_player(player_name, "Node is protected")
minetest.record_protection_violation(pos_under, player_name)
return itemstack
end
minetest.set_node(pos_under, {name = "default:coral_green"})
if not (creative and creative.is_enabled_for(player_name)) then
itemstack:take_item()
end
return itemstack
end,
2018-11-15 01:49:16 +01:00
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name = "default:coral_skeleton"})
end,
})
minetest.register_node("default:coral_pink", {
description = "Pink Coral",
drawtype = "plantlike_rooted",
waving = 1,
paramtype = "light",
tiles = {"default_coral_skeleton.png"},
special_tiles = {{name = "default_coral_pink.png", tileable_vertical = true}},
inventory_image = "default_coral_pink.png",
groups = {snappy = 3},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
},
},
node_dig_prediction = "default:coral_skeleton",
node_placement_prediction = "",
sounds = default.node_sound_stone_defaults({
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
2018-11-15 01:49:16 +01:00
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" or not placer then
return itemstack
end
local player_name = placer:get_player_name()
local pos_under = pointed_thing.under
local pos_above = pointed_thing.above
if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or
minetest.get_node(pos_above).name ~= "default:water_source" then
return itemstack
end
if minetest.is_protected(pos_under, player_name) or
minetest.is_protected(pos_above, player_name) then
minetest.chat_send_player(player_name, "Node is protected")
minetest.record_protection_violation(pos_under, player_name)
return itemstack
end
minetest.set_node(pos_under, {name = "default:coral_pink"})
if not (creative and creative.is_enabled_for(player_name)) then
itemstack:take_item()
end
return itemstack
end,
2018-11-15 01:49:16 +01:00
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name = "default:coral_skeleton"})
end,
})
minetest.register_node("default:coral_cyan", {
description = "Cyan Coral",
drawtype = "plantlike_rooted",
waving = 1,
paramtype = "light",
tiles = {"default_coral_skeleton.png"},
special_tiles = {{name = "default_coral_cyan.png", tileable_vertical = true}},
inventory_image = "default_coral_cyan.png",
groups = {snappy = 3},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
},
},
node_dig_prediction = "default:coral_skeleton",
node_placement_prediction = "",
sounds = default.node_sound_stone_defaults({
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
2018-11-15 01:49:16 +01:00
on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" or not placer then
return itemstack
end
local player_name = placer:get_player_name()
local pos_under = pointed_thing.under
local pos_above = pointed_thing.above
if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or
minetest.get_node(pos_above).name ~= "default:water_source" then
return itemstack
end
if minetest.is_protected(pos_under, player_name) or
minetest.is_protected(pos_above, player_name) then
minetest.chat_send_player(player_name, "Node is protected")
minetest.record_protection_violation(pos_under, player_name)
return itemstack
end
minetest.set_node(pos_under, {name = "default:coral_cyan"})
if not (creative and creative.is_enabled_for(player_name)) then
itemstack:take_item()
end
return itemstack
end,
2018-11-15 01:49:16 +01:00
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name = "default:coral_skeleton"})
end,
})
minetest.register_node("default:coral_brown", {
description = "Brown Coral",
tiles = {"default_coral_brown.png"},
groups = {cracky = 3},
drop = "default:coral_skeleton",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:coral_orange", {
description = "Orange Coral",
tiles = {"default_coral_orange.png"},
groups = {cracky = 3},
drop = "default:coral_skeleton",
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:coral_skeleton", {
description = "Coral Skeleton",
tiles = {"default_coral_skeleton.png"},
groups = {cracky = 3},
sounds = default.node_sound_stone_defaults(),
})
2014-12-07 16:29:36 +01:00
--
-- Liquids
--
minetest.register_node("default:water_source", {
description = "Water Source",
drawtype = "liquid",
tiles = {
2013-05-19 18:43:04 +02:00
{
2014-12-07 16:29:36 +01:00
name = "default_water_source_animated.png",
backface_culling = false,
2014-12-07 16:29:36 +01:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
2014-12-07 16:29:36 +01:00
},
2013-05-19 18:43:04 +02:00
},
{
2014-12-07 16:29:36 +01:00
name = "default_water_source_animated.png",
backface_culling = true,
2014-12-07 16:29:36 +01:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
2014-12-07 16:29:36 +01:00
},
2013-05-19 18:43:04 +02:00
},
},
2014-12-07 15:17:09 +01:00
alpha = 160,
2013-05-19 18:43:04 +02:00
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
2013-05-19 18:43:04 +02:00
drop = "",
drowning = 1,
2014-12-07 16:29:36 +01:00
liquidtype = "source",
2013-05-19 18:43:04 +02:00
liquid_alternative_flowing = "default:water_flowing",
liquid_alternative_source = "default:water_source",
2014-12-07 15:17:09 +01:00
liquid_viscosity = 1,
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
groups = {water = 3, liquid = 3, cools_lava = 1},
sounds = default.node_sound_water_defaults(),
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:water_flowing", {
description = "Flowing Water",
drawtype = "flowingliquid",
tiles = {"default_water.png"},
2013-05-19 18:43:04 +02:00
special_tiles = {
{
name = "default_water_flowing_animated.png",
2013-05-19 18:43:04 +02:00
backface_culling = false,
2014-12-07 16:29:36 +01:00
animation = {
type = "vertical_frames",
2014-12-07 16:29:36 +01:00
aspect_w = 16,
aspect_h = 16,
length = 0.8,
2014-12-07 16:29:36 +01:00
},
},
{
name = "default_water_flowing_animated.png",
2014-12-07 16:29:36 +01:00
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
2014-12-07 16:29:36 +01:00
},
},
2013-05-19 18:43:04 +02:00
},
2014-12-07 15:17:09 +01:00
alpha = 160,
2013-05-19 18:43:04 +02:00
paramtype = "light",
2014-12-07 16:29:36 +01:00
paramtype2 = "flowingliquid",
2013-05-19 18:43:04 +02:00
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
2013-05-19 18:43:04 +02:00
drop = "",
drowning = 1,
2014-12-07 16:29:36 +01:00
liquidtype = "flowing",
2013-05-19 18:43:04 +02:00
liquid_alternative_flowing = "default:water_flowing",
liquid_alternative_source = "default:water_source",
2014-12-07 15:17:09 +01:00
liquid_viscosity = 1,
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1,
cools_lava = 1},
sounds = default.node_sound_water_defaults(),
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
2015-04-17 07:50:06 +02:00
minetest.register_node("default:river_water_source", {
description = "River Water Source",
drawtype = "liquid",
tiles = {
{
name = "default_river_water_source_animated.png",
backface_culling = false,
2015-04-17 07:50:06 +02:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
{
name = "default_river_water_source_animated.png",
backface_culling = true,
2015-04-17 07:50:06 +02:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
},
alpha = 160,
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "source",
liquid_alternative_flowing = "default:river_water_flowing",
liquid_alternative_source = "default:river_water_source",
liquid_viscosity = 1,
-- Not renewable to avoid horizontal spread of water sources in sloping
-- rivers that can cause water to overflow riverbanks and cause floods.
-- River water source is instead made renewable by the 'force renew'
-- option used in the 'bucket' mod by the river water bucket.
2015-04-17 07:50:06 +02:00
liquid_renewable = false,
liquid_range = 2,
post_effect_color = {a = 103, r = 30, g = 76, b = 90},
groups = {water = 3, liquid = 3, cools_lava = 1},
sounds = default.node_sound_water_defaults(),
2015-04-17 07:50:06 +02:00
})
minetest.register_node("default:river_water_flowing", {
description = "Flowing River Water",
drawtype = "flowingliquid",
tiles = {"default_river_water.png"},
2015-04-17 07:50:06 +02:00
special_tiles = {
{
name = "default_river_water_flowing_animated.png",
2015-04-17 07:50:06 +02:00
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
},
},
{
name = "default_river_water_flowing_animated.png",
2015-04-17 07:50:06 +02:00
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 0.8,
},
},
},
alpha = 160,
paramtype = "light",
paramtype2 = "flowingliquid",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "default:river_water_flowing",
liquid_alternative_source = "default:river_water_source",
liquid_viscosity = 1,
liquid_renewable = false,
liquid_range = 2,
post_effect_color = {a = 103, r = 30, g = 76, b = 90},
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1,
cools_lava = 1},
sounds = default.node_sound_water_defaults(),
2015-04-17 07:50:06 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:lava_source", {
description = "Lava Source",
drawtype = "liquid",
tiles = {
2013-05-19 18:43:04 +02:00
{
2014-12-07 16:29:36 +01:00
name = "default_lava_source_animated.png",
backface_culling = false,
2014-12-07 16:29:36 +01:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.0,
2014-12-07 16:29:36 +01:00
},
2013-05-19 18:43:04 +02:00
},
{
2014-12-07 16:29:36 +01:00
name = "default_lava_source_animated.png",
backface_culling = true,
2014-12-07 16:29:36 +01:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.0,
2014-12-07 16:29:36 +01:00
},
2013-05-19 18:43:04 +02:00
},
},
paramtype = "light",
2014-12-07 15:17:09 +01:00
light_source = default.LIGHT_MAX - 1,
2013-05-19 18:43:04 +02:00
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
2013-05-19 18:43:04 +02:00
drop = "",
drowning = 1,
2014-12-07 16:29:36 +01:00
liquidtype = "source",
2013-05-19 18:43:04 +02:00
liquid_alternative_flowing = "default:lava_flowing",
liquid_alternative_source = "default:lava_source",
2014-12-07 15:17:09 +01:00
liquid_viscosity = 7,
2013-05-19 18:43:04 +02:00
liquid_renewable = false,
2014-12-07 16:29:36 +01:00
damage_per_second = 4 * 2,
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
groups = {lava = 3, liquid = 2, igniter = 1},
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:lava_flowing", {
description = "Flowing Lava",
drawtype = "flowingliquid",
tiles = {"default_lava.png"},
2013-05-19 18:43:04 +02:00
special_tiles = {
{
name = "default_lava_flowing_animated.png",
2013-05-19 18:43:04 +02:00
backface_culling = false,
2014-12-07 16:29:36 +01:00
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.3,
2014-12-07 16:29:36 +01:00
},
},
{
name = "default_lava_flowing_animated.png",
2014-12-07 16:29:36 +01:00
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.3,
2014-12-07 16:29:36 +01:00
},
},
2013-05-19 18:43:04 +02:00
},
paramtype = "light",
2014-12-07 16:29:36 +01:00
paramtype2 = "flowingliquid",
2014-12-07 15:17:09 +01:00
light_source = default.LIGHT_MAX - 1,
2013-05-19 18:43:04 +02:00
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
2013-05-19 18:43:04 +02:00
drop = "",
drowning = 1,
2014-12-07 16:29:36 +01:00
liquidtype = "flowing",
2013-05-19 18:43:04 +02:00
liquid_alternative_flowing = "default:lava_flowing",
liquid_alternative_source = "default:lava_source",
2014-12-07 15:17:09 +01:00
liquid_viscosity = 7,
2013-05-19 18:43:04 +02:00
liquid_renewable = false,
2014-12-07 16:29:36 +01:00
damage_per_second = 4 * 2,
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
groups = {lava = 3, liquid = 2, igniter = 1,
not_in_creative_inventory = 1},
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
--
-- Tools / "Advanced" crafting / Non-"natural"
--
local bookshelf_formspec =
"size[8,7;]" ..
"list[context;books;0,0.3;8,2;]" ..
"list[current_player;main;0,2.85;8,1;]" ..
"list[current_player;main;0,4.08;8,3;8]" ..
"listring[context;books]" ..
"listring[current_player;main]" ..
2014-12-07 16:29:36 +01:00
default.get_hotbar_bg(0,2.85)
2013-05-19 18:43:04 +02:00
local function update_bookshelf(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local invlist = inv:get_list("books")
local formspec = bookshelf_formspec
-- Inventory slots overlay
local bx, by = 0, 0.3
local n_written, n_empty = 0, 0
for i = 1, 16 do
if i == 9 then
bx = 0
by = by + 1
end
local stack = invlist[i]
if stack:is_empty() then
formspec = formspec ..
"image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]"
else
local metatable = stack:get_meta():to_table() or {}
if metatable.fields and metatable.fields.text then
n_written = n_written + stack:get_count()
else
n_empty = n_empty + stack:get_count()
end
end
bx = bx + 1
end
meta:set_string("formspec", formspec)
if n_written + n_empty == 0 then
meta:set_string("infotext", "Empty Bookshelf")
else
meta:set_string("infotext", "Bookshelf (" .. n_written ..
" written, " .. n_empty .. " empty books)")
end
end
2014-12-07 16:29:36 +01:00
minetest.register_node("default:bookshelf", {
description = "Bookshelf",
tiles = {"default_wood.png", "default_wood.png", "default_wood.png",
"default_wood.png", "default_bookshelf.png", "default_bookshelf.png"},
paramtype2 = "facedir",
2014-12-07 16:29:36 +01:00
is_ground_content = false,
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_wood_defaults(),
2013-05-19 18:43:04 +02:00
2014-12-07 16:29:36 +01:00
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("books", 8 * 2)
update_bookshelf(pos)
2014-12-07 16:29:36 +01:00
end,
can_dig = function(pos,player)
local inv = minetest.get_meta(pos):get_inventory()
2014-12-07 16:29:36 +01:00
return inv:is_empty("books")
end,
allow_metadata_inventory_put = function(pos, listname, index, stack)
if minetest.get_item_group(stack:get_name(), "book") ~= 0 then
return stack:get_count()
2014-12-07 16:29:36 +01:00
end
return 0
2014-12-07 16:29:36 +01:00
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name() ..
" moves stuff in bookshelf at " .. minetest.pos_to_string(pos))
update_bookshelf(pos)
2014-12-07 16:29:36 +01:00
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" puts stuff to bookshelf at " .. minetest.pos_to_string(pos))
update_bookshelf(pos)
2014-12-07 16:29:36 +01:00
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name() ..
" takes stuff from bookshelf at " .. minetest.pos_to_string(pos))
update_bookshelf(pos)
2014-12-07 16:29:36 +01:00
end,
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "books", drops)
drops[#drops+1] = "default:bookshelf"
minetest.remove_node(pos)
return drops
end,
2013-05-19 18:43:04 +02:00
})
local function register_sign(material, desc, def)
minetest.register_node("default:sign_wall_" .. material, {
description = desc .. " Sign",
drawtype = "nodebox",
tiles = {"default_sign_wall_" .. material .. ".png"},
inventory_image = "default_sign_" .. material .. ".png",
wield_image = "default_sign_" .. material .. ".png",
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
is_ground_content = false,
walkable = false,
node_box = {
type = "wallmounted",
wall_top = {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125},
wall_bottom = {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125},
wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375},
},
groups = def.groups,
legacy_wallmounted = true,
sounds = def.sounds,
on_construct = function(pos)
--local n = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", "field[text;;${text}]")
end,
on_receive_fields = function(pos, formname, fields, sender)
--print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
local player_name = sender:get_player_name()
if minetest.is_protected(pos, player_name) then
minetest.record_protection_violation(pos, player_name)
return
end
local text = fields.text
if not text then
return
end
if string.len(text) > 512 then
minetest.chat_send_player(player_name, "Text too long")
return
end
minetest.log("action", (player_name or "") .. " wrote \"" ..
text .. "\" to sign at " .. minetest.pos_to_string(pos))
local meta = minetest.get_meta(pos)
meta:set_string("text", text)
meta:set_string("infotext", '"' .. text .. '"')
end,
})
end
2013-05-19 18:43:04 +02:00
register_sign("wood", "Wooden", {
sounds = default.node_sound_wood_defaults(),
groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3}
2013-05-19 18:43:04 +02:00
})
register_sign("steel", "Steel", {
sounds = default.node_sound_metal_defaults(),
groups = {cracky = 2, attached_node = 1}
})
2016-03-03 10:52:45 +01:00
minetest.register_node("default:ladder_wood", {
description = "Wooden Ladder",
2014-12-07 16:29:36 +01:00
drawtype = "signlike",
2016-03-03 10:52:45 +01:00
tiles = {"default_ladder_wood.png"},
inventory_image = "default_ladder_wood.png",
wield_image = "default_ladder_wood.png",
2013-05-19 18:43:04 +02:00
paramtype = "light",
2014-12-07 16:29:36 +01:00
paramtype2 = "wallmounted",
sunlight_propagates = true,
2013-05-19 18:43:04 +02:00
walkable = false,
2014-12-07 16:29:36 +01:00
climbable = true,
is_ground_content = false,
2013-05-19 18:43:04 +02:00
selection_box = {
2014-12-07 16:29:36 +01:00
type = "wallmounted",
--wall_top = = <default>
--wall_bottom = = <default>
--wall_side = = <default>
2013-05-19 18:43:04 +02:00
},
groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2},
2014-12-07 16:29:36 +01:00
legacy_wallmounted = true,
sounds = default.node_sound_wood_defaults(),
2013-05-19 18:43:04 +02:00
})
2016-03-03 10:52:45 +01:00
minetest.register_node("default:ladder_steel", {
description = "Steel Ladder",
drawtype = "signlike",
tiles = {"default_ladder_steel.png"},
inventory_image = "default_ladder_steel.png",
wield_image = "default_ladder_steel.png",
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
climbable = true,
is_ground_content = false,
selection_box = {
type = "wallmounted",
--wall_top = = <default>
--wall_bottom = = <default>
--wall_side = = <default>
},
groups = {cracky = 2},
sounds = default.node_sound_metal_defaults(),
2016-03-03 10:52:45 +01:00
})
default.register_fence("default:fence_wood", {
2017-07-23 10:26:10 +02:00
description = "Apple Wood Fence",
texture = "default_fence_wood.png",
inventory_image = "default_fence_overlay.png^default_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^default_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
material = "default:wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_acacia_wood", {
description = "Acacia Wood Fence",
texture = "default_fence_acacia_wood.png",
inventory_image = "default_fence_overlay.png^default_acacia_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^default_acacia_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
material = "default:acacia_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_junglewood", {
2017-05-24 23:22:17 +02:00
description = "Jungle Wood Fence",
texture = "default_fence_junglewood.png",
inventory_image = "default_fence_overlay.png^default_junglewood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^default_junglewood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
material = "default:junglewood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
2013-05-19 18:43:04 +02:00
})
default.register_fence("default:fence_pine_wood", {
description = "Pine Wood Fence",
texture = "default_fence_pine_wood.png",
inventory_image = "default_fence_overlay.png^default_pine_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^default_pine_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
material = "default:pine_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
})
default.register_fence("default:fence_aspen_wood", {
description = "Aspen Wood Fence",
texture = "default_fence_aspen_wood.png",
inventory_image = "default_fence_overlay.png^default_aspen_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^default_aspen_wood.png^" ..
"default_fence_overlay.png^[makealpha:255,126,126",
material = "default:aspen_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
})
2013-05-19 18:43:04 +02:00
default.register_fence_rail("default:fence_rail_wood", {
description = "Apple Wood Fence Rail",
texture = "default_fence_rail_wood.png",
inventory_image = "default_fence_rail_overlay.png^default_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^default_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "default:wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence_rail("default:fence_rail_acacia_wood", {
description = "Acacia Wood Fence Rail",
texture = "default_fence_rail_acacia_wood.png",
inventory_image = "default_fence_rail_overlay.png^default_acacia_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^default_acacia_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "default:acacia_wood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence_rail("default:fence_rail_junglewood", {
description = "Jungle Wood Fence Rail",
texture = "default_fence_rail_junglewood.png",
inventory_image = "default_fence_rail_overlay.png^default_junglewood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^default_junglewood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "default:junglewood",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence_rail("default:fence_rail_pine_wood", {
description = "Pine Wood Fence Rail",
texture = "default_fence_rail_pine_wood.png",
inventory_image = "default_fence_rail_overlay.png^default_pine_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^default_pine_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "default:pine_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
sounds = default.node_sound_wood_defaults()
})
default.register_fence_rail("default:fence_rail_aspen_wood", {
description = "Aspen Wood Fence Rail",
texture = "default_fence_rail_aspen_wood.png",
inventory_image = "default_fence_rail_overlay.png^default_aspen_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^default_aspen_wood.png^" ..
"default_fence_rail_overlay.png^[makealpha:255,126,126",
material = "default:aspen_wood",
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:glass", {
description = "Glass",
drawtype = "glasslike_framed_optional",
tiles = {"default_glass.png", "default_glass_detail.png"},
2013-05-19 18:43:04 +02:00
paramtype = "light",
paramtype2 = "glasslikeliquidlevel",
2014-12-07 16:29:36 +01:00
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
2013-05-19 18:43:04 +02:00
sounds = default.node_sound_glass_defaults(),
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:obsidian_glass", {
description = "Obsidian Glass",
drawtype = "glasslike_framed_optional",
tiles = {"default_obsidian_glass.png", "default_obsidian_glass_detail.png"},
2013-05-19 18:43:04 +02:00
paramtype = "light",
paramtype2 = "glasslikeliquidlevel",
2014-12-07 16:29:36 +01:00
is_ground_content = false,
sunlight_propagates = true,
sounds = default.node_sound_glass_defaults(),
groups = {cracky = 3},
2013-05-19 18:43:04 +02:00
})
2014-12-07 16:29:36 +01:00
minetest.register_node("default:brick", {
description = "Brick Block",
paramtype2 = "facedir",
place_param2 = 0,
2014-12-07 16:29:36 +01:00
tiles = {"default_brick.png"},
is_ground_content = false,
groups = {cracky = 3},
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("default:meselamp", {
description = "Mese Lamp",
drawtype = "glasslike",
tiles = {"default_meselamp.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = default.node_sound_glass_defaults(),
light_source = default.LIGHT_MAX,
})
minetest.register_node("default:mese_post_light", {
description = "Mese Post Light",
tiles = {"default_mese_post_light_top.png", "default_mese_post_light_top.png",
"default_mese_post_light_side_dark.png", "default_mese_post_light_side_dark.png",
"default_mese_post_light_side.png", "default_mese_post_light_side.png"},
wield_image = "default_mese_post_light_side.png",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-2 / 16, -8 / 16, -2 / 16, 2 / 16, 8 / 16, 2 / 16},
},
},
paramtype = "light",
light_source = default.LIGHT_MAX,
sunlight_propagates = true,
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
})
2014-12-07 16:29:36 +01:00
--
-- Misc
--
minetest.register_node("default:cloud", {
description = "Cloud",
tiles = {"default_cloud.png"},
is_ground_content = false,
2014-12-07 16:29:36 +01:00
sounds = default.node_sound_defaults(),
groups = {not_in_creative_inventory = 1},
2014-12-07 16:29:36 +01:00
})
--
-- register trees for leafdecay
--
if minetest.get_mapgen_setting("mg_name") == "v6" then
default.register_leafdecay({
trunks = {"default:tree"},
leaves = {"default:apple", "default:leaves"},
radius = 2,
})
default.register_leafdecay({
trunks = {"default:jungletree"},
leaves = {"default:jungleleaves"},
radius = 3,
})
else
default.register_leafdecay({
trunks = {"default:tree"},
leaves = {"default:apple", "default:leaves"},
radius = 3,
})
default.register_leafdecay({
trunks = {"default:jungletree"},
leaves = {"default:jungleleaves"},
radius = 2,
})
end
default.register_leafdecay({
trunks = {"default:pine_tree"},
leaves = {"default:pine_needles"},
radius = 3,
})
default.register_leafdecay({
trunks = {"default:acacia_tree"},
leaves = {"default:acacia_leaves"},
radius = 2,
})
default.register_leafdecay({
trunks = {"default:aspen_tree"},
leaves = {"default:aspen_leaves"},
radius = 3,
})
default.register_leafdecay({
trunks = {"default:bush_stem"},
leaves = {"default:bush_leaves"},
radius = 1,
})
default.register_leafdecay({
trunks = {"default:acacia_bush_stem"},
leaves = {"default:acacia_bush_leaves"},
radius = 1,
})
default.register_leafdecay({
trunks = {"default:pine_bush_stem"},
leaves = {"default:pine_bush_needles"},
radius = 1,
})