2013-05-19 18:43:04 +02:00
|
|
|
-- mods/default/nodes.lua
|
|
|
|
|
2015-08-09 09:50:57 +02:00
|
|
|
|
|
|
|
--[[ 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
|
|
|
|
-----
|
2016-03-21 10:23:12 +01:00
|
|
|
(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
|
2016-06-23 05:37:19 +02:00
|
|
|
default:stone_block
|
2014-12-07 16:29:36 +01:00
|
|
|
default:mossycobble
|
|
|
|
|
|
|
|
default:desert_stone
|
|
|
|
default:desert_cobble
|
|
|
|
default:desert_stonebrick
|
2016-06-23 05:37:19 +02:00
|
|
|
default:desert_stone_block
|
2014-12-07 16:29:36 +01:00
|
|
|
|
|
|
|
default:sandstone
|
|
|
|
default:sandstonebrick
|
2016-06-23 05:37:19 +02:00
|
|
|
default:sandstone_block
|
2017-03-07 04:03:30 +01:00
|
|
|
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
|
2016-06-23 05:37:19 +02:00
|
|
|
default:obsidian_block
|
2014-12-07 16:29:36 +01:00
|
|
|
|
|
|
|
Soft / Non-Stone
|
|
|
|
----------------
|
2016-03-21 10:23:12 +01:00
|
|
|
(1. Material 2. Modified forms)
|
2014-12-07 16:29:36 +01:00
|
|
|
|
|
|
|
default:dirt
|
|
|
|
default:dirt_with_grass
|
|
|
|
default:dirt_with_grass_footsteps
|
2015-08-11 22:28:28 +02:00
|
|
|
default:dirt_with_dry_grass
|
2014-12-07 16:29:36 +01:00
|
|
|
default:dirt_with_snow
|
2017-02-26 02:37:35 +01:00
|
|
|
default:dirt_with_rainforest_litter
|
2017-12-22 01:59:42 +01:00
|
|
|
default:dirt_with_coniferous_litter
|
2014-12-07 16:29:36 +01:00
|
|
|
|
2018-05-05 00:05:47 +02:00
|
|
|
default:permafrost
|
|
|
|
default:permafrost_with_stones
|
|
|
|
default:permafrost_with_moss
|
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
default:sand
|
|
|
|
default:desert_sand
|
2016-10-04 04:45:49 +02:00
|
|
|
default:silver_sand
|
2014-12-07 16:29:36 +01:00
|
|
|
|
|
|
|
default:gravel
|
|
|
|
|
|
|
|
default:clay
|
|
|
|
|
|
|
|
default:snow
|
|
|
|
default:snowblock
|
|
|
|
default:ice
|
2018-02-26 20:21:24 +01:00
|
|
|
default:cave_ice
|
2014-12-07 16:29:36 +01:00
|
|
|
|
|
|
|
Trees
|
|
|
|
-----
|
2016-03-21 10:23:12 +01:00
|
|
|
(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
|
2017-05-10 09:23:26 +02:00
|
|
|
default:emergent_jungle_sapling
|
2014-12-07 16:29:36 +01:00
|
|
|
|
2015-08-09 09:50:57 +02:00
|
|
|
default:pine_tree
|
|
|
|
default:pine_wood
|
2014-12-07 16:29:36 +01:00
|
|
|
default:pine_needles
|
|
|
|
default:pine_sapling
|
|
|
|
|
2015-07-01 14:03:14 +02:00
|
|
|
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
|
2016-03-21 10:23:12 +01:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
Ores
|
|
|
|
----
|
2016-03-21 10:23:12 +01:00
|
|
|
(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
|
2017-04-19 03:48:00 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2016-10-12 02:49:31 +02:00
|
|
|
Plantlife
|
|
|
|
---------
|
2016-03-21 10:23:12 +01:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
default:cactus
|
2019-01-02 03:18:50 +01:00
|
|
|
default:large_cactus_seedling
|
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
default:papyrus
|
|
|
|
default:dry_shrub
|
|
|
|
default:junglegrass
|
2015-07-01 14:03:14 +02:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
default:grass_1
|
|
|
|
default:grass_2
|
|
|
|
default:grass_3
|
|
|
|
default:grass_4
|
|
|
|
default:grass_5
|
|
|
|
|
2015-07-01 14:03:14 +02:00
|
|
|
default:dry_grass_1
|
|
|
|
default:dry_grass_2
|
|
|
|
default:dry_grass_3
|
|
|
|
default:dry_grass_4
|
|
|
|
default:dry_grass_5
|
|
|
|
|
2017-12-24 03:23:29 +01:00
|
|
|
default:fern_1
|
|
|
|
default:fern_2
|
|
|
|
default:fern_3
|
|
|
|
|
2018-01-24 12:29:02 +01:00
|
|
|
default:marram_grass_1
|
|
|
|
default:marram_grass_2
|
|
|
|
default:marram_grass_3
|
|
|
|
|
2016-10-13 01:48:56 +02:00
|
|
|
default:bush_stem
|
|
|
|
default:bush_leaves
|
2017-04-12 10:25:21 +02:00
|
|
|
default:bush_sapling
|
2016-10-13 01:48:56 +02:00
|
|
|
default:acacia_bush_stem
|
|
|
|
default:acacia_bush_leaves
|
2017-04-12 10:25:21 +02:00
|
|
|
default:acacia_bush_sapling
|
2018-07-13 02:17:07 +02:00
|
|
|
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
|
2016-10-13 01:48:56 +02:00
|
|
|
|
2017-10-05 00:46:32 +02:00
|
|
|
default:sand_with_kelp
|
|
|
|
|
2016-10-12 02:49:31 +02:00
|
|
|
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"
|
|
|
|
-------------------------------------------
|
2016-03-21 10:23:12 +01:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
default:bookshelf
|
|
|
|
|
2016-03-06 12:16:33 +01:00
|
|
|
default:sign_wall_wood
|
|
|
|
default:sign_wall_steel
|
2015-08-25 05:11:46 +02:00
|
|
|
|
2016-03-03 10:52:45 +01:00
|
|
|
default:ladder_wood
|
|
|
|
default:ladder_steel
|
2015-08-25 05:11:46 +02:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
default:fence_wood
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
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
|
|
|
|
|
2015-03-05 16:46:49 +01:00
|
|
|
default:meselamp
|
2017-02-09 01:01:30 +01:00
|
|
|
default:mese_post_light
|
2015-03-05 16:46:49 +01:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
Misc
|
|
|
|
----
|
2016-03-21 10:23:12 +01:00
|
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_stone_brick.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 2, stone = 1},
|
2014-12-07 16:29:36 +01:00
|
|
|
sounds = default.node_sound_stone_defaults(),
|
|
|
|
})
|
|
|
|
|
2016-06-23 05:37:19 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_desert_stone_brick.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 2, stone = 1},
|
2013-05-19 18:43:04 +02:00
|
|
|
sounds = default.node_sound_stone_defaults(),
|
|
|
|
})
|
|
|
|
|
2016-06-23 05:37:19 +02:00
|
|
|
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"},
|
2016-05-05 01:22:57 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_sandstone_brick.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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
|
|
|
|
2016-06-23 05:37:19 +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(),
|
|
|
|
})
|
|
|
|
|
2017-03-07 04:03:30 +01:00
|
|
|
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(),
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_obsidian_brick.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2013-05-19 18:43:04 +02:00
|
|
|
sounds = default.node_sound_stone_defaults(),
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 1, level = 2},
|
2013-05-19 18:43:04 +02:00
|
|
|
})
|
|
|
|
|
2016-06-23 05:37:19 +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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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}},
|
2016-09-22 12:56:15 +02:00
|
|
|
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({
|
2015-08-25 05:11:46 +02:00
|
|
|
footstep = {name = "default_grass_footstep", gain = 0.25},
|
2013-05-19 18:43:04 +02:00
|
|
|
}),
|
|
|
|
})
|
|
|
|
|
2015-08-11 22:28:28 +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}},
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1},
|
2015-08-11 22:28:28 +02:00
|
|
|
drop = 'default:dirt',
|
|
|
|
sounds = default.node_sound_dirt_defaults({
|
2015-08-25 05:11:46 +02:00
|
|
|
footstep = {name = "default_grass_footstep", gain = 0.25},
|
2015-08-11 22:28:28 +02:00
|
|
|
}),
|
|
|
|
})
|
|
|
|
|
2015-07-01 14:03:14 +02:00
|
|
|
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}},
|
2016-09-22 12:56:15 +02:00
|
|
|
groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1},
|
2015-07-01 14:03:14 +02:00
|
|
|
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}},
|
2018-01-13 12:46:35 +01:00
|
|
|
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({
|
2017-10-21 08:01:23 +02:00
|
|
|
footstep = {name = "default_snow_footstep", gain = 0.2},
|
2013-05-19 18:43:04 +02:00
|
|
|
}),
|
|
|
|
})
|
|
|
|
|
2017-02-26 02:37:35 +01: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},
|
|
|
|
}),
|
|
|
|
})
|
|
|
|
|
2017-12-22 01:59:42 +01:00
|
|
|
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},
|
|
|
|
}),
|
|
|
|
})
|
|
|
|
|
2018-05-05 00:05:47 +02:00
|
|
|
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",
|
2019-02-03 20:14:13 +01:00
|
|
|
"default_permafrost.png",
|
|
|
|
"default_permafrost.png^default_stones_side.png"},
|
2018-05-05 00:05:47 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {crumbly = 3, falling_node = 1, sand = 1},
|
2013-05-19 18:43:04 +02:00
|
|
|
sounds = default.node_sound_sand_defaults(),
|
|
|
|
})
|
|
|
|
|
2016-10-04 04:45:49 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {crumbly = 2, falling_node = 1},
|
2016-04-25 00:10:46 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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,
|
2016-04-02 21:14:18 +02:00
|
|
|
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
|
|
|
},
|
|
|
|
},
|
2018-05-31 04:14:46 +02:00
|
|
|
collision_box = {
|
|
|
|
type = "fixed",
|
|
|
|
fixed = {
|
|
|
|
{-0.5, -0.5, -0.5, 0.5, -7 / 16, 0.5},
|
|
|
|
},
|
|
|
|
},
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {crumbly = 3, falling_node = 1, snowy = 1},
|
2017-10-21 08:01:23 +02:00
|
|
|
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"},
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {crumbly = 3, cools_lava = 1, snowy = 1},
|
2017-10-21 08:01:23 +02:00
|
|
|
sounds = default.node_sound_snow_defaults(),
|
2016-11-08 18:30:58 +01:00
|
|
|
|
|
|
|
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
|
|
|
})
|
|
|
|
|
2018-02-26 20:21:24 +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"},
|
2015-04-05 01:40:23 +02:00
|
|
|
is_ground_content = false,
|
2014-12-07 16:29:36 +01:00
|
|
|
paramtype = "light",
|
2018-12-08 05:00:38 +01:00
|
|
|
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
|
|
|
})
|
|
|
|
|
2018-02-26 20:21:24 +01: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",
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {cracky = 3, cools_lava = 1, slippery = 3,
|
2018-09-21 19:52:55 +02:00
|
|
|
not_in_creative_inventory = 1},
|
2018-02-26 20:21:24 +01:00
|
|
|
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",
|
2013-11-30 08:42:57 +01:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_wood.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2016-08-27 03:41:31 +02:00
|
|
|
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",
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
walkable = false,
|
2016-03-07 06:39:07 +01:00
|
|
|
on_timer = default.grow_sapling,
|
2014-12-07 16:29:36 +01:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
2014-12-07 16:29:36 +01:00
|
|
|
},
|
2015-08-25 05:11:46 +02: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(),
|
2016-07-19 02:01:59 +02:00
|
|
|
|
|
|
|
on_construct = function(pos)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2016-07-19 02:01:59 +02:00
|
|
|
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
|
2018-08-21 00:56:00 +02:00
|
|
|
{x = -3, y = 1, z = -3},
|
|
|
|
{x = 3, y = 6, z = 3},
|
2016-07-19 02:01:59 +02:00
|
|
|
-- 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"},
|
2015-07-08 15:52:17 +02:00
|
|
|
special_tiles = {"default_leaves_simple.png"},
|
2014-12-07 16:29:36 +01:00
|
|
|
paramtype = "light",
|
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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
|
|
|
|
2014-12-06 11:08:41 +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,
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2013-05-19 18:43:04 +02:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-3 / 16, -7 / 16, -3 / 16, 3 / 16, 4 / 16, 3 / 16}
|
2013-05-19 18:43:04 +02:00
|
|
|
},
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {fleshy = 3, dig_immediate = 3, flammable = 2,
|
2018-04-04 10:59:15 +02:00
|
|
|
leafdecay = 3, leafdecay_drop = 1, food_apple = 1},
|
2015-05-14 17:33:10 +02:00
|
|
|
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,
|
2018-05-11 17:42:28 +02:00
|
|
|
|
|
|
|
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
|
|
|
})
|
2013-11-02 11:00:48 +01:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
|
|
|
|
minetest.register_node("default:jungletree", {
|
|
|
|
description = "Jungle Tree",
|
2015-08-25 05:11:46 +02:00
|
|
|
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,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_junglewood.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2016-08-27 03:41:31 +02:00
|
|
|
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", {
|
2017-06-25 11:19:12 +02:00
|
|
|
description = "Jungle Tree Leaves",
|
2013-05-19 18:43:04 +02:00
|
|
|
drawtype = "allfaces_optional",
|
2013-12-04 00:47:35 +01:00
|
|
|
waving = 1,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_jungleleaves.png"},
|
2015-07-08 15:52:17 +02:00
|
|
|
special_tiles = {"default_jungleleaves_simple.png"},
|
2013-05-19 18:43:04 +02:00
|
|
|
paramtype = "light",
|
2013-11-30 08:42:57 +01:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
|
2013-05-19 18:43:04 +02:00
|
|
|
drop = {
|
|
|
|
max_items = 1,
|
|
|
|
items = {
|
2015-08-25 05:11:46 +02:00
|
|
|
{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", {
|
2017-06-25 11:19:12 +02:00
|
|
|
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",
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2013-05-19 18:43:04 +02:00
|
|
|
walkable = false,
|
2016-03-07 06:39:07 +01:00
|
|
|
on_timer = default.grow_sapling,
|
2013-05-19 18:43:04 +02:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
2013-05-19 18:43:04 +02:00
|
|
|
},
|
2015-08-25 05:11:46 +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(),
|
2016-07-19 02:01:59 +02:00
|
|
|
|
|
|
|
on_construct = function(pos)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2016-07-19 02:01:59 +02:00
|
|
|
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
|
|
|
})
|
|
|
|
|
2017-05-10 09:23:26 +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
|
|
|
|
2015-08-09 09:50:57 +02:00
|
|
|
minetest.register_node("default:pine_tree", {
|
2014-12-07 16:29:36 +01:00
|
|
|
description = "Pine Tree",
|
2015-08-09 09:50:57 +02:00
|
|
|
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",
|
2013-11-30 08:42:57 +01:00
|
|
|
is_ground_content = false,
|
2016-08-27 03:41:31 +02:00
|
|
|
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(),
|
2013-06-22 11:00:23 +02:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
on_place = minetest.rotate_node
|
|
|
|
})
|
2013-06-22 11:00:23 +02:00
|
|
|
|
2015-08-09 09:50:57 +02:00
|
|
|
minetest.register_node("default:pine_wood", {
|
|
|
|
description = "Pine Wood Planks",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2015-08-09 09:50:57 +02:00
|
|
|
tiles = {"default_pine_wood.png"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2016-08-27 03:41:31 +02:00
|
|
|
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",
|
2013-11-30 08:42:57 +01:00
|
|
|
is_ground_content = false,
|
2015-07-01 14:03:14 +02:00
|
|
|
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
|
2014-12-07 16:29:36 +01:00
|
|
|
drop = {
|
|
|
|
max_items = 1,
|
|
|
|
items = {
|
2015-07-01 14:03:14 +02:00
|
|
|
{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", {
|
2017-06-25 11:19:12 +02:00
|
|
|
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",
|
2015-07-01 14:03:14 +02:00
|
|
|
sunlight_propagates = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
walkable = false,
|
2016-03-07 06:39:07 +01:00
|
|
|
on_timer = default.grow_sapling,
|
2013-05-19 18:43:04 +02:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
2013-05-19 18:43:04 +02:00
|
|
|
},
|
2016-08-27 03:41:31 +02:00
|
|
|
groups = {snappy = 2, dig_immediate = 3, flammable = 3,
|
2015-08-09 09:50:57 +02:00
|
|
|
attached_node = 1, sapling = 1},
|
2015-07-01 14:03:14 +02:00
|
|
|
sounds = default.node_sound_leaves_defaults(),
|
2016-07-19 02:01:59 +02:00
|
|
|
|
|
|
|
on_construct = function(pos)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2016-07-19 02:01:59 +02:00
|
|
|
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},
|
2018-02-15 07:51:11 +01:00
|
|
|
{x = 2, y = 14, z = 2},
|
2016-07-19 02:01:59 +02:00
|
|
|
-- maximum interval of interior volume check
|
|
|
|
4)
|
|
|
|
|
|
|
|
return itemstack
|
|
|
|
end,
|
2015-07-01 14:03:14 +02:00
|
|
|
})
|
|
|
|
|
2015-08-25 05:11:46 +02:00
|
|
|
|
2015-07-01 14:03:14 +02:00
|
|
|
minetest.register_node("default:acacia_tree", {
|
|
|
|
description = "Acacia Tree",
|
2015-08-09 09:50:57 +02:00
|
|
|
tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png",
|
|
|
|
"default_acacia_tree.png"},
|
2015-07-01 14:03:14 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2015-07-01 14:03:14 +02:00
|
|
|
tiles = {"default_acacia_wood.png"},
|
|
|
|
is_ground_content = false,
|
2016-08-27 03:41:31 +02:00
|
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
|
2015-07-01 14:03:14 +02:00
|
|
|
sounds = default.node_sound_wood_defaults(),
|
|
|
|
})
|
|
|
|
|
|
|
|
minetest.register_node("default:acacia_leaves", {
|
2017-06-25 11:19:12 +02:00
|
|
|
description = "Acacia Tree Leaves",
|
2015-07-01 14:03:14 +02:00
|
|
|
drawtype = "allfaces_optional",
|
|
|
|
tiles = {"default_acacia_leaves.png"},
|
2016-11-02 18:58:06 +01:00
|
|
|
special_tiles = {"default_acacia_leaves_simple.png"},
|
2015-09-01 07:12:21 +02:00
|
|
|
waving = 1,
|
2015-07-01 14:03:14 +02:00
|
|
|
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,
|
2016-03-07 06:39:07 +01:00
|
|
|
on_timer = default.grow_sapling,
|
2015-07-01 14:03:14 +02:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
2015-07-01 14:03:14 +02:00
|
|
|
},
|
2015-08-09 09:50:57 +02: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(),
|
2016-07-19 02:01:59 +02:00
|
|
|
|
|
|
|
on_construct = function(pos)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2016-07-19 02:01:59 +02:00
|
|
|
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},
|
2018-02-15 07:51:11 +01:00
|
|
|
{x = 4, y = 7, z = 4},
|
2016-07-19 02:01:59 +02:00
|
|
|
-- 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,
|
2016-08-27 03:41:31 +02:00
|
|
|
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",
|
2016-05-29 22:45:18 +02:00
|
|
|
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,
|
2016-08-27 03:41:31 +02:00
|
|
|
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", {
|
2017-06-25 11:19:12 +02:00
|
|
|
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,
|
2016-03-07 06:39:07 +01:00
|
|
|
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",
|
2016-11-05 06:58:12 +01:00
|
|
|
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
|
|
|
},
|
2016-08-27 03:41:31 +02: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(),
|
2016-07-19 02:01:59 +02:00
|
|
|
|
|
|
|
on_construct = function(pos)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2016-07-19 02:01:59 +02:00
|
|
|
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
|
|
|
})
|
2016-07-19 02:01:59 +02: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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 1, level = 2},
|
2016-10-20 01:34:22 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 1, level = 2},
|
2016-10-20 01:34:22 +02:00
|
|
|
sounds = default.node_sound_metal_defaults(),
|
2014-12-07 16:29:36 +01:00
|
|
|
})
|
|
|
|
|
2017-04-19 03:48:00 +02: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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 1, level = 2},
|
2016-10-20 01:34:22 +02:00
|
|
|
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"},
|
2015-03-05 16:46:49 +01:00
|
|
|
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"},
|
2015-03-05 16:46:49 +01:00
|
|
|
paramtype = "light",
|
|
|
|
groups = {cracky = 1, level = 2},
|
2014-12-07 16:29:36 +01:00
|
|
|
sounds = default.node_sound_stone_defaults(),
|
2015-03-05 16:46:49 +01:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 1},
|
2016-10-20 01:34:22 +02:00
|
|
|
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"},
|
2015-08-25 05:11:46 +02:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2015-08-25 05:11:46 +02:00
|
|
|
tiles = {"default_cactus_top.png", "default_cactus_top.png",
|
|
|
|
"default_cactus_side.png"},
|
2014-12-07 16:29:36 +01:00
|
|
|
paramtype2 = "facedir",
|
2016-12-04 07:55:32 +01:00
|
|
|
groups = {choppy = 3},
|
2014-12-07 16:29:36 +01:00
|
|
|
sounds = default.node_sound_wood_defaults(),
|
|
|
|
on_place = minetest.rotate_node,
|
|
|
|
})
|
|
|
|
|
2019-01-02 03:18:50 +01:00
|
|
|
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",
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2013-05-19 18:43:04 +02:00
|
|
|
walkable = false,
|
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16},
|
2013-05-19 18:43:04 +02:00
|
|
|
},
|
2015-08-25 05:11:46 +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",
|
2018-01-01 10:24:15 +01:00
|
|
|
paramtype2 = "meshoptions",
|
|
|
|
place_param2 = 4,
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2013-05-19 18:43:04 +02:00
|
|
|
walkable = false,
|
2014-12-07 16:29:36 +01:00
|
|
|
buildable_to = true,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2018-01-01 10:24:15 +01:00
|
|
|
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,
|
2017-02-12 00:06:47 +01:00
|
|
|
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",
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
walkable = false,
|
|
|
|
buildable_to = true,
|
2017-03-17 06:06:57 +01:00
|
|
|
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
|
|
|
})
|
|
|
|
|
2015-08-25 05:11:46 +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",
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
walkable = false,
|
|
|
|
buildable_to = true,
|
2016-10-24 20:34:00 +02:00
|
|
|
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",
|
2016-11-05 06:58:12 +01:00
|
|
|
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
|
2015-08-25 05:11:46 +02:00
|
|
|
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)
|
2015-08-25 05:11:46 +02:00
|
|
|
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
|
|
|
})
|
|
|
|
|
2015-08-25 05:11:46 +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,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2014-11-29 11:23:45 +01:00
|
|
|
sunlight_propagates = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
walkable = false,
|
|
|
|
buildable_to = true,
|
|
|
|
drop = "default:grass_1",
|
2016-03-21 10:23:12 +01:00
|
|
|
groups = {snappy = 3, flora = 1, attached_node = 1,
|
2016-10-24 20:34:00 +02:00
|
|
|
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",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16},
|
2014-12-07 16:29:36 +01:00
|
|
|
},
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2015-08-25 05:11:46 +02:00
|
|
|
|
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,
|
2016-04-16 22:53:03 +02:00
|
|
|
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",
|
2016-11-05 06:58:12 +01:00
|
|
|
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
|
2015-08-25 05:11:46 +02:00
|
|
|
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)
|
2015-08-25 05:11:46 +02:00
|
|
|
return ItemStack("default:dry_grass_1 " ..
|
|
|
|
itemstack:get_count() - (1 - ret:get_count()))
|
2015-07-17 16:53:56 +02:00
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2015-08-25 05:11:46 +02:00
|
|
|
for i = 2, 5 do
|
|
|
|
minetest.register_node("default:dry_grass_" .. i, {
|
2015-07-01 14:03:14 +02:00
|
|
|
description = "Dry Grass",
|
|
|
|
drawtype = "plantlike",
|
|
|
|
waving = 1,
|
2015-08-25 05:11:46 +02:00
|
|
|
tiles = {"default_dry_grass_" .. i .. ".png"},
|
|
|
|
inventory_image = "default_dry_grass_" .. i .. ".png",
|
|
|
|
wield_image = "default_dry_grass_" .. i .. ".png",
|
2015-07-01 14:03:14 +02:00
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
walkable = false,
|
|
|
|
buildable_to = true,
|
2016-04-16 22:53:03 +02:00
|
|
|
groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1,
|
|
|
|
not_in_creative_inventory=1, dry_grass = 1},
|
2015-07-01 14:03:14 +02:00
|
|
|
drop = "default:dry_grass_1",
|
|
|
|
sounds = default.node_sound_leaves_defaults(),
|
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2016-11-05 06:58:12 +01:00
|
|
|
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -1 / 16, 6 / 16},
|
2015-07-01 14:03:14 +02:00
|
|
|
},
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2016-10-12 02:49:31 +02:00
|
|
|
|
2017-12-24 03:23:29 +01:00
|
|
|
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 = {
|
2018-01-24 12:29:02 +01:00
|
|
|
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 = {
|
2017-12-24 03:23:29 +01:00
|
|
|
type = "fixed",
|
|
|
|
fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -0.25, 6 / 16},
|
|
|
|
},
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2016-10-13 01:48:56 +02:00
|
|
|
minetest.register_node("default:bush_stem", {
|
|
|
|
description = "Bush Stem",
|
|
|
|
drawtype = "plantlike",
|
2017-02-12 00:06:47 +01:00
|
|
|
visual_scale = 1.41,
|
2016-10-13 01:48:56 +02:00
|
|
|
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(),
|
2016-11-05 06:58:12 +01:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2017-05-13 12:49:04 +02:00
|
|
|
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16},
|
2016-11-05 06:58:12 +01:00
|
|
|
},
|
2016-10-13 01:48:56 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
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},
|
2017-04-12 10:25:21 +02:00
|
|
|
drop = {
|
|
|
|
max_items = 1,
|
|
|
|
items = {
|
|
|
|
{items = {"default:bush_sapling"}, rarity = 5},
|
|
|
|
{items = {"default:bush_leaves"}}
|
|
|
|
}
|
|
|
|
},
|
2016-10-13 01:48:56 +02:00
|
|
|
sounds = default.node_sound_leaves_defaults(),
|
2017-03-09 21:18:58 +01:00
|
|
|
|
|
|
|
after_place_node = default.after_place_leaves,
|
2016-10-13 01:48:56 +02:00
|
|
|
})
|
|
|
|
|
2017-04-12 10:25:21 +02:00
|
|
|
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)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2017-04-12 10:25:21 +02:00
|
|
|
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
|
2017-04-12 10:25:21 +02:00
|
|
|
{x = -1, y = 0, z = -1},
|
|
|
|
{x = 1, y = 1, z = 1},
|
|
|
|
-- maximum interval of interior volume check
|
|
|
|
2)
|
|
|
|
|
|
|
|
return itemstack
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2016-10-13 01:48:56 +02:00
|
|
|
minetest.register_node("default:acacia_bush_stem", {
|
|
|
|
description = "Acacia Bush Stem",
|
|
|
|
drawtype = "plantlike",
|
2017-02-12 00:06:47 +01:00
|
|
|
visual_scale = 1.41,
|
2016-10-13 01:48:56 +02:00
|
|
|
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(),
|
2016-11-05 06:58:12 +01:00
|
|
|
selection_box = {
|
|
|
|
type = "fixed",
|
2017-05-13 12:49:04 +02:00
|
|
|
fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, 0.5, 7 / 16},
|
2016-11-05 06:58:12 +01:00
|
|
|
},
|
2016-10-13 01:48:56 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
minetest.register_node("default:acacia_bush_leaves", {
|
|
|
|
description = "Acacia Bush Leaves",
|
|
|
|
drawtype = "allfaces_optional",
|
|
|
|
waving = 1,
|
2016-11-02 18:58:06 +01:00
|
|
|
tiles = {"default_acacia_leaves_simple.png"},
|
2016-10-13 01:48:56 +02:00
|
|
|
paramtype = "light",
|
|
|
|
groups = {snappy = 3, flammable = 2, leaves = 1},
|
2017-04-12 10:25:21 +02:00
|
|
|
drop = {
|
|
|
|
max_items = 1,
|
|
|
|
items = {
|
|
|
|
{items = {"default:acacia_bush_sapling"}, rarity = 5},
|
|
|
|
{items = {"default:acacia_bush_leaves"}}
|
|
|
|
}
|
|
|
|
},
|
2016-10-13 01:48:56 +02:00
|
|
|
sounds = default.node_sound_leaves_defaults(),
|
2017-03-09 21:18:58 +01:00
|
|
|
|
|
|
|
after_place_node = default.after_place_leaves,
|
2016-10-13 01:48:56 +02:00
|
|
|
})
|
|
|
|
|
2017-04-12 10:25:21 +02:00
|
|
|
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)
|
2017-07-05 16:12:21 +02:00
|
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
2017-04-12 10:25:21 +02:00
|
|
|
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,
|
|
|
|
})
|
|
|
|
|
2018-07-13 02:17:07 +02:00
|
|
|
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,
|
|
|
|
})
|
|
|
|
|
2017-10-05 00:46:32 +02:00
|
|
|
minetest.register_node("default:sand_with_kelp", {
|
2018-02-06 01:50:12 +01:00
|
|
|
description = "Kelp",
|
2017-10-05 00:46:32 +02:00
|
|
|
drawtype = "plantlike_rooted",
|
2018-02-06 01:50:12 +01:00
|
|
|
waving = 1,
|
2017-10-05 00:46:32 +02:00
|
|
|
tiles = {"default_sand.png"},
|
|
|
|
special_tiles = {{name = "default_kelp.png", tileable_vertical = true}},
|
|
|
|
inventory_image = "default_kelp.png",
|
2018-05-19 19:57:01 +02:00
|
|
|
paramtype = "light",
|
2017-10-05 00:46:32 +02:00
|
|
|
paramtype2 = "leveled",
|
|
|
|
groups = {snappy = 3},
|
2018-02-06 01:50:12 +01:00
|
|
|
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",
|
2017-10-05 00:46:32 +02:00
|
|
|
node_placement_prediction = "",
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2018-02-06 01:50:12 +01:00
|
|
|
local pos = pointed_thing.under
|
|
|
|
if minetest.get_node(pos).name ~= "default:sand" then
|
|
|
|
return itemstack
|
|
|
|
end
|
|
|
|
|
2017-10-05 00:46:32 +02:00
|
|
|
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
|
2018-02-06 01:50:12 +01:00
|
|
|
end,
|
|
|
|
|
|
|
|
after_destruct = function(pos, oldnode)
|
|
|
|
minetest.set_node(pos, {name = "default:sand"})
|
2017-10-05 00:46:32 +02:00
|
|
|
end
|
|
|
|
})
|
|
|
|
|
2016-10-13 01:48:56 +02:00
|
|
|
|
2016-10-12 02:49:31 +02:00
|
|
|
--
|
|
|
|
-- 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 = "",
|
|
|
|
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,
|
|
|
|
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 = "",
|
|
|
|
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,
|
|
|
|
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 = "",
|
|
|
|
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,
|
|
|
|
after_destruct = function(pos, oldnode)
|
|
|
|
minetest.set_node(pos, {name = "default:coral_skeleton"})
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2016-10-12 02:49:31 +02:00
|
|
|
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",
|
2018-10-27 14:57:16 +02:00
|
|
|
backface_culling = false,
|
2014-12-07 16:29:36 +01:00
|
|
|
animation = {
|
|
|
|
type = "vertical_frames",
|
|
|
|
aspect_w = 16,
|
|
|
|
aspect_h = 16,
|
2014-12-15 13:27:20 +01:00
|
|
|
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",
|
2018-10-27 14:57:16 +02:00
|
|
|
backface_culling = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
animation = {
|
|
|
|
type = "vertical_frames",
|
|
|
|
aspect_w = 16,
|
|
|
|
aspect_h = 16,
|
2014-12-15 13:27:20 +01:00
|
|
|
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,
|
2015-04-05 01:40:23 +02:00
|
|
|
is_ground_content = false,
|
2013-05-19 18:43:04 +02:00
|
|
|
drop = "",
|
2013-08-02 08:12:20 +02:00
|
|
|
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,
|
2015-12-06 04:09:29 +01:00
|
|
|
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {water = 3, liquid = 3, cools_lava = 1},
|
2016-11-17 03:41:38 +01:00
|
|
|
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 = {
|
|
|
|
{
|
2014-12-15 13:27:20 +01:00
|
|
|
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 = {
|
2014-12-15 13:27:20 +01:00
|
|
|
type = "vertical_frames",
|
2014-12-07 16:29:36 +01:00
|
|
|
aspect_w = 16,
|
|
|
|
aspect_h = 16,
|
2014-12-15 13:27:20 +01:00
|
|
|
length = 0.8,
|
2014-12-07 16:29:36 +01:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2014-12-15 13:27:20 +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,
|
2014-12-15 13:27:20 +01:00
|
|
|
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,
|
2015-04-05 01:40:23 +02:00
|
|
|
is_ground_content = false,
|
2013-05-19 18:43:04 +02:00
|
|
|
drop = "",
|
2013-08-02 08:12:20 +02:00
|
|
|
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,
|
2015-12-06 04:09:29 +01:00
|
|
|
post_effect_color = {a = 103, r = 30, g = 60, b = 90},
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1,
|
|
|
|
cools_lava = 1},
|
2016-11-17 03:41:38 +01:00
|
|
|
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 = {
|
|
|
|
{
|
2015-05-30 08:20:25 +02:00
|
|
|
name = "default_river_water_source_animated.png",
|
2018-10-27 14:57:16 +02:00
|
|
|
backface_culling = false,
|
2015-04-17 07:50:06 +02:00
|
|
|
animation = {
|
|
|
|
type = "vertical_frames",
|
|
|
|
aspect_w = 16,
|
|
|
|
aspect_h = 16,
|
|
|
|
length = 2.0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2015-05-30 08:20:25 +02:00
|
|
|
name = "default_river_water_source_animated.png",
|
2018-10-27 14:57:16 +02:00
|
|
|
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,
|
2017-11-08 13:44:56 +01:00
|
|
|
-- 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,
|
2015-12-06 04:09:29 +01:00
|
|
|
post_effect_color = {a = 103, r = 30, g = 76, b = 90},
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {water = 3, liquid = 3, cools_lava = 1},
|
2016-11-17 03:41:38 +01:00
|
|
|
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",
|
2015-05-30 08:20:25 +02:00
|
|
|
tiles = {"default_river_water.png"},
|
2015-04-17 07:50:06 +02:00
|
|
|
special_tiles = {
|
|
|
|
{
|
2015-05-30 08:20:25 +02:00
|
|
|
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,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2015-05-30 08:20:25 +02:00
|
|
|
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,
|
2015-12-06 04:09:29 +01:00
|
|
|
post_effect_color = {a = 103, r = 30, g = 76, b = 90},
|
2018-12-08 05:00:38 +01:00
|
|
|
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1,
|
|
|
|
cools_lava = 1},
|
2016-11-17 03:41:38 +01:00
|
|
|
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",
|
2018-10-27 14:57:16 +02:00
|
|
|
backface_culling = false,
|
2014-12-07 16:29:36 +01:00
|
|
|
animation = {
|
|
|
|
type = "vertical_frames",
|
|
|
|
aspect_w = 16,
|
|
|
|
aspect_h = 16,
|
2014-12-15 13:27:20 +01:00
|
|
|
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",
|
2018-10-27 14:57:16 +02:00
|
|
|
backface_culling = true,
|
2014-12-07 16:29:36 +01:00
|
|
|
animation = {
|
|
|
|
type = "vertical_frames",
|
|
|
|
aspect_w = 16,
|
|
|
|
aspect_h = 16,
|
2014-12-15 13:27:20 +01:00
|
|
|
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,
|
2015-04-05 01:40:23 +02:00
|
|
|
is_ground_content = false,
|
2013-05-19 18:43:04 +02:00
|
|
|
drop = "",
|
2013-08-02 08:12:20 +02:00
|
|
|
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,
|
2015-12-06 04:09:29 +01:00
|
|
|
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
|
2016-07-07 18:25:42 +02:00
|
|
|
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 = {
|
|
|
|
{
|
2014-12-15 13:27:20 +01:00
|
|
|
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,
|
2014-12-15 13:27:20 +01:00
|
|
|
length = 3.3,
|
2014-12-07 16:29:36 +01:00
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2014-12-15 13:27:20 +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,
|
2014-12-15 13:27:20 +01:00
|
|
|
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,
|
2015-04-05 01:40:23 +02:00
|
|
|
is_ground_content = false,
|
2013-05-19 18:43:04 +02:00
|
|
|
drop = "",
|
2013-08-02 08:12:20 +02:00
|
|
|
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,
|
2015-12-06 04:09:29 +01:00
|
|
|
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
|
2016-07-07 18:25:42 +02:00
|
|
|
groups = {lava = 3, liquid = 2, igniter = 1,
|
2015-08-25 05:11:46 +02:00
|
|
|
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 =
|
2015-08-25 05:11:46 +02:00
|
|
|
"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
|
|
|
|
2017-10-23 20:25:46 +02:00
|
|
|
local function update_bookshelf(pos)
|
|
|
|
local meta = minetest.get_meta(pos)
|
|
|
|
local inv = meta:get_inventory()
|
|
|
|
local invlist = inv:get_list("books")
|
|
|
|
|
2016-11-06 21:36:36 +01:00
|
|
|
local formspec = bookshelf_formspec
|
|
|
|
-- Inventory slots overlay
|
|
|
|
local bx, by = 0, 0.3
|
2017-10-23 20:25:46 +02:00
|
|
|
local n_written, n_empty = 0, 0
|
2016-11-06 21:36:36 +01:00
|
|
|
for i = 1, 16 do
|
|
|
|
if i == 9 then
|
|
|
|
bx = 0
|
|
|
|
by = by + 1
|
|
|
|
end
|
2017-10-23 20:25:46 +02:00
|
|
|
local stack = invlist[i]
|
|
|
|
if stack:is_empty() then
|
2016-11-06 21:36:36 +01:00
|
|
|
formspec = formspec ..
|
|
|
|
"image[" .. bx .. "," .. by .. ";1,1;default_bookshelf_slot.png]"
|
2017-10-23 20:25:46 +02:00
|
|
|
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
|
2016-11-06 21:36:36 +01:00
|
|
|
end
|
|
|
|
bx = bx + 1
|
2016-10-27 19:42:47 +02:00
|
|
|
end
|
2017-10-23 20:25:46 +02:00
|
|
|
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
|
2016-10-27 19:42:47 +02:00
|
|
|
end
|
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
minetest.register_node("default:bookshelf", {
|
|
|
|
description = "Bookshelf",
|
2016-05-24 06:29:30 +02:00
|
|
|
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,
|
2015-08-25 05:11:46 +02:00
|
|
|
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()
|
2015-08-25 05:11:46 +02:00
|
|
|
inv:set_size("books", 8 * 2)
|
2017-10-23 20:25:46 +02:00
|
|
|
update_bookshelf(pos)
|
2014-12-07 16:29:36 +01:00
|
|
|
end,
|
|
|
|
can_dig = function(pos,player)
|
2016-03-23 19:48:22 +01:00
|
|
|
local inv = minetest.get_meta(pos):get_inventory()
|
2014-12-07 16:29:36 +01:00
|
|
|
return inv:is_empty("books")
|
|
|
|
end,
|
2016-03-23 19:48:22 +01:00
|
|
|
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
|
2016-03-23 19:48:22 +01:00
|
|
|
return 0
|
2014-12-07 16:29:36 +01:00
|
|
|
end,
|
2016-03-23 19:48:22 +01:00
|
|
|
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
2015-08-25 05:11:46 +02:00
|
|
|
minetest.log("action", player:get_player_name() ..
|
|
|
|
" moves stuff in bookshelf at " .. minetest.pos_to_string(pos))
|
2017-10-23 20:25:46 +02:00
|
|
|
update_bookshelf(pos)
|
2014-12-07 16:29:36 +01:00
|
|
|
end,
|
|
|
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
2015-08-25 05:11:46 +02:00
|
|
|
minetest.log("action", player:get_player_name() ..
|
2017-10-23 20:25:46 +02:00
|
|
|
" 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)
|
2015-08-25 05:11:46 +02:00
|
|
|
minetest.log("action", player:get_player_name() ..
|
|
|
|
" takes stuff from bookshelf at " .. minetest.pos_to_string(pos))
|
2017-10-23 20:25:46 +02:00
|
|
|
update_bookshelf(pos)
|
2014-12-07 16:29:36 +01:00
|
|
|
end,
|
2016-04-16 04:21:45 +02:00
|
|
|
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
|
|
|
})
|
|
|
|
|
2016-03-06 12:16:33 +01: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
|
2019-02-05 06:28:00 +01:00
|
|
|
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
|
2016-03-06 12:16:33 +01:00
|
|
|
minetest.log("action", (player_name or "") .. " wrote \"" ..
|
2019-02-05 06:28:00 +01:00
|
|
|
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 .. '"')
|
2016-03-06 12:16:33 +01:00
|
|
|
end,
|
|
|
|
})
|
|
|
|
end
|
2013-05-19 18:43:04 +02:00
|
|
|
|
2016-03-06 12:16:33 +01:00
|
|
|
register_sign("wood", "Wooden", {
|
|
|
|
sounds = default.node_sound_wood_defaults(),
|
2016-03-21 11:25:25 +01:00
|
|
|
groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3}
|
2013-05-19 18:43:04 +02:00
|
|
|
})
|
|
|
|
|
2016-03-06 12:16:33 +01:00
|
|
|
register_sign("steel", "Steel", {
|
2016-10-20 01:34:22 +02:00
|
|
|
sounds = default.node_sound_metal_defaults(),
|
2016-03-06 12:16:33 +01:00
|
|
|
groups = {cracky = 2, attached_node = 1}
|
|
|
|
})
|
2015-08-25 05:11:46 +02:00
|
|
|
|
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",
|
2014-11-29 11:23:45 +01:00
|
|
|
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
|
|
|
},
|
2015-08-25 05:11:46 +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},
|
2016-10-20 01:34:22 +02:00
|
|
|
sounds = default.node_sound_metal_defaults(),
|
2016-03-03 10:52:45 +01:00
|
|
|
})
|
|
|
|
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
default.register_fence("default:fence_wood", {
|
2017-07-23 10:26:10 +02:00
|
|
|
description = "Apple Wood Fence",
|
2015-12-15 06:49:20 +01:00
|
|
|
texture = "default_fence_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
material = "default:wood",
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
sounds = default.node_sound_wood_defaults()
|
|
|
|
})
|
|
|
|
|
|
|
|
default.register_fence("default:fence_acacia_wood", {
|
2017-06-25 11:19:12 +02:00
|
|
|
description = "Acacia Wood Fence",
|
2015-12-15 06:49:20 +01:00
|
|
|
texture = "default_fence_acacia_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
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",
|
2015-12-15 06:49:20 +01:00
|
|
|
texture = "default_fence_junglewood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
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
|
|
|
})
|
|
|
|
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
default.register_fence("default:fence_pine_wood", {
|
2017-06-25 11:19:12 +02:00
|
|
|
description = "Pine Wood Fence",
|
2015-12-15 06:49:20 +01:00
|
|
|
texture = "default_fence_pine_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
material = "default:pine_wood",
|
2016-08-27 03:41:31 +02:00
|
|
|
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
sounds = default.node_sound_wood_defaults()
|
|
|
|
})
|
|
|
|
|
|
|
|
default.register_fence("default:fence_aspen_wood", {
|
2017-06-25 11:19:12 +02:00
|
|
|
description = "Aspen Wood Fence",
|
2015-12-15 06:49:20 +01:00
|
|
|
texture = "default_fence_aspen_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
material = "default:aspen_wood",
|
2016-08-27 03:41:31 +02:00
|
|
|
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
|
Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.
Since this creates an API, insert it into the game_api.txt.
The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.
The default fence recipe is modified to be as follows:
wood, stick, wood
wood, stick, wood
This recipe yields 4 fence nodes.
This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:
pine wood, stick, pine wood
pine wood, stick, pine wood
This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).
Stick and fences nodes are named in a consistent way.
2015-12-15 06:49:20 +01:00
|
|
|
sounds = default.node_sound_wood_defaults()
|
|
|
|
})
|
2013-05-19 18:43:04 +02:00
|
|
|
|
2018-07-07 20:03:33 +02:00
|
|
|
default.register_fence_rail("default:fence_rail_wood", {
|
|
|
|
description = "Apple Wood Fence Rail",
|
2018-07-08 23:22:07 +02:00
|
|
|
texture = "default_fence_rail_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
2018-07-08 23:22:07 +02:00
|
|
|
texture = "default_fence_rail_acacia_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
2018-07-08 23:22:07 +02:00
|
|
|
texture = "default_fence_rail_junglewood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
2018-07-08 23:22:07 +02:00
|
|
|
texture = "default_fence_rail_pine_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
2018-07-08 23:22:07 +02:00
|
|
|
texture = "default_fence_rail_aspen_wood.png",
|
2018-07-07 20:03:33 +02:00
|
|
|
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",
|
2017-03-29 05:59:19 +02:00
|
|
|
paramtype2 = "glasslikeliquidlevel",
|
2014-12-07 16:29:36 +01:00
|
|
|
sunlight_propagates = true,
|
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
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",
|
2015-03-01 04:15:16 +01:00
|
|
|
drawtype = "glasslike_framed_optional",
|
|
|
|
tiles = {"default_obsidian_glass.png", "default_obsidian_glass_detail.png"},
|
2013-05-19 18:43:04 +02:00
|
|
|
paramtype = "light",
|
2017-03-29 05:59:19 +02:00
|
|
|
paramtype2 = "glasslikeliquidlevel",
|
2014-12-07 16:29:36 +01:00
|
|
|
is_ground_content = false,
|
|
|
|
sunlight_propagates = true,
|
|
|
|
sounds = default.node_sound_glass_defaults(),
|
2015-06-17 19:07:55 +02:00
|
|
|
groups = {cracky = 3},
|
2013-05-19 18:43:04 +02:00
|
|
|
})
|
|
|
|
|
2014-10-21 19:53:04 +02:00
|
|
|
|
2014-12-07 16:29:36 +01:00
|
|
|
minetest.register_node("default:brick", {
|
|
|
|
description = "Brick Block",
|
2016-05-29 22:45:18 +02:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
place_param2 = 0,
|
2014-12-07 16:29:36 +01:00
|
|
|
tiles = {"default_brick.png"},
|
2014-10-21 19:53:04 +02:00
|
|
|
is_ground_content = false,
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {cracky = 3},
|
2014-12-07 16:29:36 +01:00
|
|
|
sounds = default.node_sound_stone_defaults(),
|
2014-10-21 19:53:04 +02:00
|
|
|
})
|
|
|
|
|
2015-03-05 16:46:49 +01:00
|
|
|
|
|
|
|
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(),
|
2015-05-11 23:29:18 +02:00
|
|
|
light_source = default.LIGHT_MAX,
|
2015-03-05 16:46:49 +01:00
|
|
|
})
|
|
|
|
|
2017-02-09 01:01:30 +01:00
|
|
|
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"},
|
2015-06-14 05:58:54 +02:00
|
|
|
is_ground_content = false,
|
2014-12-07 16:29:36 +01:00
|
|
|
sounds = default.node_sound_defaults(),
|
2015-08-25 05:11:46 +02:00
|
|
|
groups = {not_in_creative_inventory = 1},
|
2014-12-07 16:29:36 +01:00
|
|
|
})
|
Leafdecay: Node timer based implementation, API
This implements a node-timer based leafdecay mechanism, and exposes
an API to use it in mods.
The API is documented in game_api.txt.
`default.register_leafdecay(leafdecaydef)`
`leafdecaydef` is a table, with following members:
{
trunks = { "default:tree"}, -- nodes considered trunks
leaves = { "default:leaves", "default:apple"}, -- nodes considered leaves
radius = 3, -- activates leafdecay this far from the trunk
}
The algorithm will drop `leaves` items in the area if no `trunks` are found
in the `trunk_radius` sized area around the position of the leaf. If a node
listed in `leaves` has a group `leafdecay_drop > 0`, then the item is dropped,
otherwise the item is removed but not dropped.
The algorithm also implements a value `default.leafdecay_speed` (default
15) which can be modified to increase or decrease of the leaf decay. The
algorithm will vary the actual speed a bit to introduce randomness.
Leaf decay is randomized by 0.1 seconds to reduce the chance that
decay happens many times on the same second interval. This requires
nodetimer_interval to be set to values lower than 1.0 to have an
effect.
The leaves will decay between 2 and 10 seconds after digging the trunk,
and happen at non-integer second intervals.
-- The API was added by sofar.
2017-02-08 01:28:02 +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
|
|
|
|
|
2019-01-04 05:12:07 +01:00
|
|
|
default.register_leafdecay({
|
|
|
|
trunks = {"default:pine_tree"},
|
|
|
|
leaves = {"default:pine_needles"},
|
|
|
|
radius = 3,
|
|
|
|
})
|
|
|
|
|
Leafdecay: Node timer based implementation, API
This implements a node-timer based leafdecay mechanism, and exposes
an API to use it in mods.
The API is documented in game_api.txt.
`default.register_leafdecay(leafdecaydef)`
`leafdecaydef` is a table, with following members:
{
trunks = { "default:tree"}, -- nodes considered trunks
leaves = { "default:leaves", "default:apple"}, -- nodes considered leaves
radius = 3, -- activates leafdecay this far from the trunk
}
The algorithm will drop `leaves` items in the area if no `trunks` are found
in the `trunk_radius` sized area around the position of the leaf. If a node
listed in `leaves` has a group `leafdecay_drop > 0`, then the item is dropped,
otherwise the item is removed but not dropped.
The algorithm also implements a value `default.leafdecay_speed` (default
15) which can be modified to increase or decrease of the leaf decay. The
algorithm will vary the actual speed a bit to introduce randomness.
Leaf decay is randomized by 0.1 seconds to reduce the chance that
decay happens many times on the same second interval. This requires
nodetimer_interval to be set to values lower than 1.0 to have an
effect.
The leaves will decay between 2 and 10 seconds after digging the trunk,
and happen at non-integer second intervals.
-- The API was added by sofar.
2017-02-08 01:28:02 +01:00
|
|
|
default.register_leafdecay({
|
|
|
|
trunks = {"default:acacia_tree"},
|
|
|
|
leaves = {"default:acacia_leaves"},
|
|
|
|
radius = 2,
|
|
|
|
})
|
|
|
|
|
|
|
|
default.register_leafdecay({
|
|
|
|
trunks = {"default:aspen_tree"},
|
|
|
|
leaves = {"default:aspen_leaves"},
|
2017-03-17 06:17:57 +01:00
|
|
|
radius = 3,
|
Leafdecay: Node timer based implementation, API
This implements a node-timer based leafdecay mechanism, and exposes
an API to use it in mods.
The API is documented in game_api.txt.
`default.register_leafdecay(leafdecaydef)`
`leafdecaydef` is a table, with following members:
{
trunks = { "default:tree"}, -- nodes considered trunks
leaves = { "default:leaves", "default:apple"}, -- nodes considered leaves
radius = 3, -- activates leafdecay this far from the trunk
}
The algorithm will drop `leaves` items in the area if no `trunks` are found
in the `trunk_radius` sized area around the position of the leaf. If a node
listed in `leaves` has a group `leafdecay_drop > 0`, then the item is dropped,
otherwise the item is removed but not dropped.
The algorithm also implements a value `default.leafdecay_speed` (default
15) which can be modified to increase or decrease of the leaf decay. The
algorithm will vary the actual speed a bit to introduce randomness.
Leaf decay is randomized by 0.1 seconds to reduce the chance that
decay happens many times on the same second interval. This requires
nodetimer_interval to be set to values lower than 1.0 to have an
effect.
The leaves will decay between 2 and 10 seconds after digging the trunk,
and happen at non-integer second intervals.
-- The API was added by sofar.
2017-02-08 01:28:02 +01:00
|
|
|
})
|
2017-03-09 21:18:58 +01:00
|
|
|
|
|
|
|
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,
|
|
|
|
})
|
2018-07-13 02:17:07 +02:00
|
|
|
|
|
|
|
default.register_leafdecay({
|
|
|
|
trunks = {"default:pine_bush_stem"},
|
|
|
|
leaves = {"default:pine_bush_needles"},
|
|
|
|
radius = 1,
|
|
|
|
})
|