methods:
- is_empty(): return true if stack is empty
- get_name(): returns item name (e.g. "default:stone")
-- set_name(itemname)
+- set_name(itemname): returns true/false (success)
+ ^ clears item on failure
- get_count(): returns number of items on the stack
-- set_count(count)
+- set_count(count): returns true/false (success)
+ ^ clears item on failure
- get_wear(): returns tool wear (0-65535), 0 for non-tools
-- set_wear(wear)
+- set_wear(wear): returns true/false (success)
+ ^ clears item on failure
- get_metadata(): returns metadata (a string attached to an item stack)
-- set_metadata(metadata)
+- set_metadata(metadata): returns true
- clear(): removes all items from the stack, making it empty
- replace(item): replace the contents of this stack (item can also
be an itemstring or table)
NO_MAP_LOCK_REQUIRED;
LuaItemStack *o = checkobject(L, 1);
ItemStack &item = o->m_stack;
- item.name = luaL_checkstring(L, 2);
- if (item.name == "" || item.empty())
+ bool status = true;
+ item.name = luaL_checkstring(L, 2);
+ if (item.name == "" || item.empty()) {
item.clear();
+ status = false;
+ }
+ lua_pushboolean(L, status);
return 1;
}
NO_MAP_LOCK_REQUIRED;
LuaItemStack *o = checkobject(L, 1);
ItemStack &item = o->m_stack;
- item.count = luaL_checkinteger(L, 2);
- if (item.name == "" || item.empty())
+ bool status;
+ lua_Integer count = luaL_checkinteger(L, 2);
+ if (count <= 65535) {
+ item.count = count;
+ status = true;
+ } else {
item.clear();
+ status = false;
+ }
+ lua_pushboolean(L, status);
return 1;
}
NO_MAP_LOCK_REQUIRED;
LuaItemStack *o = checkobject(L, 1);
ItemStack &item = o->m_stack;
- item.wear = luaL_checkinteger(L, 2);
- if (item.wear > 65535)
+ bool status;
+ lua_Integer wear = luaL_checkinteger(L, 2);
+ if (wear <= 65535) {
+ item.wear = wear;
+ status = true;
+ } else {
item.clear();
+ status = false;
+ }
+ lua_pushboolean(L, status);
return 1;
}
size_t len = 0;
const char *ptr = luaL_checklstring(L, 2, &len);
- if (ptr)
- item.metadata.assign(ptr, len);
- else
- item.metadata = "";
+ item.metadata.assign(ptr, len);
+ lua_pushboolean(L, true);
return 1;
}
INodeDefManager *ndef = getServer(L)->getNodeDefManager();
content_t c = ndef->getId(name);
-
+
lua_pushinteger(L, c);
return 1; /* number of results */
}
INodeDefManager *ndef = getServer(L)->getNodeDefManager();
const char *name = ndef->get(c).name.c_str();
-
+
lua_pushstring(L, name);
return 1; /* number of results */
}