Untitled
unknown
plain_text
2 years ago
7.1 kB
41
Indexable
package com.piggyplugins.WineMaker; import com.example.EthanApiPlugin.Collections.Bank; import com.example.EthanApiPlugin.Collections.Inventory; import com.example.EthanApiPlugin.Collections.TileObjects; import com.example.EthanApiPlugin.Collections.query.TileObjectQuery; import com.example.EthanApiPlugin.EthanApiPlugin; import com.example.InteractionApi.BankInteraction; import com.example.InteractionApi.TileObjectInteraction; import com.example.PacketUtils.PacketUtilsPlugin; import com.example.Packets.MousePackets; import com.example.Packets.MovementPackets; import com.example.Packets.WidgetPackets; import com.google.inject.Inject; import com.google.inject.Provides; import com.piggyplugins.WineMaker.WineMakerConfig; import com.piggyplugins.PiggyUtils.PiggyUtilsPlugin; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.ObjectComposition; import net.runelite.api.events.GameTick; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDependency; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.util.HotkeyListener; import java.util.Arrays; @PluginDescriptor( name = "<html><font color=\"#FF9DF9\">[PP]</font> Wine Maker</html>", description = "Automatically banks & combines grapes and jugs of water for you", enabledByDefault = false, tags = {"hawtin", "wine", "maker"} ) @PluginDependency(EthanApiPlugin.class) @PluginDependency(PacketUtilsPlugin.class) @PluginDependency(PiggyUtilsPlugin.class) @Slf4j public class WineMakerPlugin extends Plugin { @Inject private Client client; @Inject private MousePackets mousePackets; @Inject private WidgetPackets widgetPackets; @Inject private EthanApiPlugin api; @Inject private WineMakerConfig config; @Inject private KeyManager keyManager; private boolean started; private int afkTicks; private boolean deposit; private boolean isMaking; @Provides private WineMakerConfig getConfig(ConfigManager configManager) { return configManager.getConfig(WineMakerConfig.class); } @Override protected void startUp() throws Exception { keyManager.registerKeyListener(toggle); } @Override protected void shutDown() throws Exception { keyManager.unregisterKeyListener(toggle); } @Subscribe private void onGameTick(GameTick event) { if (client.getGameState() != GameState.LOGGED_IN || !started || EthanApiPlugin.isMoving() || client.getLocalPlayer().getAnimation() != -1) { afkTicks = 0; return; } if (isMaking) { if (isDoneMaking()) { isMaking = false; } return; } if (deposit) { if (Bank.isOpen()) { Widget widget = client.getWidget(WidgetInfo.BANK_DEPOSIT_INVENTORY); MousePackets.queueClickPacket(); WidgetPackets.queueWidgetAction(widget, "Deposit", "Deposit inventory"); deposit = false; } else { findBank(); } return; } if (!hasGrapes()) { if (!Bank.isOpen()) { findBank(); return; } withdrawGrapes(); return; } if (!hasJugsOfWater()) { if (!Bank.isOpen()) { findBank(); return; } withdrawJugsOfWater(); return; } if (Bank.isOpen()) { MousePackets.queueClickPacket(); MovementPackets.queueMovement(client.getLocalPlayer().getWorldLocation()); return; } Widget potionWidget = client.getWidget(17694734); if (potionWidget != null && !potionWidget.isHidden()) { log.info("widget visible"); MousePackets.queueClickPacket(); WidgetPackets.queueResumePause(17694734, 14); isMaking = true; return; } combineGrapesAndWater(); } private boolean isDoneMaking() { return Inventory.getEmptySlots() == 14; } private void findBank() { TileObjects.search() .filter(tileObject -> { ObjectComposition objectComposition = TileObjectQuery.getObjectComposition(tileObject); return objectComposition.getName().toLowerCase().contains("bank") || Arrays.stream(objectComposition.getActions()).anyMatch(action -> action != null && action.toLowerCase().contains("bank")); }) .nearestToPlayer() .ifPresent(tileObject -> { TileObjectInteraction.interact(tileObject, "Use", "Bank"); }); if (!deposit) { deposit = true; } } private void withdrawGrapes() { Bank.search() .withName("Grapes") .first() .ifPresent(item -> BankInteraction.withdrawX(item, 14)); } private void withdrawJugsOfWater() { Bank.search() .withName("Jug of water") .first() .ifPresent(item -> BankInteraction.withdrawX(item, 14)); } private void combineGrapesAndWater() { Widget grapes = Inventory.search().filter(item -> item.getName().contains("Grapes")).first().get(); Widget jugsOfWater = Inventory.search().filter(item -> item.getName().contains("Jug of water")).first().get(); // Check if the inventory is open before combining if (Inventory.isOpen()) { MousePackets.queueClickPacket(); MousePackets.queueClickPacket(); WidgetPackets.queueWidgetOnWidget(grapes, jugsOfWater); } else { // If inventory is not open, open it before combining Inventory.open(); MousePackets.queueClickPacket(); MousePackets.queueClickPacket(); WidgetPackets.queueWidgetOnWidget(grapes, jugsOfWater); } } private boolean hasGrapes() { return Inventory.search().filter(item -> item.getName().contains("Grapes")).first().isPresent(); } private boolean hasJugsOfWater() { return Inventory.search().filter(item -> item.getName().contains("Jug of water")).first().isPresent(); } private final HotkeyListener toggle = new HotkeyListener(() -> config.toggle()) { @Override public void hotkeyPressed() { toggle(); } }; public void toggle() { if (client.getGameState() != GameState.LOGGED_IN) { return; } started = !started; } }
Editor is loading...