mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-13 16:45:20 +02:00
Allow overriding tool capabilities through itemstack metadata
This makes it possible to modify the tool capabilities of individual itemstacks by calling a method on itemstack metadata references.
This commit is contained in:
@@ -50,6 +50,20 @@ void ItemStackMetaRef::reportMetadataChange()
|
||||
}
|
||||
|
||||
// Exported functions
|
||||
int ItemStackMetaRef::l_set_tool_capabilities(lua_State *L)
|
||||
{
|
||||
ItemStackMetaRef *metaref = checkobject(L, 1);
|
||||
if (lua_isnoneornil(L, 2)) {
|
||||
metaref->clearToolCapabilities();
|
||||
} else if (lua_istable(L, 2)) {
|
||||
ToolCapabilities caps = read_tool_capabilities(L, 2);
|
||||
metaref->setToolCapabilities(caps);
|
||||
} else {
|
||||
luaL_typerror(L, 2, "table or nil");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// garbage collector
|
||||
int ItemStackMetaRef::gc_object(lua_State *L) {
|
||||
@@ -116,5 +130,6 @@ const luaL_Reg ItemStackMetaRef::methods[] = {
|
||||
luamethod(MetaDataRef, to_table),
|
||||
luamethod(MetaDataRef, from_table),
|
||||
luamethod(MetaDataRef, equals),
|
||||
luamethod(ItemStackMetaRef, set_tool_capabilities),
|
||||
{0,0}
|
||||
};
|
||||
|
@@ -40,7 +40,18 @@ private:
|
||||
|
||||
virtual void reportMetadataChange();
|
||||
|
||||
void setToolCapabilities(const ToolCapabilities &caps)
|
||||
{
|
||||
istack->metadata.setToolCapabilities(caps);
|
||||
}
|
||||
|
||||
void clearToolCapabilities()
|
||||
{
|
||||
istack->metadata.clearToolCapabilities();
|
||||
}
|
||||
|
||||
// Exported functions
|
||||
static int l_set_tool_capabilities(lua_State *L);
|
||||
|
||||
// garbage collector
|
||||
static int gc_object(lua_State *L);
|
||||
|
Reference in New Issue
Block a user