Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
l_nodemeta.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#pragma once
6
8
10class NodeMetadata;
11
12/*
13 NodeMetaRef
14*/
15
16class NodeMetaRef : public MetaDataRef {
17private:
18 bool m_is_local = false;
19 // Set for server metadata
22 // Set for client metadata
24
25 static const luaL_Reg methodsServer[];
26 static const luaL_Reg methodsClient[];
27
41 virtual IMetadata* getmeta(bool auto_create);
42 virtual void clearMeta();
43
44 virtual void reportMetadataChange(const std::string *name = nullptr);
45
46 virtual void handleToTable(lua_State *L, IMetadata *_meta);
47 virtual bool handleFromTable(lua_State *L, int table, IMetadata *_meta);
48
49 // Exported functions
50
51 // get_inventory(self)
52 static int l_get_inventory(lua_State *L);
53
54 // mark_as_private(self, <string> or {<string>, <string>, ...})
55 static int l_mark_as_private(lua_State *L);
56
57public:
60
61 ~NodeMetaRef() = default;
62
63 // Creates an NodeMetaRef and leaves it on top of stack
64 // Not callable from Lua; all references are created on the C side.
65 static void create(lua_State *L, v3s16 p, ServerEnvironment *env);
66
67 // Client-sided version of the above
68 static void createClient(lua_State *L, IMetadata *meta);
69
70 static void Register(lua_State *L);
71 static void RegisterClient(lua_State *L);
72
73 static const char className[];
74};
Definition metadata.h:12
Definition l_metadata.h:18
Definition l_nodemeta.h:16
virtual void reportMetadataChange(const std::string *name=nullptr)
Definition l_nodemeta.cpp:40
static const char className[]
Definition l_nodemeta.h:73
~NodeMetaRef()=default
static void createClient(lua_State *L, IMetadata *meta)
Definition l_nodemeta.cpp:177
static const luaL_Reg methodsClient[]
Definition l_nodemeta.h:218
virtual void handleToTable(lua_State *L, IMetadata *_meta)
Definition l_nodemeta.cpp:106
ServerEnvironment * m_env
Definition l_nodemeta.h:21
bool m_is_local
Definition l_nodemeta.h:18
static int l_mark_as_private(lua_State *L)
Definition l_nodemeta.cpp:78
static int l_get_inventory(lua_State *L)
Definition l_nodemeta.cpp:64
virtual void clearMeta()
Definition l_nodemeta.cpp:34
static void RegisterClient(lua_State *L)
Definition l_nodemeta.cpp:212
static void create(lua_State *L, v3s16 p, ServerEnvironment *env)
Definition l_nodemeta.cpp:168
NodeMetaRef(v3s16 p, ServerEnvironment *env)
Definition l_nodemeta.cpp:154
IMetadata * m_local_meta
Definition l_nodemeta.h:23
virtual IMetadata * getmeta(bool auto_create)
Retrieve metadata for a node.
Definition l_nodemeta.cpp:18
virtual bool handleFromTable(lua_State *L, int table, IMetadata *_meta)
Definition l_nodemeta.cpp:125
static const luaL_Reg methodsServer[]
Definition l_nodemeta.h:193
v3s16 m_p
Definition l_nodemeta.h:20
Definition nodemetadata.h:25
Definition serverenvironment.h:113
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
static std::vector< table_key > table
Definition keycode.cpp:32
static std::string p(std::string path)
Definition test_filesys.cpp:64