Difference between revisions of "InvRef"
Jump to navigation
Jump to search
Hybrid Dog (talk | contribs) |
(Add get_lists & set_lists) |
||
Line 32: | Line 32: | ||
| <source enclose="none">set_list("listname", list)</source> | | <source enclose="none">set_list("listname", list)</source> | ||
| set full list (size will not change) | | set full list (size will not change) | ||
+ | |- | ||
+ | | <source enclose="none">get_lists()</source> | ||
+ | | return full lists. Ex: {main={ItemStack,ItemStack...}, craft={..},hand={..}...} | ||
+ | |- | ||
+ | | <source enclose="none">set_lists(lists)</source> | ||
+ | | set full lists. Ex: {main={ItemStack,ItemStack...}, craft={..},hand={..}...} | ||
|- | |- | ||
| <source enclose="none">[InvRef]add_item("listname", stack)</source> | | <source enclose="none">[InvRef]add_item("listname", stack)</source> |
Revision as of 16:19, 13 February 2017
Reference to an inventory.
Methods
Method | Description |
---|---|
is_empty("listname")
|
return true if list is empty |
get_size("listname")
|
get size of a list |
set_size("listname", size)
|
set size of a list, avoid e.g. , 7*3) , use , 21) --7*3 instead to avoid confusion with formspec#list
|
get_width("listname")
|
get width of a list |
set_width("listname", width)
|
set width of list; currently used for crafting |
get_stack("listname", i)
|
get a copy of stack index i in list |
set_stack("listname", i, stack)
|
copy stack to index i in list |
get_list("listname")
|
return full list |
set_list("listname", list)
|
set full list (size will not change) |
get_lists()
|
return full lists. Ex: {main={ItemStack,ItemStack...}, craft={..},hand={..}...} |
set_lists(lists)
|
set full lists. Ex: {main={ItemStack,ItemStack...}, craft={..},hand={..}...} |
[InvRef]add_item("listname", stack)
|
add item somewhere in list, returns leftover ItemStack |
room_for_item("listname", stack)
|
returns true if the stack of items can be fully added to the list |
contains_item("listname", stack)
|
returns true if the stack of items can be fully taken from the list |
remove_item("listname", stack)
|
take as many items as specified from the list, returns the items that were actually removed (as an ItemStack) |
Caveats
- A common mistake is to get an ItemStack from an inventory, change it, and expect the changes to carry through to the inventory. ItemStacks returned by and passed to inventory methods are not live objects, but are passed "by copy". In other words, if you get an ItemStack result and change it, the inventory will not be modified. You have to call one of the inventory manipulator methods (e.g.
inv:set_stack(listName, changedStack)
) for your changes to be reflected back in the inventory. This is also true ofobject:get_wielded_item()
andobject:set_wielded_item(...)
, which just get and set the inventory stack the player has selected on the hotbar.