Arqade Asked by Fluffkin 1 on October 26, 2020
I want to detect if a player is standing on a chest using an execute command then if so detect what is in that chest and give an output. E.G Player is standing on a chest there is 64 stone in the chest if so give a redstone or score board output?
I have tried
execute @p ~ ~ ~ setblock ~ ~-2 ~ command_block 0 replace {command:"testforblock ~ ~1 ~ chest -1 {Items:[{id:minecraft:stone,Slot:0b,Count:64b}]}"
and
execute @p ~ ~ ~ testforblock ~ ~-1 ~ chest -1 {Items:[{id:minecraft:stone,Slot:0b,Count:64b}]}
In order to target that player afterwards, you must use CommandStats to track the success of a command.
Objective to hold the return value.
/scoreboard objectives add AboveChest dummy
Applying the "AffectedBlocks" trigger to all players, who will then set their own "AboveChest" score depending on the success of block-related commands. This may need to run on a clock if new players can join at any time.
/stats entity @a set AffectedBlocks @a[c=1] AboveChest
In order for CommandStats to modify a target's score, that target must be tracked prior. This may also need to run on a clock.
/scoreboard players add @a AboveChest 0
The following must be run on a clock in numerical order.
Cause players to run a /testforblock
to find the chest. If the command is successful, that player will have their "AboveChest" score set to 1. If unsuccessful, that player will have their score set to 0.
/execute @a ~ ~ ~ testforblock ~ ~-1 ~ minecraft:chest -1 {Items:[{id:"minecraft:stone",Count:64b,Slot:0b}]}
Target players based on their "AboveChest" score.
/say @a[score_AboveChest_min=1] is above a chest containing a stack of 64 stone.
Answered by Skylinerw on October 26, 2020
1.13 has completely changed commands. Are you playing 1.13 and have the same question? This is the answer for you.
Objective:
/scoreboard objectives add AboveChest dummy
Set the player's initial score.
/scoreboard players set @a AboveChest 0
/stats
is deprecated, use /execute store
instead.
Find chest and store success/failure in scoreboard variable.
/execute as @a at @s if block ~ ~ ~ chest{Items:[{id:"minecraft:stone",Count:64b,Slot:0b}]}
Target players who have a score of 1. Use whatever command you want and this target selector to get them
@e[scores={AboveChest=1}]
Answered by ExpertCoder14 on October 26, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP