Completely generalized mesh generation; ContentFeatures serialization
[oweals/minetest.git] / src / content_mapnode.h
1 /*
2 Minetest-c55
3 Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef CONTENT_MAPNODE_HEADER
21 #define CONTENT_MAPNODE_HEADER
22
23 #include "mapnode.h"
24 class IWritableNodeDefManager;
25
26 /*
27         Initialize default node definitions
28
29         This accesses tsrc; if it is non-NULL, textures are set
30         for the nodes.
31
32         Client first calls this with tsrc=NULL to run some
33         unit tests and stuff, then it runs this again with tsrc
34         defined to get the textures.
35
36         Server only calls this once with tsrc=NULL.
37 */
38 void content_mapnode_init(IWritableNodeDefManager *nodemgr);
39
40 // Backwards compatibility for non-extended content types in v19
41 extern content_t trans_table_19[21][2];
42 MapNode mapnode_translate_from_internal(MapNode n_from, u8 version);
43 MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
44
45 /*
46         Node content type IDs
47         Ranges:
48 */
49
50 // 0x000...0x07f (0...127): param2 is fully usable
51 // 126 and 127 are reserved.
52 // Use these sparingly, only when the extra space in param2 might be needed.
53 // Add a space when there is unused space between numbers.
54 #define CONTENT_STONE 0
55
56 #define CONTENT_WATER 2
57 #define CONTENT_TORCH 3
58
59 #define CONTENT_WATERSOURCE 9
60
61 #define CONTENT_SIGN_WALL 14
62 #define CONTENT_CHEST 15
63 #define CONTENT_FURNACE 16
64 #define CONTENT_LOCKABLE_CHEST 17
65
66 #define CONTENT_FENCE 21
67
68 #define CONTENT_RAIL 30
69 #define CONTENT_LADDER 31
70 #define CONTENT_LAVA 32
71 #define CONTENT_LAVASOURCE 33
72
73 // 0x800...0xfff (2048...4095): higher 4 bytes of param2 are not usable
74 #define CONTENT_GRASS 0x800 //1
75 #define CONTENT_TREE 0x801 //4
76 #define CONTENT_LEAVES 0x802 //5
77 #define CONTENT_GRASS_FOOTSTEPS 0x803 //6
78 #define CONTENT_MESE 0x804 //7
79 #define CONTENT_MUD 0x805 //8
80 // Pretty much useless, clouds won't be drawn this way
81 #define CONTENT_CLOUD 0x806 //10
82 #define CONTENT_COALSTONE 0x807 //11
83 #define CONTENT_WOOD 0x808 //12
84 #define CONTENT_SAND 0x809 //13
85 #define CONTENT_COBBLE 0x80a //18
86 #define CONTENT_STEEL 0x80b //19
87 #define CONTENT_GLASS 0x80c //20
88 #define CONTENT_MOSSYCOBBLE 0x80d //22
89 #define CONTENT_GRAVEL 0x80e //23
90 #define CONTENT_SANDSTONE 0x80f //24
91 #define CONTENT_CACTUS 0x810 //25
92 #define CONTENT_BRICK 0x811 //26
93 #define CONTENT_CLAY 0x812 //27
94 #define CONTENT_PAPYRUS 0x813 //28
95 #define CONTENT_BOOKSHELF 0x814 //29
96 #define CONTENT_JUNGLETREE 0x815
97 #define CONTENT_JUNGLEGRASS 0x816
98 #define CONTENT_NC 0x817
99 #define CONTENT_NC_RB 0x818
100 #define CONTENT_APPLE 0x819
101 #define CONTENT_SAPLING 0x820
102
103 #endif
104