En utilisant ces commandes ( LES DEUX ! ) empêchera les joueurs de ramasser un objet qui a été déposé par un autre joueur, tout en permettant aux joueurs de ramasser les objets qu'ils ont déposés.
/execute as @e[type=minecraft:item] if data entity @s Thrower run data modify entity @s Owner.L set from entity @s Thrower.L
/execute as @e[type=minecraft:item] if data entity @s Owner run data modify entity @s Owner.M set from entity @s Thrower.M
En utilisant cette commande, le délai de ramassage des objets déposés est fixé à 0, de sorte que l'objet peut être ramassé immédiatement et que vous devez vraiment essayer de ne pas le ramasser :
/execute as @e[type=minecraft:item] if data entity @s Thrower run data modify entity @s PickupDelay set value 0
L'utilisation de ces trois commandes rendrait les objets vraiment difficiles à perdre accidentellement en les faisant tomber. Je recommande un bloc de commande répétitif et ensuite 2 blocs de commande en chaîne.
Si vous voulez être sûr que les objets ne se perdent pas vous pouvez alors créer un objectif de tableau de bord qui garde la trace des éléments suivants Owner
-et les UUID des joueurs. Et ensuite téléporter tout objet déposé par un joueur vers le joueur qui l'a déposé.
C'est ainsi que l'on configure l'objectif du tableau d'affichage :
/scoreboard objectives add UUIDs dummy
Vous voudrez ensuite définir le score pour tous les objets et tous les joueurs :
/execute as @e[type=minecraft:item] if data entity @s Thrower store result score @s UUIDs run data get entity @s Thrower.M 0.0000000001
/execute as @a store result score @s UUIDs run data get entity @s UUIDMost 0.0000000001
Lorsque vous avez terminé, vous pouvez téléporter tous les objets lancés vers le joueur qui les a lancés :
/execute as @e[type=item] at @a if score @s UUIDs = @p UUIDs run tp ~ ~ ~