Is there any way in Minecraft to detect who deposited a diamond into a chest using command blocks?

[BACK]
Is there any way in Minecraft to detect who deposited a diamond into a chest using command blocks?
Posted On: April 26, 2024

So far, I've been able to detect when a diamond is placed into a chest's inventory but how can I detect who placed that diamond?


I'd prefer not to use the nearest player because someone else could potentially be falsely identified. (I have a command chain that trades players emeralds in exchange for experience levels and it also sometimes robs random nearby players.).


Some context: I'm making a race to be the first to deposit a diamond. I could constrain the player accessing the chest and just check who is standing on a block, but if I did that, I could also just test the player's inventory directly. But that seems boring. Adding the chest adds to the drama, I feel. Like, if someone fumbles last minute and deposits dirt on accident, someone else could easily win, which is fun.


My command chain is currently:.


if block x y z chest{Items:[{id:"minecraft:diamond"}]}.


say Diamond Detected.


Edit: The diamonds are mined and as such, I will not necessarily be able to tag them for each player. Another user suggested I could scan the inventories of the users at every tick and tag the diamonds in their inventory with their name. I don't know how to do this, though I believe this is the direction where I will find my answer.


Question from user Robert Talada at gaming.stackexchange.com.


Answer:

If you don't know who has each diamond.


Minecraft 1.20.5 changed the syntax of some of the commands a bit but the concept behind this answer should still be valid.


Step one.


Give each player a unique scoreboard ID. See this related question for how to do that.


Step two.


Run the following command in a repeating, always active command block:.


execute as @e[type=item,nbt={Item:{id:"minecraft:diamond"}}] run data merge entity @s {Item:{tag:{Unclaimed:1b}}.


This gives each diamond item on the ground a custom Unclaimed tag, allowing you implement Step 3 without 30+ command blocks per player.


Step three.


Once for each player who could be playing the map, run in a repeating command block:.


clear @a[scores={Id=1}] diamond{Unclaimed:1b} 1.


and then, in a conditional chain command block that the repeating command block is pointing to.


give @a[scores={Id=1}] diamond{PlayerOwns:1b} 1.


Repeat this for each player, using scores={Id=2} and PlayerOwns:2b for the second player and so on.


Step four.


Now that each diamond has a tag describing whose it is, you can use the technique described in ExpertCoder14's answer to determine who put a diamond in the chest.


This has a known bug that if Alice puts a diamond in a container, and then Bob takes the diamond out of the container (and never drops and picks it up again), the diamond is still interpreted as belonging to Alice -- but I actually like that if I understand what you're doing correctly; if you stole someone else's diamond from a chest instead of mining your own, that means you're trying to cheat… karma!.


If you want a more seamless experience, you may want to interest yourself in player inventory modification. With the method above, the diamond is visibly replaced by a different one, you can use this to make a seamless replacement.


Answer from user pppery at gaming.stackexchange.com.


[BACK]
Is there any way in Minecraft to detect who deposited a diamond into a chest using command blocks?
Posted On: April 26, 2024

So far, I've been able to detect when a diamond is placed into a chest's inventory but how can I detect who placed that diamond?


I'd prefer not to use the nearest player because someone else could potentially be falsely identified. (I have a command chain that trades players emeralds in exchange for experience levels and it also sometimes robs random nearby players.).


Some context: I'm making a race to be the first to deposit a diamond. I could constrain the player accessing the chest and just check who is standing on a block, but if I did that, I could also just test the player's inventory directly. But that seems boring. Adding the chest adds to the drama, I feel. Like, if someone fumbles last minute and deposits dirt on accident, someone else could easily win, which is fun.


My command chain is currently:.


if block x y z chest{Items:[{id:"minecraft:diamond"}]}.


say Diamond Detected.


Edit: The diamonds are mined and as such, I will not necessarily be able to tag them for each player. Another user suggested I could scan the inventories of the users at every tick and tag the diamonds in their inventory with their name. I don't know how to do this, though I believe this is the direction where I will find my answer.


Question from user Robert Talada at gaming.stackexchange.com.


Answer:

If you don't know who has each diamond.


Minecraft 1.20.5 changed the syntax of some of the commands a bit but the concept behind this answer should still be valid.


Step one.


Give each player a unique scoreboard ID. See this related question for how to do that.


Step two.


Run the following command in a repeating, always active command block:.


execute as @e[type=item,nbt={Item:{id:"minecraft:diamond"}}] run data merge entity @s {Item:{tag:{Unclaimed:1b}}.


This gives each diamond item on the ground a custom Unclaimed tag, allowing you implement Step 3 without 30+ command blocks per player.


Step three.


Once for each player who could be playing the map, run in a repeating command block:.


clear @a[scores={Id=1}] diamond{Unclaimed:1b} 1.


and then, in a conditional chain command block that the repeating command block is pointing to.


give @a[scores={Id=1}] diamond{PlayerOwns:1b} 1.


Repeat this for each player, using scores={Id=2} and PlayerOwns:2b for the second player and so on.


Step four.


Now that each diamond has a tag describing whose it is, you can use the technique described in ExpertCoder14's answer to determine who put a diamond in the chest.


This has a known bug that if Alice puts a diamond in a container, and then Bob takes the diamond out of the container (and never drops and picks it up again), the diamond is still interpreted as belonging to Alice -- but I actually like that if I understand what you're doing correctly; if you stole someone else's diamond from a chest instead of mining your own, that means you're trying to cheat… karma!.


If you want a more seamless experience, you may want to interest yourself in player inventory modification. With the method above, the diamond is visibly replaced by a different one, you can use this to make a seamless replacement.


Answer from user pppery at gaming.stackexchange.com.


[BACK]

How can I see the version of steam deck? How can I see the version of steam deck?

Posted On: May 18, 2023
I was thinking about buying a Steam Deck and to save a couple of bucks, figured I'd try to buy one used. Before I hand over the cash, I'd like to verify the one I'm buying is as advertised...[More]


What happens if the guards begin a search while you have the VIP Pass on Rock the Cradle? What happens if the guards begin a search while you have the VIP Pass on Rock the Cradle?

Posted On: October 24, 2023
If you have the VIP Pass on Rock the Cradle, all private areas of the heist essentially become public areas. Cameras and guards do not detect you in casing mode in the VIP area of the nightclub, or in...[More]


Whats the purpose of Wormskin Folios? Whats the purpose of Wormskin Folios?

Posted On: April 24, 2024
I collected one while doing a Nexus mission on an infected planet. The wiki says that there are more of these collectibles out there, so I suppose I can find the others in the same method.But then? Ar...[More]


Progression through WoW that avoids spiders Progression through WoW that avoids spiders

Posted On: April 18, 2024
Background: My girlfriend is terrified of spiders. So much so that she cringes and closes her eyes whenever there are spiders on my screen, even if I'm not fighting them. I'm now introducing her to ...[More]


Unsupported resolution in Mirrors Edge Unsupported resolution in Mirrors Edge

Posted On: January 24, 2023
I just installed the game, Mirror's Edge but unfortunately my LCD monitor isn't supporting its default resolution. My LCD monitor's resolution is 1024x768 60Hz. Question from user Te...[More]


Why is Shadowheart so…. loved? Why is Shadowheart so…. loved?

Posted On: November 30, 2023
Hear me out, I’m not trying to shart (hehe) on her character or anything. I just kind of find her annoying? I think a lot of it might be due to the fact that she was overhyped to me before I pla...[More]


Is it just me or is there something wrong with Professor Garlick? Is it just me or is there something wrong with Professor Garlick?

Posted On: September 5, 2023
Is it just me or is there something wrong with Professor Garlick? Was it really just accidents her former herbalism teacher suffered, or did Garlick have something to do with it? I mean, she fel...[More]


Is Engi Med-Bot Dispersal affected by MedBay upgrades? Is Engi Med-Bot Dispersal affected by MedBay upgrades?

Posted On: August 4, 2023
The title pretty much says it all. Do med-bay upgrades make healing in rooms besides the med-bay faster when you have med-bot dispersal? Question from user Fambida at stackexchange. Answer: T...[More]


Is this cheating in BG3 Honor Mode or fair game? Is this cheating in BG3 Honor Mode or fair game?

Posted On: August 27, 2025
I’m doing a Baldur’s Gate 3 Honor Mode run with three friends. We’ve made it all the way into Act 3 without glitches, cheese, or exploits — just raw pain and strategy.Here’s the problem: one...[More]


Are Cheats in GTA5 official feature or is it some hack spread by developers - users? Are Cheats in GTA5 official feature or is it some hack spread by developers - users?

Posted On: November 30, 2023
When you press ` (backtick) key in GTA5, you can enter cheat codes like BUZZOFF. Now I was wondering is this official feature? I find it a bit strange because on GTA5 official site and in their Man...[More]