ItemStack

From Minetest Developer Wiki
Revision as of 14:08, 26 December 2012 by PilzAdam (talk | contribs) (Add an example)
Jump to navigation Jump to search

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

  • [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()
		returm itemstack
	end
	
})