Player/Inventory/Container/InventoryItemPickup.cs
using Opium;

public sealed class InventoryItemPickup : BasePickup
{
	[Property] public SoundEvent sound;
	[Property] public InventoryItemResource Resource { get; set; }

	public override void OnPickup( GameObject player )
	{
		if ( sound != null )
		{
			Sound.Play( sound, player.Transform.Position );
		}

		player.Components.Get<PlayerInventory>( FindMode.EnabledInSelfAndDescendants )?
			.GetInventory( Resource.ItemType )
			.AddItem( Resource );

		base.OnPickup( player );

		player.Components.Get<PlayerObjectivesUI>( FindMode.EnabledInSelfAndDescendants )?.ShowObjectiveUI();
	}
}