Luanti 5.15.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 <vector>
20#include <array>
21
23#include "itemgroup.h"
24#include "util/pointabilities.h"
25// We do an explicit path include because by default c_content.h include src/client/hud.h
26// prior to the src/hud_element.h, which is not good on server only build
27#include "hud_element.h"
28
29class IGameDef;
30class IItemDefManager;
31class Inventory;
32class InventoryList;
33class NodeDefManager;
35
37struct ContentFeatures;
38struct DigParams;
39struct EnumString;
40struct FlagDesc;
41struct HitParams;
42struct ItemDefinition;
43struct ItemImageDef;
44struct ItemStack;
45struct MapNode;
46struct ModSpec;
47struct NodeBox;
48struct NoiseParams;
49struct ObjectProperties;
50struct PointedThing;
52struct SoundSpec;
53struct TileDef;
54struct ToolCapabilities;
55struct WearBarParams;
56
57namespace Json { class Value; }
58namespace treegen { struct TreeDef; }
59
60extern struct EnumString es_TileAnimationType[];
61extern struct EnumString es_ItemType[];
63
64extern const std::array<const char *, 35> 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
87ItemImageDef read_item_image_definition(lua_State *L, int index);
88void push_item_image_definition(lua_State *L, const ItemImageDef &item_image);
89
90PointabilityType read_pointability_type(lua_State *L, int index);
91Pointabilities read_pointabilities(lua_State *L, int index);
92void push_pointability_type(lua_State *L, PointabilityType pointable);
93void push_pointabilities(lua_State *L, const Pointabilities &pointabilities);
94
96void push_tool_capabilities(lua_State *L, const ToolCapabilities &prop);
98void push_wear_bar_params(lua_State *L, const WearBarParams &prop);
99
100void read_item_definition(lua_State *L, int index,
101 const ItemDefinition &default_def, ItemDefinition &def);
102void push_item_definition(lua_State *L, const ItemDefinition &i);
103void push_item_definition_full(lua_State *L, const ItemDefinition &i);
104
106void read_object_properties(lua_State *L, int index,
108 IItemDefManager *idef, bool fallback = false);
109
110void push_object_properties(lua_State *L, const ObjectProperties *prop);
111
112void push_inventory_list(lua_State *L, const InventoryList &invlist);
113void push_inventory_lists(lua_State *L, const Inventory &inv);
114void read_inventory_list(lua_State *L, int tableindex,
115 Inventory *inv, const char *name,
116 IGameDef *gdef, int forcesize=-1);
117
118MapNode readnode(lua_State *L, int index);
119void pushnode(lua_State *L, const MapNode &n);
120
121
122void read_groups(lua_State *L, int index, ItemGroupList &result);
123
124void push_groups(lua_State *L, const ItemGroupList &groups);
125
126// TODO: rename to "read_enum_field" and replace with type-safe template
127int getenumfield(lua_State *L, int table, const char *fieldname,
128 const EnumString *spec, int default_);
129
130bool getflagsfield(lua_State *L, int table, const char *fieldname,
131 const FlagDesc *flagdesc, u32 *flags, u32 *flagmask);
132
133bool read_flags(lua_State *L, int index, const FlagDesc *flagdesc,
134 u32 *flags, u32 *flagmask);
135
136void push_flags_string(lua_State *L, const FlagDesc *flagdesc,
137 u32 flags, u32 flagmask);
138
139u32 read_flags_table(lua_State *L, int table,
140 const FlagDesc *flagdesc, u32 *flagmask);
141
142void push_items(lua_State *L, const std::vector<ItemStack> &items);
143
144std::vector<ItemStack> read_items(lua_State *L, int index, IGameDef* gdef);
145
146void push_simplesoundspec(lua_State *L, const SoundSpec &spec);
147
148bool read_noiseparams(lua_State *L, int index, NoiseParams *np);
149void push_noiseparams(lua_State *L, NoiseParams *np);
150
151bool read_tree_def(lua_State *L, int idx,
152 const NodeDefManager *ndef, treegen::TreeDef &tree_def);
153
154void luaentity_get(lua_State *L,u16 id);
155
156bool push_json_value(lua_State *L, const Json::Value &value, int nullindex);
157void read_json_value(lua_State *L, Json::Value &root, int index, u16 max_depth);
158
164void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm =
165 false, bool hitpoint = false);
166
167void push_objectRef(lua_State *L, const u16 id);
168
169void read_hud_element(lua_State *L, HudElement *elem);
170
171void push_hud_element(lua_State *L, HudElement *elem);
172
173bool read_hud_change(lua_State *L, HudElementStat &stat, HudElement *elem, void **value);
174
175void push_collision_move_result(lua_State *L, const collisionMoveResult &res);
176
177void 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:527
void push_simplesoundspec(lua_State *L, const SoundSpec &spec)
Definition c_content.cpp:1319
u32 read_flags_table(lua_State *L, int table, const FlagDesc *flagdesc, u32 *flagmask)
Definition c_content.cpp:1954
bool read_noiseparams(lua_State *L, int index, NoiseParams *np)
Definition c_content.cpp:2070
void push_flags_string(lua_State *L, const FlagDesc *flagdesc, u32 flags, u32 flagmask)
Definition c_content.cpp:1979
NodeBox read_nodebox(lua_State *L, int index)
Definition c_content.cpp:1333
void push_item_definition_full(lua_State *L, const ItemDefinition &i)
Definition c_content.cpp:215
void push_content_features(lua_State *L, const ContentFeatures &c)
Definition c_content.cpp:1056
int getenumfield(lua_State *L, int table, const char *fieldname, const EnumString *spec, int default_)
Definition c_content.cpp:1408
struct TileAnimationParams read_animation_definition(lua_State *L, int index)
Definition c_content.cpp:1629
struct EnumString es_TileAnimationType[]
Definition c_content.cpp:32
void push_objectRef(lua_State *L, const u16 id)
Definition c_content.cpp:2328
void read_content_features(lua_State *L, ContentFeatures &f, int index)
Definition c_content.cpp:710
void push_items(lua_State *L, const std::vector< ItemStack > &items)
Definition c_content.cpp:2024
void push_item_image_definition(lua_State *L, const ItemImageDef &item_image)
Definition c_content.cpp:1618
void push_inventory_lists(lua_State *L, const Inventory &inv)
Definition c_content.cpp:1551
ToolCapabilities read_tool_capabilities(lua_State *L, int table)
Definition c_content.cpp:1664
void push_noiseparams(lua_State *L, NoiseParams *np)
Definition c_content.cpp:2098
void read_inventory_list(lua_State *L, int tableindex, Inventory *inv, const char *name, IGameDef *gdef, int forcesize=-1)
Definition c_content.cpp:1564
ItemImageDef read_item_image_definition(lua_State *L, int index)
Definition c_content.cpp:1595
TileDef read_tiledef(lua_State *L, int index, u8 drawtype, bool special)
Definition c_content.cpp:634
struct EnumString es_ItemType[]
Definition c_content.cpp:40
bool read_tree_def(lua_State *L, int idx, const NodeDefManager *ndef, treegen::TreeDef &tree_def)
Definition c_content.cpp:2117
void push_pointabilities(lua_State *L, const Pointabilities &pointabilities)
Definition c_content.cpp:1828
void push_palette(lua_State *L, const std::vector< video::SColor > *palette)
Definition c_content.cpp:1248
Pointabilities read_pointabilities(lua_State *L, int index)
Definition c_content.cpp:1757
const std::array< const char *, 35 > object_property_keys
Definition c_content.cpp:285
void push_pointability_type(lua_State *L, PointabilityType pointable)
Definition c_content.cpp:1808
void read_groups(lua_State *L, int index, ItemGroupList &result)
Definition c_content.cpp:1990
void read_hud_element(lua_State *L, HudElement *elem)
Definition c_content.cpp:2342
void luaentity_get(lua_State *L, u16 id)
Definition c_content.cpp:2057
std::vector< ItemStack > read_items(lua_State *L, int index, IGameDef *gdef)
Definition c_content.cpp:2034
bool read_flags(lua_State *L, int index, const FlagDesc *flagdesc, u32 *flags, u32 *flagmask)
Definition c_content.cpp:1939
bool getflagsfield(lua_State *L, int table, const char *fieldname, const FlagDesc *flagdesc, u32 *flags, u32 *flagmask)
Definition c_content.cpp:1927
void push_hit_params(lua_State *L, const HitParams &params)
Definition c_content.cpp:1918
void push_hud_element(lua_State *L, HudElement *elem)
Definition c_content.cpp:2423
PointabilityType read_pointability_type(lua_State *L, int index)
Definition c_content.cpp:1740
void push_nodebox(lua_State *L, const NodeBox &box)
Definition c_content.cpp:1196
struct EnumString es_TouchInteractionMode[]
Definition c_content.cpp:49
void pushnode(lua_State *L, const MapNode &n)
Definition c_content.cpp:1398
void push_dig_params(lua_State *L, const DigParams &params)
Definition c_content.cpp:1909
void read_server_sound_params(lua_State *L, int index, ServerPlayingSound &params)
Definition c_content.cpp:1261
void read_simplesoundspec(lua_State *L, int index, SoundSpec &spec)
Definition c_content.cpp:1302
void push_tool_capabilities(lua_State *L, const ToolCapabilities &prop)
Definition c_content.cpp:1485
void push_wear_bar_params(lua_State *L, const WearBarParams &prop)
Definition c_content.cpp:1529
void push_item_definition(lua_State *L, const ItemDefinition &i)
Definition c_content.cpp:206
ItemStack read_item(lua_State *L, int index, IItemDefManager *idef)
Definition c_content.cpp:1418
WearBarParams read_wear_bar_params(lua_State *L, int table)
Definition c_content.cpp:1863
bool push_json_value(lua_State *L, const Json::Value &value, int nullindex)
Definition c_content.cpp:2224
void read_item_definition(lua_State *L, int index, const ItemDefinition &default_def, ItemDefinition &def)
Definition c_content.cpp:58
bool read_hud_change(lua_State *L, HudElementStat &stat, HudElement *elem, void **value)
Definition c_content.cpp:2485
void push_inventory_list(lua_State *L, const InventoryList &invlist)
Definition c_content.cpp:1545
void read_object_properties(lua_State *L, int index, ServerActiveObject *sao, ObjectProperties *prop, IItemDefManager *idef, bool fallback=false)
Definition c_content.cpp:325
void push_groups(lua_State *L, const ItemGroupList &groups)
Definition c_content.cpp:2014
void push_collision_move_result(lua_State *L, const collisionMoveResult &res)
Definition c_content.cpp:2575
void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm=false, bool hitpoint=false)
Definition c_content.cpp:2292
void read_json_value(lua_State *L, Json::Value &root, int index, u16 max_depth)
Definition c_content.cpp:2240
void push_mod_spec(lua_State *L, const ModSpec &spec, bool include_unsatisfied)
Definition c_content.cpp:2641
MapNode readnode(lua_State *L, int index)
Definition c_content.cpp:1384
Definition gamedef.h:26
Definition itemdef.h:146
Definition inventory.h:157
Definition inventory.h:277
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:509
Definition serveractiveobject.h:41
HudElementStat
Definition hud_element.h:59
std::unordered_map< std::string, int > ItemGroupList
Definition itemgroup.h:10
static std::vector< table_key > table
Definition keycode.cpp:32
Definition convert_json.h:9
Definition mg_decoration.h:19
#define idx(x, y)
Definition noise.cpp:495
PointabilityType
Definition pointabilities.h:13
Definition nodedef.h:294
Definition tool.h:118
Definition enum_string.h:11
Definition string.h:68
Definition tool.h:140
Definition hud_element.h:84
Definition itemdef.h:83
Definition itemdef.h:61
Definition inventory.h:21
Definition mapnode.h:123
Definition mods.h:18
Definition nodedef.h:109
Definition noise.h:119
Definition object_properties.h:32
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:121
Describes the sound information for playback.
Definition sound_spec.h:18
Definition tileanimation.h:18
Definition nodedef.h:263
Definition tool.h:53
Definition tool.h:85
Definition collision.h:42
Definition treegen.h:25