Not sure what you mean by nest a conditionalSleep, but I belive i know what you are trying to do
Try to only do 1 action every loop to get a stable outcome
the onLoop thread keeps on running so you should just interact with a widget when it's visible.
Something like this: (Probably does not work as I don't know the exact texts and actions on the widget)
@Override
public int onLoop() {
if (!myPlayer().isAnimating()) {
RS2Object fire = getObjects().closest("Fire");
if (fire != null) {
RS2Widget cookWidget = getCookingWidget();
if (isWidgetVisible(cookWidget)) {
if (cookWidget.interact("Cook")) {
ConditionalSleep2.sleep(5000, () -> !getInventory().contains("Raw trout") || !fire.exists()));
}
} else {
if (fire.interact("Cook")) {
ConditionalSleep2.sleep(5000, () -> isWidgetVisible(getCookingWidget()));
}
}
}
}
}