package io.reisub.dreambot.util.tasks.kitten; import io.reisub.dreambot.util.CNPC; import io.reisub.dreambot.util.Constants; import io.reisub.dreambot.util.TaskNodeParent; import org.dreambot.api.methods.container.impl.Inventory; import org.dreambot.api.methods.filter.Filter; import org.dreambot.api.script.ScriptManager; import org.dreambot.api.script.listener.ChatListener; import org.dreambot.api.wrappers.interactive.NPC; import org.dreambot.api.wrappers.items.Item; import org.dreambot.api.wrappers.widgets.message.Message; import javax.annotation.Nullable; import java.util.Locale; public class KittenTask extends TaskNodeParent { private boolean hungry, attention; public final Filter fishItemFilter = item -> { for (String fishName : Constants.KITTEN_FISH_NAMES) { String rawFishName = "Raw " + fishName.toLowerCase(Locale.ROOT); if (item.getName().equals(fishName) || item.getName().equals(rawFishName)) { return true; } } return false; }; @Nullable public static KittenTask getInstance() { KittenTask task = null; if (Inventory.contains(Constants.KITTEN_INVENTORY)) { Inventory.drop(Constants.KITTEN_INVENTORY); task = new KittenTask(); } NPC kitten = CNPC.getNPCInteractingWithPlayer(Constants.KITTEN); NPC cat = CNPC.getNPCInteractingWithPlayer(Constants.CAT); if (kitten != null || cat != null) { task = new KittenTask(); } if (task != null) { task.setChildren( new CutFoodForKitten(task), new FeedKitten(task), new InteractKitten(task), new PickupCat() ); } return task; } private KittenTask() { ScriptManager.getScriptManager().addListener(new ChatListener() { @Override public void onMessage(Message message) { if (message.getMessage().contains(Constants.KITTEN_WANTS_ATTENTION_MSG)) { setAttention(true); } if (message.getMessage().contains(Constants.KITTEN_WAS_STROKED_MSG)) { setAttention(false); } if (message.getMessage().contains(Constants.KITTEN_IS_HUNGRY_MSG)) { setHungry(true); } if (message.getMessage().contains(Constants.KITTEN_HAS_EATEN_MSG)) { setHungry(false); } } }); } public void setHungry(boolean hungry) { this.hungry = hungry; } public boolean isHungry() { return hungry; } public void setAttention(boolean attention) { this.attention = attention; } public boolean wantsAttention() { return attention; } }