Difference between revisions of "ItemStack"

From Minetest Developer Wiki
Jump to navigation Jump to search
(→‎Methods: use a wikitable)
Line 17: Line 17:
  
 
== Methods ==
 
== Methods ==
* <source enclose="none">[ItemStack]add_item(item)</source> put some item or stack onto this stack, returns leftover <code>ItemStack</code>
+
{| class="wikitable collapsible sortable"
* <source enclose="none">add_wear(amount)</source> increases wear by <code>amount</code> if the item is a tool
+
! Method
* <source enclose="none">clear()</source> removes all items from the stack, making it empty
+
! Description
* <source enclose="none">get_count()</source> returns number of items on the stack
+
|-
* <source enclose="none">get_definition()</source> returns the item definition table
+
| <source enclose="none">[ItemStack]add_item(item)</source>
* <source enclose="none">get_free_space()</source> returns <source enclose="none">get_stack_max() - get_count()</source>
+
| put some item or stack onto this stack, returns leftover <code>ItemStack</code>
* <source enclose="none">get_metadata()</source> returns metadata (a string attached to an item stack)
+
|-
* <source enclose="none">get_name()</source> returns item name (e.g. <source enclose="none">"default:stone"</source>)
+
| <source enclose="none">add_wear(amount)</source>
* <source enclose="none">get_stack_max()</source> returns the maximum size of the stack (depends on the item)
+
| increases wear by <code>amount</code> if the item is a tool
* <source enclose="none">get_tool_capabilities()</source> returns the digging properties of the item, or those of the hand if none are defined for this item type
+
|-
* <source enclose="none">get_wear()</source> returns tool wear (<code>0-65535</code>), <code>0</code> for non-tools
+
| <source enclose="none">clear()</source>
* <source enclose="none">[ItemStack]is_empty()</source> return <source enclose="none">true</source> if stack is empty
+
| removes all items from the stack, making it empty
* <source enclose="none">is_known()</source> returns <source enclose="none">true</source> if the item name refers to a defined item type
+
|-
* <source enclose="none">item_fits(item)</source> returns true if item or stack can be fully added to this one
+
| <source enclose="none">get_count()</source>
* <source enclose="none">peek_item(n)</source> copy (don't remove) up to <code>n</code> items from this stack; returns copied <code>ItemStack</code>; if <code>n</code> is omitted, <code>n=1</code> is used
+
| returns number of items on the stack
* <source enclose="none">replace(item)</source> replace the contents of this stack (<code>item</code> can also be an itemstring or table)
+
|-
* <source enclose="none">take_item(n)</source> take (and remove) up to <code>n</code> items from this stack; returns taken <code>ItemStack</code>; if <code>n</code> is omitted, <code>n=1</code> is used
+
| <source enclose="none">get_definition()</source>
* <source enclose="none">to_string()</source> returns the stack in <code>itemstring</code> form
+
| returns the item definition table
* <source enclose="none">[ItemStack]to_table()</source> returns the stack in Lua table form
+
|-
 +
| <source enclose="none">get_free_space()</source>
 +
| returns <source enclose="none">get_stack_max() - get_count()</source>
 +
|-
 +
| <source enclose="none">get_metadata()</source>
 +
| returns metadata (a string attached to an item stack)
 +
|-
 +
| <source enclose="none">get_name()</source>
 +
| returns item name (e.g. <source enclose="none">"default:stone"</source>)
 +
|-
 +
| <source enclose="none">get_stack_max()</source>
 +
| returns the maximum size of the stack (depends on the item)
 +
|-
 +
| <source enclose="none">get_tool_capabilities()</source>
 +
| returns the digging properties of the item, or those of the hand if none are defined for this item type
 +
|-
 +
| <source enclose="none">get_wear()</source>
 +
| returns tool wear (<code>0-65535</code>), <code>0</code> for non-tools
 +
|-
 +
| <source enclose="none">[ItemStack]is_empty()</source>
 +
| return <source enclose="none">true</source> if stack is empty
 +
|-
 +
| <source enclose="none">is_known()</source>
 +
| returns <source enclose="none">true</source> if the item name refers to a defined item type
 +
|-
 +
| <source enclose="none">item_fits(item)</source>
 +
| returns true if item or stack can be fully added to this one
 +
|-
 +
| <source enclose="none">peek_item(n)</source>
 +
| copy (don't remove) up to <code>n</code> items from this stack; returns copied <code>ItemStack</code>; if <code>n</code> is omitted, <code>n=1</code> is used
 +
|-
 +
| <source enclose="none">replace(item)</source>
 +
| replace the contents of this stack (<code>item</code> can also be an itemstring or table)
 +
|-
 +
| <source enclose="none">take_item(n)</source>
 +
| take (and remove) up to <code>n</code> items from this stack; returns taken <code>ItemStack</code>; if <code>n</code> is omitted, <code>n=1</code> is used
 +
|-
 +
| <source enclose="none">to_string()</source>
 +
| returns the stack in <code>itemstring</code> form
 +
|-
 +
| <source enclose="none">[ItemStack]to_table()</source>
 +
| returns the stack in Lua table form
 +
|}
  
 
== Example ==
 
== Example ==

Revision as of 20:26, 2 May 2014

A stack of items. Can be created via ItemStack(itemstack or itemstring or table or nil).

Please note that all functions returning ItemStack return its copy which modifications won't affect original ItemStack.

Definitions

Items and item stacks can exist in three formats:

  • Serialized; This is called stackstring or itemstring:
  • 'default:dirt 5'
  • 'default:pick_wood 21323'
  • 'default:apple'
  • Table format:
  • {name="default:dirt", count=5, wear=0, metadata=""} — 5 dirt nodes
  • {name="default:pick_wood", count=1, wear=21323, metadata=""} — wooden pick about 1/3 weared out
  • {name="default:apple", count=1, wear=0, metadata=""} — an apple.
  • ItemStack. C++ native format with many helper methods. Useful for converting between formats. See this article for details.

Methods

Method Description
[ItemStack]add_item(item) put some item or stack onto this stack, returns leftover ItemStack
add_wear(amount) increases wear by amount if the item is a tool
clear() removes all items from the stack, making it empty
get_count() returns number of items on the stack
get_definition() returns the item definition table
get_free_space() returns get_stack_max() - get_count()
get_metadata() returns metadata (a string attached to an item stack)
get_name() returns item name (e.g. "default:stone")
get_stack_max() returns the maximum size of the stack (depends on the item)
get_tool_capabilities() returns the digging properties of the item, or those of the hand if none are defined for this item type
get_wear() returns tool wear (0-65535), 0 for non-tools
[ItemStack]is_empty() return true if stack is empty
is_known() returns true if the item name refers to a defined item type
item_fits(item) returns true if item or stack can be fully added to this one
peek_item(n) copy (don't remove) up to n items from this stack; returns copied ItemStack; if n is omitted, n=1 is used
replace(item) replace the contents of this stack (item can also be an itemstring or table)
take_item(n) take (and remove) up to n items from this stack; returns taken ItemStack; if n is omitted, n=1 is used
to_string() returns the stack in itemstring form
[ItemStack]to_table() returns the stack in Lua table form

Example

minetest.register_craftitem("modname:tool", {
	description = "Example Tool",
	inventory_image = "modname_test.png",
	
	on_use = function(itemstack, user, pointed_thing)
		-- Takes one item from the stack
		itemstack:take_item()
		return itemstack
	end
	
})