The cause of this issue lies in how the `block_experience` component is checked. The component is only checked on the main hand item (the tool) of the breaking player. The OP is attempting to make a Helmet Enchantment containing this component, which means it will never be accessed by the enchantment logic.
The entrypoint for enchantment-modified experience is Block#tryDropExperience, which only retains the context of the tool that was used to break the block. To allow this component to work on items other than the tool, this function will need to accept the Entity who broke the block,
The components `ammo_use` and `projectile_piercing` share the same issue (only being applicable on the used bow instead of all gear slots).
Technically `repair_with_xp` and `item_damage` also share the same behavior, but I believe those two are working-as-intended, since those components should not impact other items.
The cause of this issue lies in how the `block_experience` component is checked. The component is only checked on the main hand item (the tool) of the breaking player. The OP is attempting to make a Helmet Enchantment containing this component, which means it will never be accessed by the enchantment logic.
The entrypoint for enchantment-modified experience is Block#tryDropExperience, which only retains the context of the tool that was used to break the block. To allow this component to work on items other than the tool, this function will need to accept the Entity who broke the block,
The components `ammo_use` and `projectile_piercing` share the same issue (only being applicable on the used bow instead of all gear slots).
Technically `repair_with_xp` and `item_damage` also share the same behavior, but I believe those two are working-as-intended, since those components should not impact other items.