Une fois qu'il est cassé il peut se placer n'importe où, une solution: Au lieu de le casser à la main mets une plaque de pression qui détecte si le beacon est encore à cette place, si il y est, le beacon seras give au joueur le plus proche, ex:
/testforblock X Y Z minecraft:beacon
Suivie d'un comparateur et d'un repeater qui pointe dans un commande bloc :
/give @p[r=3] minecraft:beacon 1 0 {CanPlaceOn:["bloc"]}
Ou l'inverse, tu fait passer le testfor dans un inverseur ce qui fait que quand un joueur casse le beacon, le beacon seras détruit au sol et un beacon CanPlaceOn seras give au joueur