Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
c_content.h
Go to the documentation of this file.
1/*
2Minetest
3Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation; either version 2.1 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public License along
16with this program; if not, write to the Free Software Foundation, Inc.,
1751 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18*/
19
20
21/******************************************************************************/
22/******************************************************************************/
23/* WARNING!!!! do NOT add this header in any include file or any code file */
24/* not being a script/modapi file!!!!!!!! */
25/******************************************************************************/
26/******************************************************************************/
27
28#pragma once
29
30extern "C" {
31#include <lua.h>
32}
33
34#include <iostream>
35#include <vector>
36#include <array>
37
39#include "util/string.h"
40#include "itemgroup.h"
41#include "itemdef.h"
42#include "util/pointabilities.h"
43#include "c_types.h"
44// We do an explicit path include because by default c_content.h include src/client/hud.h
45// prior to the src/hud.h, which is not good on server only build
46#include "../../hud.h"
47#include "content/mods.h"
48
49namespace Json { class Value; }
50
51struct MapNode;
52class NodeDefManager;
53struct PointedThing;
54struct ItemStack;
55struct ItemDefinition;
56struct ToolCapabilities;
57struct ObjectProperties;
58struct SoundSpec;
60class Inventory;
61class InventoryList;
62struct NodeBox;
63struct ContentFeatures;
64struct TileDef;
65class IGameDef;
66struct DigParams;
67struct HitParams;
68struct EnumString;
69struct NoiseParams;
70class Schematic;
73namespace treegen { struct TreeDef; }
74
75extern struct EnumString es_TileAnimationType[];
76
77
78extern const std::array<const char *, 33> object_property_keys;
79
80void read_content_features (lua_State *L, ContentFeatures &f,
81 int index);
82void push_content_features (lua_State *L,
83 const ContentFeatures &c);
84
85void push_nodebox (lua_State *L,
86 const NodeBox &box);
87void push_palette (lua_State *L,
88 const std::vector<video::SColor> *palette);
89
90TileDef read_tiledef (lua_State *L, int index,
91 u8 drawtype, bool special);
92
93void read_simplesoundspec (lua_State *L, int index,
94 SoundSpec &spec);
95NodeBox read_nodebox (lua_State *L, int index);
96
97void read_server_sound_params (lua_State *L, int index,
99
100void push_dig_params (lua_State *L,
101 const DigParams &params);
102void push_hit_params (lua_State *L,
103 const HitParams &params);
104
105ItemStack read_item (lua_State *L, int index, IItemDefManager *idef);
106
107struct TileAnimationParams read_animation_definition(lua_State *L, int index);
108
109PointabilityType read_pointability_type (lua_State *L, int index);
110Pointabilities read_pointabilities (lua_State *L, int index);
111void push_pointability_type (lua_State *L, PointabilityType pointable);
112void push_pointabilities (lua_State *L, const Pointabilities &pointabilities);
113
115void push_tool_capabilities (lua_State *L,
116 const ToolCapabilities &prop);
117WearBarParams read_wear_bar_params (lua_State *L, int table);
118void push_wear_bar_params (lua_State *L,
119 const WearBarParams &prop);
120
121void read_item_definition (lua_State *L, int index, const ItemDefinition &default_def,
122 ItemDefinition &def);
123void push_item_definition (lua_State *L,
124 const ItemDefinition &i);
125void push_item_definition_full (lua_State *L,
126 const ItemDefinition &i);
127
128void read_object_properties (lua_State *L, int index,
130 ObjectProperties *prop,
131 IItemDefManager *idef);
132
133void push_object_properties (lua_State *L,
134 const ObjectProperties *prop);
135
136void push_inventory_list (lua_State *L,
137 const InventoryList &invlist);
138void push_inventory_lists (lua_State *L,
139 const Inventory &inv);
140void read_inventory_list (lua_State *L, int tableindex,
141 Inventory *inv, const char *name,
142 IGameDef *gdef, int forcesize=-1);
143
144MapNode readnode (lua_State *L, int index);
145void pushnode (lua_State *L, const MapNode &n);
146
147
148void read_groups (lua_State *L, int index,
149 ItemGroupList &result);
150
151void push_groups (lua_State *L,
152 const ItemGroupList &groups);
153
154//TODO rename to "read_enum_field"
155int getenumfield (lua_State *L, int table,
156 const char *fieldname,
157 const EnumString *spec,
158 int default_);
159
160bool getflagsfield (lua_State *L, int table,
161 const char *fieldname,
162 FlagDesc *flagdesc,
163 u32 *flags, u32 *flagmask);
164
165bool read_flags (lua_State *L, int index,
166 FlagDesc *flagdesc,
167 u32 *flags, u32 *flagmask);
168
169void push_flags_string (lua_State *L, FlagDesc *flagdesc,
170 u32 flags, u32 flagmask);
171
172u32 read_flags_table (lua_State *L, int table,
173 FlagDesc *flagdesc, u32 *flagmask);
174
175void push_items (lua_State *L,
176 const std::vector<ItemStack> &items);
177
178std::vector<ItemStack> read_items (lua_State *L,
179 int index,
180 IGameDef* gdef);
181
182void push_simplesoundspec (lua_State *L,
183 const SoundSpec &spec);
184
185bool string_to_enum (const EnumString *spec,
186 int &result,
187 const std::string &str);
188
189bool read_noiseparams (lua_State *L, int index,
190 NoiseParams *np);
191void push_noiseparams (lua_State *L, NoiseParams *np);
192
193bool read_tree_def (lua_State *L, int idx,
194 const NodeDefManager *ndef,
195 treegen::TreeDef &tree_def);
196
197void luaentity_get (lua_State *L,u16 id);
198
199bool push_json_value (lua_State *L,
200 const Json::Value &value,
201 int nullindex);
202void read_json_value (lua_State *L, Json::Value &root,
203 int index, u8 recursion = 0);
204
210void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm =
211 false, bool hitpoint = false);
212
213void push_objectRef (lua_State *L, const u16 id);
214
215void read_hud_element (lua_State *L, HudElement *elem);
216
217void push_hud_element (lua_State *L, HudElement *elem);
218
219bool read_hud_change (lua_State *L, HudElementStat &stat, HudElement *elem, void **value);
220
221void push_collision_move_result(lua_State *L, const collisionMoveResult &res);
222
223void push_mod_spec(lua_State *L, const ModSpec &spec, bool include_unsatisfied);
void push_object_properties(lua_State *L, const ObjectProperties *prop)
Definition: c_content.cpp:472
void push_simplesoundspec(lua_State *L, const SoundSpec &spec)
Definition: c_content.cpp:1229
bool read_noiseparams(lua_State *L, int index, NoiseParams *np)
Definition: c_content.cpp:1970
NodeBox read_nodebox(lua_State *L, int index)
Definition: c_content.cpp:1243
void push_item_definition_full(lua_State *L, const ItemDefinition &i)
Definition: c_content.cpp:191
void push_content_features(lua_State *L, const ContentFeatures &c)
Definition: c_content.cpp:971
int getenumfield(lua_State *L, int table, const char *fieldname, const EnumString *spec, int default_)
Definition: c_content.cpp:1331
struct TileAnimationParams read_animation_definition(lua_State *L, int index)
Definition: c_content.cpp:1533
struct EnumString es_TileAnimationType[]
Definition: c_content.cpp:42
void push_objectRef(lua_State *L, const u16 id)
Definition: c_content.cpp:2234
void read_content_features(lua_State *L, ContentFeatures &f, int index)
Definition: c_content.cpp:645
void push_items(lua_State *L, const std::vector< ItemStack > &items)
Definition: c_content.cpp:1924
bool read_flags(lua_State *L, int index, FlagDesc *flagdesc, u32 *flags, u32 *flagmask)
Definition: c_content.cpp:1839
void push_inventory_lists(lua_State *L, const Inventory &inv)
Definition: c_content.cpp:1489
ToolCapabilities read_tool_capabilities(lua_State *L, int table)
Definition: c_content.cpp:1568
void push_noiseparams(lua_State *L, NoiseParams *np)
Definition: c_content.cpp:1998
void read_inventory_list(lua_State *L, int tableindex, Inventory *inv, const char *name, IGameDef *gdef, int forcesize=-1)
Definition: c_content.cpp:1502
const std::array< const char *, 33 > object_property_keys
Definition: c_content.cpp:261
TileDef read_tiledef(lua_State *L, int index, u8 drawtype, bool special)
Definition: c_content.cpp:572
bool read_tree_def(lua_State *L, int idx, const NodeDefManager *ndef, treegen::TreeDef &tree_def)
Definition: c_content.cpp:2017
void push_pointabilities(lua_State *L, const Pointabilities &pointabilities)
Definition: c_content.cpp:1726
void push_palette(lua_State *L, const std::vector< video::SColor > *palette)
Definition: c_content.cpp:1157
Pointabilities read_pointabilities(lua_State *L, int index)
Definition: c_content.cpp:1659
void push_pointability_type(lua_State *L, PointabilityType pointable)
Definition: c_content.cpp:1709
void read_groups(lua_State *L, int index, ItemGroupList &result)
Definition: c_content.cpp:1890
void read_hud_element(lua_State *L, HudElement *elem)
Definition: c_content.cpp:2246
void luaentity_get(lua_State *L, u16 id)
Definition: c_content.cpp:1957
std::vector< ItemStack > read_items(lua_State *L, int index, IGameDef *gdef)
Definition: c_content.cpp:1934
void push_flags_string(lua_State *L, FlagDesc *flagdesc, u32 flags, u32 flagmask)
Definition: c_content.cpp:1879
void read_object_properties(lua_State *L, int index, ServerActiveObject *sao, ObjectProperties *prop, IItemDefManager *idef)
Definition: c_content.cpp:298
void push_hit_params(lua_State *L, const HitParams &params)
Definition: c_content.cpp:1818
void push_hud_element(lua_State *L, HudElement *elem)
Definition: c_content.cpp:2324
PointabilityType read_pointability_type(lua_State *L, int index)
Definition: c_content.cpp:1642
void push_nodebox(lua_State *L, const NodeBox &box)
Definition: c_content.cpp:1105
void pushnode(lua_State *L, const MapNode &n)
Definition: c_content.cpp:1308
void push_dig_params(lua_State *L, const DigParams &params)
Definition: c_content.cpp:1809
void read_server_sound_params(lua_State *L, int index, ServerPlayingSound &params)
Definition: c_content.cpp:1171
void read_simplesoundspec(lua_State *L, int index, SoundSpec &spec)
Definition: c_content.cpp:1212
void push_tool_capabilities(lua_State *L, const ToolCapabilities &prop)
Definition: c_content.cpp:1423
void push_wear_bar_params(lua_State *L, const WearBarParams &prop)
Definition: c_content.cpp:1467
void push_item_definition(lua_State *L, const ItemDefinition &i)
Definition: c_content.cpp:182
ItemStack read_item(lua_State *L, int index, IItemDefManager *idef)
Definition: c_content.cpp:1356
u32 read_flags_table(lua_State *L, int table, FlagDesc *flagdesc, u32 *flagmask)
Definition: c_content.cpp:1854
WearBarParams read_wear_bar_params(lua_State *L, int table)
Definition: c_content.cpp:1761
bool string_to_enum(const EnumString *spec, int &result, const std::string &str)
Definition: c_content.cpp:1341
bool push_json_value(lua_State *L, const Json::Value &value, int nullindex)
Definition: c_content.cpp:2132
void read_item_definition(lua_State *L, int index, const ItemDefinition &default_def, ItemDefinition &def)
Definition: c_content.cpp:51
void read_json_value(lua_State *L, Json::Value &root, int index, u8 recursion=0)
Definition: c_content.cpp:2148
bool read_hud_change(lua_State *L, HudElementStat &stat, HudElement *elem, void **value)
Definition: c_content.cpp:2386
void push_inventory_list(lua_State *L, const InventoryList &invlist)
Definition: c_content.cpp:1483
void push_groups(lua_State *L, const ItemGroupList &groups)
Definition: c_content.cpp:1914
void push_collision_move_result(lua_State *L, const collisionMoveResult &res)
Definition: c_content.cpp:2481
void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm=false, bool hitpoint=false)
Definition: c_content.cpp:2198
bool getflagsfield(lua_State *L, int table, const char *fieldname, FlagDesc *flagdesc, u32 *flags, u32 *flagmask)
Definition: c_content.cpp:1827
void push_mod_spec(lua_State *L, const ModSpec &spec, bool include_unsatisfied)
Definition: c_content.cpp:2544
MapNode readnode(lua_State *L, int index)
Definition: c_content.cpp:1294
Definition: gamedef.h:51
Definition: itemdef.h:143
Definition: inventory.h:209
Definition: inventory.h:329
This class is for getting the actual properties of nodes from their content ID.
Definition: nodedef.h:556
Definition: mg_schematic.h:94
Definition: serveractiveobject.h:55
HudElementStat
Definition: hud.h:73
std::unordered_map< std::string, int > ItemGroupList
Definition: itemgroup.h:25
static const struct table_key table[]
Definition: keycode.cpp:48
static LightingParams params
Definition: light.cpp:40
Definition: c_content.h:49
Definition: mg_decoration.h:34
#define idx(x, y)
Definition: noise.cpp:552
PointabilityType
Definition: pointabilities.h:28
Definition: nodedef.h:310
Definition: tool.h:120
Definition: c_types.h:31
Definition: string.h:80
Definition: tool.h:142
Definition: hud.h:98
Definition: itemdef.h:80
Definition: inventory.h:34
Definition: mapnode.h:139
Definition: mods.h:40
Definition: nodedef.h:127
Definition: noise.h:119
Definition: object_properties.h:32
Definition: pointabilities.h:45
An active object or node which is selected by a ray on the map.
Definition: pointedthing.h:37
Definition: server.h:108
Describes the sound information for playback.
Definition: sound.h:35
Definition: tileanimation.h:33
Definition: nodedef.h:279
Definition: tool.h:61
Definition: tool.h:89
Definition: collision.h:58
Definition: treegen.h:40