Filling a barrel with a water bucket now happens outside the normal tank mechanics if that water bottle has NBT. This allows NBT data to be preserved from the bucket when depositing or extracting water with NBT. This fixes some issues with Thirst Was Taken's water purity system.
When filling a barrel from a bottle, ensured that empty NBT tags (ex: "{}") are replaced with null values and not transferred to the fluid unnecessarily. This ensures that water bottles placed in a barrel properly merge with the current contents of the barrel instead of not matching because {} != null.
Fixed an issue where taking filling a water bottle from a barrel would fill the bottle but not drain the barrel. This is due to mismatched NBT values when extracting. This change moves the drain operation before the NBT operations and only modifies the item NBT if fluid NBT is present.
Changed barrel item interaction logic to avoid overwriting item stacks.
This resolves issues when using mods that increase bottle/bucket stack sizes where the entire stack is consumed when it should only consume one.