перемещаешь предмет из игрока в любое другое хранилище, после этого там модифицируешь предмет, после этого возвращаешь предмет обратно, перемещать предмет можно с помощью команда /item replace
команду скинь, скорей всего проблема у тебя в том что там от каждого игрока ички добавляются, если ты хотел сделать проверку на условие вместо as @a надо было использовать If entity @a
ну в любом случае тебе придётся перебирать эти теги в чтобы определить какой конкретно это блок, это конечно может быть эффективней чем простая последовательная проверка. но всё же не настолько эффективно, хотя тут надо посчитать
на самом деле можно детектить, разные клавиши, некоторые хуже, некоторые лучше например: Q, F - через выкидывание или перекладывание предмета W, A, ,S, D, Ctrl, Shift, Space - через предикат, ну или некоторое можно через скорборд
немного не по теме но могу помочь с датапаком, это немного получше чем кб, опыта в этой области у меня достаточно чтобы реализовать не простые механики
можно немного лучше
execute store result score #counter MyObjective if entity @a[gamemode=adventure]
execute if score #counter MyObjective matches 1 run say 1
/execute as @e[type=(сущность)] at @s run tp @s ~ ~ ~ ^ ^.1 facing entity @p
это что за фигня? ты по-моему перепутал координаты и поворот
/execute as @e[type=(сущность)] at @s run tp @s ^ ^ ^.1 facing entity @p
scoreboard objectives add test dummy
execute store result score dayTime test run time query daytime
execute if score dayTime test matches 6000..20000 run say 1