I was really bored one night and decided to do something productive and came up with this.
public boolean interactWithTableItem(GroundItem tableItem, String action, int tableHeight) throws InterruptedException {
Point p = org.osbot.script.rs2.utility.Utilities.getScreenCoordinates(bot, tableItem.getGridX(), tableItem.getGridY(), tableHeight);
int height = (int) tableItem.getMouseDestination().getBoundingBox().getHeight();
int width = (int) tableItem.getMouseDestination().getBoundingBox().getWidth();
return selectOption(null, new RectangleDestination(p.x - width / 2, p.y - height / 2, width, height), action);
}
It seems to work well on small items like pots,garlics and books. Didn't test on anything bigger.
You can get the table height by using:
RS2Object table = closestObjectForName("Table");
int height = table.getModel().getHeight();
Not sure if that is the right value but it should be something around 100-125 for most tables/crates etc.