add inventory.get_uses, inventory.use, item.uses & update base:bazalt_breaker
This commit is contained in:
parent
231fc7e0d0
commit
bbfc0dbf17
@ -1,4 +1,5 @@
|
||||
{
|
||||
"icon-type": "sprite",
|
||||
"icon": "items:bazalt_breaker"
|
||||
"icon": "items:bazalt_breaker",
|
||||
"uses": 100
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
function on_block_break_by(x, y, z, p)
|
||||
function on_block_break_by(x, y, z, pid)
|
||||
block.set(x, y, z, 0, 0)
|
||||
inventory.use(player.get_inventory(pid))
|
||||
end
|
||||
|
||||
@ -497,3 +497,28 @@ end
|
||||
function file.prefix(path)
|
||||
return path:match("^([^:]+)")
|
||||
end
|
||||
|
||||
function inventory.get_uses(invid, slot)
|
||||
local uses = inventory.get_data(invid, slot, "uses")
|
||||
if uses == nil then
|
||||
return item.uses(inventory.get(invid, slot))
|
||||
end
|
||||
return uses
|
||||
end
|
||||
|
||||
|
||||
function inventory.use(invid, slot)
|
||||
local itemid, count = inventory.get(invid, slot)
|
||||
if itemid == nil then
|
||||
return
|
||||
end
|
||||
local item_uses = inventory.get_uses(invid, slot)
|
||||
if item_uses == nil then
|
||||
return
|
||||
end
|
||||
if item_uses == 1 then
|
||||
inventory.set(invid, slot, itemid, count - 1)
|
||||
elseif item_uses > 1 then
|
||||
inventory.set_data(invid, slot, "uses", item_uses - 1)
|
||||
end
|
||||
end
|
||||
|
||||
@ -38,7 +38,7 @@ struct ItemDef {
|
||||
uint8_t emission[4] {0, 0, 0, 0};
|
||||
|
||||
/// @brief Default item uses count
|
||||
int16_t uses = 100;
|
||||
int16_t uses = -1;
|
||||
|
||||
ItemIconType iconType = ItemIconType::SPRITE;
|
||||
std::string icon = "blocks:notfound";
|
||||
|
||||
@ -80,6 +80,13 @@ static int l_emission(lua::State* L) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int l_uses(lua::State* L) {
|
||||
if (auto def = get_item_def(L, 1)) {
|
||||
return lua::pushinteger(L, def->uses);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const luaL_Reg itemlib[] = {
|
||||
{"index", lua::wrap<l_index>},
|
||||
{"name", lua::wrap<l_name>},
|
||||
@ -90,4 +97,6 @@ const luaL_Reg itemlib[] = {
|
||||
{"placing_block", lua::wrap<l_placing_block>},
|
||||
{"model_name", lua::wrap<l_model_name>},
|
||||
{"emission", lua::wrap<l_emission>},
|
||||
{NULL, NULL}};
|
||||
{"uses", lua::wrap<l_uses>},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user