]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/script/lua_api/l_nodemeta.h
Script API: Check that SAOs are still usable before attempting to use them
[dragonfireclient.git] / src / script / lua_api / l_nodemeta.h
index d03f086c9db97874c2dcfbfa829c0f61af252ac8..fdc1766ed2073063fbf48ef8bf3f280186b30543 100644 (file)
@@ -16,12 +16,13 @@ You should have received a copy of the GNU Lesser General Public License along
 with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
-#ifndef L_NODEMETA_H_
-#define L_NODEMETA_H_
+
+#pragma once
 
 #include "lua_api/l_base.h"
 #include "lua_api/l_metadata.h"
 #include "irrlichttypes_bloated.h"
+#include "nodemetadata.h"
 
 class ServerEnvironment;
 class NodeMetadata;
@@ -33,10 +34,13 @@ class NodeMetadata;
 class NodeMetaRef : public MetaDataRef {
 private:
        v3s16 m_p;
-       ServerEnvironment *m_env;
+       ServerEnvironment *m_env = nullptr;
+       Metadata *m_meta = nullptr;
+       bool m_is_local = false;
 
        static const char className[];
-       static const luaL_reg methods[];
+       static const luaL_Reg methodsServer[];
+       static const luaL_Reg methodsClient[];
 
        static NodeMetaRef *checkobject(lua_State *L, int narg);
 
@@ -56,7 +60,7 @@ class NodeMetaRef : public MetaDataRef {
        virtual Metadata* getmeta(bool auto_create);
        virtual void clearMeta();
 
-       virtual void reportMetadataChange();
+       virtual void reportMetadataChange(const std::string *name = nullptr);
 
        virtual void handleToTable(lua_State *L, Metadata *_meta);
        virtual bool handleFromTable(lua_State *L, int table, Metadata *_meta);
@@ -69,16 +73,23 @@ class NodeMetaRef : public MetaDataRef {
        // get_inventory(self)
        static int l_get_inventory(lua_State *L);
 
+       // mark_as_private(self, <string> or {<string>, <string>, ...})
+       static int l_mark_as_private(lua_State *L);
+
 public:
        NodeMetaRef(v3s16 p, ServerEnvironment *env);
+       NodeMetaRef(Metadata *meta);
 
-       ~NodeMetaRef();
+       ~NodeMetaRef() = default;
 
        // Creates an NodeMetaRef and leaves it on top of stack
        // Not callable from Lua; all references are created on the C side.
        static void create(lua_State *L, v3s16 p, ServerEnvironment *env);
 
+       // Client-sided version of the above
+       static void createClient(lua_State *L, Metadata *meta);
+
+       static void RegisterCommon(lua_State *L);
        static void Register(lua_State *L);
+       static void RegisterClient(lua_State *L);
 };
-
-#endif /* L_NODEMETA_H_ */