(p.getX() + myPosition().getX()) / 2 +
MethodProvider.random(-3, 3)
1) Parentheses!
((p.getX() + myPosition().getX()) / 2) + MethodProvider.random(-3, 3)
Same applies to what you do for the Y coordinate.
2) Redundant action repetition
for (int i = 0; i < 2; i++)
{
mouse.click(new MiniMapTileDestination(bot, p), false); // YOU CLICK TWICE HERE
}
mouse.click(new MiniMapTileDestination(bot, p), false); // AND A THIRD TIME HERE
3) Awkward sleeping
The idea of having a fail counter isn't bad at all, this while loop makes no sense whatsoever though.
The fail int doesn't represent actual fails, just you not moving. After each fail you should probably retry the walkTile method instead of just sleeping again.
while ((myPosition().distance(p) > 2) && (fail < 10))
{
MethodProvider.sleep(500L);
if (!myPlayer().isMoving()) {
fail++;
}
}
^not very effective