# API documentation for dispensers The dispensers API allows you to add custom code which is called when a particular item is dispensed. Just add the `_on_dispense` function to the item definition. By default, items are just thrown out as item entities. ## Additional fields for item definitions ### `_on_dispense(stack, pos, droppos, dropnode, dropdir)` This is a function which is called when an item is dispensed by the dispenser. These are the parameters: * stack: Itemstack which is dispense. This is always exactly 1 item * pos: Position of dispenser * droppos: Position to which to dispense item * dropnode: Node of droppos * dropdir: Drop direction By default (return value: `nil`), the itemstack is consumed by the dispenser afterwards. Optionally, you can explicitly set the return value to a custom leftover itemstack. ### `_dispense_into_walkable` By default, items will only be dispensed into non-walkable nodes. But if this value is set If `true`, the item can be dispensed into walkable nodes.