Luanti 5.11.0-dev
 
Loading...
Searching...
No Matches
c_content.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5
6/******************************************************************************/
7/******************************************************************************/
8/* WARNING!!!! do NOT add this header in any include file or any code file */
9/* not being a script/modapi file!!!!!!!! */
10/******************************************************************************/
11/******************************************************************************/
12
13#pragma once
14
15extern "C" {
16#include <lua.h>
17}
18
19#include <iostream>
20#include <vector>
21#include <array>
22
24#include "util/string.h"
25#include "itemgroup.h"
26#include "itemdef.h"
27#include "util/pointabilities.h"
28// We do an explicit path include because by default c_content.h include src/client/hud.h
29// prior to the src/hud.h, which is not good on server only build
30#include "../../hud.h"
31#include "content/mods.h"
32
33namespace Json { class Value; }
34
35struct MapNode;
36class NodeDefManager;
37struct PointedThing;
38struct ItemStack;
39struct ItemDefinition;
40struct ToolCapabilities;
41struct ObjectProperties;
42struct SoundSpec;
44class Inventory;
45class InventoryList;
46struct NodeBox;
47struct ContentFeatures;
48struct TileDef;
49class IGameDef;
50struct DigParams;
51struct HitParams;
52struct EnumString;
53struct NoiseParams;
54class Schematic;
57namespace treegen { struct TreeDef; }
58
59extern struct EnumString es_TileAnimationType[];
60extern struct EnumString es_ItemType[];
62
63
64extern const std::array<const char *, 33> object_property_keys;
65
66void read_content_features(lua_State *L, ContentFeatures &f, int index);
67void push_content_features(lua_State *L, const ContentFeatures &c);
68
69void push_nodebox(lua_State *L, const NodeBox &box);
70void push_palette(lua_State *L, const std::vector<video::SColor> *palette);
71
72TileDef read_tiledef(lua_State *L, int index, u8 drawtype, bool special);
73
74void read_simplesoundspec(lua_State *L, int index, SoundSpec &spec);
75NodeBox read_nodebox(lua_State *L, int index);
76
77void read_server_sound_params(lua_State *L, int index,
78 ServerPlayingSound &params);
79
80void push_dig_params(lua_State *L, const DigParams &params);
81void push_hit_params(lua_State *L, const HitParams &params);
82
83ItemStack read_item(lua_State *L, int index, IItemDefManager *idef);
84
85struct TileAnimationParams read_animation_definition(lua_State *L, int index);
86
87PointabilityType read_pointability_type(lua_State *L, int index);
88Pointabilities read_pointabilities(lua_State *L, int index);
89void push_pointability_type(lua_State *L, PointabilityType pointable);
90void push_pointabilities(lua_State *L, const Pointabilities &pointabilities);
91
93void push_tool_capabilities(lua_State *L, const ToolCapabilities &prop);
95void push_wear_bar_params(lua_State *L, const WearBarParams &prop);
96
97void read_item_definition(lua_State *L, int index,
98 const ItemDefinition &default_def, ItemDefinition &def);
99void push_item_definition(lua_State *L, const ItemDefinition &i);
100void push_item_definition_full(lua_State *L, const ItemDefinition &i);
101
102void read_object_properties(lua_State *L, int index,
104 ObjectProperties *prop,
105 IItemDefManager *idef);
106
107void push_object_properties(lua_State *L, const ObjectProperties *prop);
108
109void push_inventory_list(lua_State *L, const InventoryList &invlist);
110void push_inventory_lists(lua_State *L, const Inventory &inv);
111void read_inventory_list(lua_State *L, int tableindex,
112 Inventory *inv, const char *name,
113 IGameDef *gdef, int forcesize=-1);
114
115MapNode readnode(lua_State *L, int index);
116void pushnode(lua_State *L, const MapNode &n);
117
118
119void read_groups(lua_State *L, int index, ItemGroupList &result);
120
121void push_groups(lua_State *L, const ItemGroupList &groups);
122
123//TODO rename to "read_enum_field"
124int getenumfield(lua_State *L, int table, const char *fieldname,
125 const EnumString *spec, int default_);
126
127bool getflagsfield(lua_State *L, int table, const char *fieldname,
128 FlagDesc *flagdesc, u32 *flags, u32 *flagmask);
129
130bool read_flags(lua_State *L, int index, FlagDesc *flagdesc,
131 u32 *flags, u32 *flagmask);
132
133void push_flags_string(lua_State *L, FlagDesc *flagdesc,
134 u32 flags, u32 flagmask);
135
136u32 read_flags_table(lua_State *L, int table,
137 FlagDesc *flagdesc, u32 *flagmask);
138
139void push_items(lua_State *L, const std::vector<ItemStack> &items);
140
141std::vector<ItemStack> read_items(lua_State *L, int index, IGameDef* gdef);
142
143void push_simplesoundspec(lua_State *L, const SoundSpec &spec);
144
145bool read_noiseparams(lua_State *L, int index, NoiseParams *np);
146void push_noiseparams(lua_State *L, NoiseParams *np);
147
148bool read_tree_def(lua_State *L, int idx,
149 const NodeDefManager *ndef, treegen::TreeDef &tree_def);
150
151void luaentity_get(lua_State *L,u16 id);
152
153bool push_json_value(lua_State *L, const Json::Value &value, int nullindex);
154void read_json_value(lua_State *L, Json::Value &root, int index, u16 max_depth);
155
161void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm =
162 false, bool hitpoint = false);
163
164void push_objectRef(lua_State *L, const u16 id);
165
166void read_hud_element(lua_State *L, HudElement *elem);
167
168void push_hud_element(lua_State *L, HudElement *elem);
169
170bool read_hud_change(lua_State *L, HudElementStat &stat, HudElement *elem, void **value);
171
172void push_collision_move_result(lua_State *L, const collisionMoveResult &res);
173
174void 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:474
void push_simplesoundspec(lua_State *L, const SoundSpec &spec)
Definition c_content.cpp:1231
bool read_noiseparams(lua_State *L, int index, NoiseParams *np)
Definition c_content.cpp:1960
NodeBox read_nodebox(lua_State *L, int index)
Definition c_content.cpp:1245
void push_item_definition_full(lua_State *L, const ItemDefinition &i)
Definition c_content.cpp:193
void push_content_features(lua_State *L, const ContentFeatures &c)
Definition c_content.cpp:973
int getenumfield(lua_State *L, int table, const char *fieldname, const EnumString *spec, int default_)
Definition c_content.cpp:1336
struct TileAnimationParams read_animation_definition(lua_State *L, int index)
Definition c_content.cpp:1523
struct EnumString es_TileAnimationType[]
Definition c_content.cpp:27
void push_objectRef(lua_State *L, const u16 id)
Definition c_content.cpp:2218
void read_content_features(lua_State *L, ContentFeatures &f, int index)
Definition c_content.cpp:647
void push_items(lua_State *L, const std::vector< ItemStack > &items)
Definition c_content.cpp:1914
bool read_flags(lua_State *L, int index, FlagDesc *flagdesc, u32 *flags, u32 *flagmask)
Definition c_content.cpp:1829
void push_inventory_lists(lua_State *L, const Inventory &inv)
Definition c_content.cpp:1479
ToolCapabilities read_tool_capabilities(lua_State *L, int table)
Definition c_content.cpp:1558
void push_noiseparams(lua_State *L, NoiseParams *np)
Definition c_content.cpp:1988
void read_inventory_list(lua_State *L, int tableindex, Inventory *inv, const char *name, IGameDef *gdef, int forcesize=-1)
Definition c_content.cpp:1492
const std::array< const char *, 33 > object_property_keys
Definition c_content.cpp:263
TileDef read_tiledef(lua_State *L, int index, u8 drawtype, bool special)
Definition c_content.cpp:574
struct EnumString es_ItemType[]
Definition c_content.cpp:35
bool read_tree_def(lua_State *L, int idx, const NodeDefManager *ndef, treegen::TreeDef &tree_def)
Definition c_content.cpp:2007
void push_pointabilities(lua_State *L, const Pointabilities &pointabilities)
Definition c_content.cpp:1716
void push_palette(lua_State *L, const std::vector< video::SColor > *palette)
Definition c_content.cpp:1159
Pointabilities read_pointabilities(lua_State *L, int index)
Definition c_content.cpp:1649
void push_pointability_type(lua_State *L, PointabilityType pointable)
Definition c_content.cpp:1699
void read_groups(lua_State *L, int index, ItemGroupList &result)
Definition c_content.cpp:1880
void read_hud_element(lua_State *L, HudElement *elem)
Definition c_content.cpp:2232
void luaentity_get(lua_State *L, u16 id)
Definition c_content.cpp:1947
std::vector< ItemStack > read_items(lua_State *L, int index, IGameDef *gdef)
Definition c_content.cpp:1924
void push_flags_string(lua_State *L, FlagDesc *flagdesc, u32 flags, u32 flagmask)
Definition c_content.cpp:1869
void read_object_properties(lua_State *L, int index, ServerActiveObject *sao, ObjectProperties *prop, IItemDefManager *idef)
Definition c_content.cpp:300
void push_hit_params(lua_State *L, const HitParams &params)
Definition c_content.cpp:1808
void push_hud_element(lua_State *L, HudElement *elem)
Definition c_content.cpp:2313
PointabilityType read_pointability_type(lua_State *L, int index)
Definition c_content.cpp:1632
void push_nodebox(lua_State *L, const NodeBox &box)
Definition c_content.cpp:1107
struct EnumString es_TouchInteractionMode[]
Definition c_content.cpp:44
void pushnode(lua_State *L, const MapNode &n)
Definition c_content.cpp:1310
void push_dig_params(lua_State *L, const DigParams &params)
Definition c_content.cpp:1799
void read_server_sound_params(lua_State *L, int index, ServerPlayingSound &params)
Definition c_content.cpp:1173
void read_simplesoundspec(lua_State *L, int index, SoundSpec &spec)
Definition c_content.cpp:1214
void push_tool_capabilities(lua_State *L, const ToolCapabilities &prop)
Definition c_content.cpp:1413
void push_wear_bar_params(lua_State *L, const WearBarParams &prop)
Definition c_content.cpp:1457
void push_item_definition(lua_State *L, const ItemDefinition &i)
Definition c_content.cpp:184
ItemStack read_item(lua_State *L, int index, IItemDefManager *idef)
Definition c_content.cpp:1346
u32 read_flags_table(lua_State *L, int table, FlagDesc *flagdesc, u32 *flagmask)
Definition c_content.cpp:1844
WearBarParams read_wear_bar_params(lua_State *L, int table)
Definition c_content.cpp:1751
bool push_json_value(lua_State *L, const Json::Value &value, int nullindex)
Definition c_content.cpp:2114
void read_item_definition(lua_State *L, int index, const ItemDefinition &default_def, ItemDefinition &def)
Definition c_content.cpp:53
bool read_hud_change(lua_State *L, HudElementStat &stat, HudElement *elem, void **value)
Definition c_content.cpp:2375
void push_inventory_list(lua_State *L, const InventoryList &invlist)
Definition c_content.cpp:1473
void push_groups(lua_State *L, const ItemGroupList &groups)
Definition c_content.cpp:1904
void push_collision_move_result(lua_State *L, const collisionMoveResult &res)
Definition c_content.cpp:2470
void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm=false, bool hitpoint=false)
Definition c_content.cpp:2182
void read_json_value(lua_State *L, Json::Value &root, int index, u16 max_depth)
Definition c_content.cpp:2130
bool getflagsfield(lua_State *L, int table, const char *fieldname, FlagDesc *flagdesc, u32 *flags, u32 *flagmask)
Definition c_content.cpp:1817
void push_mod_spec(lua_State *L, const ModSpec &spec, bool include_unsatisfied)
Definition c_content.cpp:2536
MapNode readnode(lua_State *L, int index)
Definition c_content.cpp:1296
Definition gamedef.h:36
Definition itemdef.h:129
Definition inventory.h:194
Definition inventory.h:314
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:530
Definition mg_schematic.h:79
Definition serveractiveobject.h:41
HudElementStat
Definition hud.h:59
std::unordered_map< std::string, int > ItemGroupList
Definition itemgroup.h:10
static const struct table_key table[]
Definition keycode.cpp:33
Definition c_content.h:33
Definition mg_decoration.h:19
#define idx(x, y)
Definition noise.cpp:490
PointabilityType
Definition pointabilities.h:13
Definition nodedef.h:299
Definition tool.h:118
Definition enum_string.h:10
Definition string.h:68
Definition tool.h:140
Definition hud.h:84
Definition itemdef.h:66
Definition inventory.h:19
Definition mapnode.h:124
Definition mods.h:25
Definition nodedef.h:112
Definition noise.h:119
Definition object_properties.h:15
Definition pointabilities.h:30
An active object or node which is selected by a ray on the map.
Definition pointedthing.h:22
Definition server.h:110
Describes the sound information for playback.
Definition sound.h:20
Definition tileanimation.h:18
Definition nodedef.h:268
Definition tool.h:53
Definition tool.h:85
Definition collision.h:43
Definition treegen.h:25