Check if player has item, if so remove it

I'm messing around with command blocks, and I'm wanting to try and make an XP vending machine. My idea is if you click a button with a Diamond in your hand, 1 diamond gets removed and you get x amount of XP.

Is this possible using command blocks? If so, what commands would I need to look at? I already know /xp myAmount @p, it's just the checking/removing of items I can't seem to get.


Try this, By using /clear, you can scan people for items. If you want to remove certain items, use

/clear @p(or <playername>) <itemid>

For example, on a server that doesn't want griefing you could have a clock connected to a command block set to /clear @p minecraft:flint_and_steel, you can also specify how much of an item to remover by doing /clear @p minecraft:flint_and_steel 3, this would clear three Flint and Steel.


I'm a little late to this, but this is what I've had work for me: In Minecraft 1.8+ we have the /testfor command, you can use this to scan the players Inventory slots (all of them, or specific) for items:

example: diamond

/testfor @p {Inventory:[{id:"minecraft:diamond"}]}

to test for an exact amount of the required item include:

,Count:#b

within the confines of the "id" brackets

however, this will only search for players with a stack of the exact number you select, anything more or less will not fit the criteria; so for this application it's not useful.

For your vending machine to work properly I would recommend having this command in a clock nearby that tests for players in a specific range, so the finished command would look something like this:

/testfor @p[x,y,z,r=2] {Inventory:[{id:"minecraft:diamond"}]} 

(xyz are directly in front of the button)

have this connected to an output command block with a setblock command:

/setblock # # # unpowered_repeater 

dv for output direction needed from button

with a redstone dust on top connecting to a torch that powers this command:

/setblock # # # air

to clear the space if the criteria isn't met

then your repeater needs to be touching these commands:

/clear @p diamond 0 3
/xp amount @p

Image:Visual Proof of Concept

There are different variations you can have for the setblock changer, this is only a simple version for proof of concept.