<CustomBehavior File="ForcedDismount" />
<CustomBehavior File="WaitTimer" WaitTime="5000" GoalText="Waiting for agro to clear {TimeRemaining}" />
<CustomBehavior File="Misc\RunLua" Lua="UseItemByName(110560)" WaitTime="1000" />
<CustomBehavior File="WaitTimer" WaitTime="12000" GoalText="Waiting for Garrison Hearth {TimeRemaining}" />
<!-- Check if Garrison Cache is UP! by ChronoAS -->
<If Condition="(ObjectManager.GetObjectsOfType<WoWGameObject>().Any(u => (new System.Collections.Generic.HashSet<uint>(){236916,237723,237722}.Contains(u.Entry) && u.Distance <= 100)))" >
<!-- Moving to Cache -->
<CustomBehavior File="InteractWith" MobId="236916" NumOfTimes="4" WaitForNpcs="False" CollectionDistance="40" MovementBy="ClickToMoveOnly" />
<CustomBehavior File="InteractWith" MobId="237723" NumOfTimes="4" WaitForNpcs="False" CollectionDistance="40" MovementBy="ClickToMoveOnly" />
<CustomBehavior File="InteractWith" MobId="237722" NumOfTimes="4" WaitForNpcs="False" CollectionDistance="40" MovementBy="ClickToMoveOnly" />
</If>
Technically you don't need the condition check because if HB can't find the cache it won't move anyway when waitfornpcs=false (and I'm not 100% why it would need to click four times, or why its collectiondistance is so small?)
I made a super simple garrison profile for myself and only ever checked for the profession buildings being present (and even then that's just for a minor speedup over WaitForNpcs="false".
And tazmo I do believe the hearthstone custom behavior now supports garrison hearthing (I remember seeing it in the release notes a few patches ago) though I can't remember exactly how to use it.
Questinggrind bot? questing?