From e0818a27c9f6a1f78f52830e0ef1324c4743a473 Mon Sep 17 00:00:00 2001 From: NK Date: Mon, 13 Mar 2023 12:46:39 +0000 Subject: [PATCH] page flipper and making other files compatible to page flipper --- .../lilase/features/flipper/Flipper.java | 33 ++--- .../lilase/features/sniper/PageFlipper.java | 133 +++++++++++++++++- .../features/sniper/PageFlipperState.java | 5 + .../lilase/utils/KeyBindingManager.java | 13 +- 4 files changed, 161 insertions(+), 23 deletions(-) create mode 100644 src/main/java/me/night0721/lilase/features/sniper/PageFlipperState.java diff --git a/src/main/java/me/night0721/lilase/features/flipper/Flipper.java b/src/main/java/me/night0721/lilase/features/flipper/Flipper.java index 5af3f01..26f2489 100644 --- a/src/main/java/me/night0721/lilase/features/flipper/Flipper.java +++ b/src/main/java/me/night0721/lilase/features/flipper/Flipper.java @@ -21,19 +21,22 @@ import java.net.URL; public class Flipper { private final String itemname; - private final String bytedata; + private static String bytedata; private final int itemprice; public static FlipperState state = FlipperState.NONE; public static final Rotation rotation = new Rotation(); private final Clock buyWait = new Clock(); - private JsonObject object; + private static JsonObject object; public Flipper(String name, String data, int price) { itemname = name; bytedata = data; itemprice = price; } - + public Flipper(String name, int price) { + itemname = name; + itemprice = price; + } public int getItemPrice() { if (object == null) { try { @@ -55,7 +58,6 @@ public class Flipper { Utils.sendMessage("Flipper is running, stopping, will resume when flipper is done"); if (Lilase.sniper.getOpen()) Lilase.sniper.toggleAuction(); UngrabUtils.ungrabMouse(); - Utils.checkFooter(); if (Utils.cookie != EffectState.ON) { Utils.sendServerMessage("/hub"); state = FlipperState.WALKING_TO_FIRST_POINT; @@ -68,11 +70,11 @@ public class Flipper { if (Lilase.mc.currentScreen != null) { Lilase.mc.thePlayer.closeScreen(); } else if (distanceToFirstPoint() < 0.7f) { - System.out.println("[Flipper] Moving to auction house"); + System.out.println("Moving to auction house"); KeyBindingManager.updateKeys(false, false, false, false, false); state = FlipperState.WALKING_INTO_AUCTION_HOUSE; } else if (distanceToFirstPoint() < 5f) { - System.out.println("[Flipper] Crouching to point 1"); + System.out.println("Crouching to point 1"); KeyBindingManager.updateKeys(true, false, false, false, false, true, false); } else { KeyBindingManager.updateKeys(true, false, false, false, false); @@ -82,14 +84,14 @@ public class Flipper { if (Lilase.mc.currentScreen != null) { Lilase.mc.thePlayer.closeScreen(); } else if (AngleUtils.smallestAngleDifference(AngleUtils.get360RotationYaw(), 88f) > 1.2) { - System.out.println("[Flipper] Rotating to Auction Master"); + System.out.println("Rotating to Auction Master"); rotation.easeTo(88f, Lilase.mc.thePlayer.rotationPitch, 500); } else if (distanceToAuctionMaster() < 0.7f) { - Utils.debugLog("[Flipper] At Auction Master, opening shop"); + Utils.debugLog("At Auction Master, opening shop"); KeyBindingManager.updateKeys(false, false, false, false, false); state = FlipperState.BUYING; } else if (distanceToAuctionMaster() < 5f) { - System.out.println("[Flipper] Crouching to Auction Master"); + System.out.println("Crouching to Auction Master"); KeyBindingManager.updateKeys(true, false, false, false, false, true, false); } else { KeyBindingManager.updateKeys(true, false, false, false, false); @@ -99,7 +101,7 @@ public class Flipper { if (Utils.cookie != EffectState.ON && Lilase.mc.currentScreen == null && buyWait.passed()) { final Entity auctionMaster = getAuctionMaster(); if (auctionMaster == null) { - Utils.debugLog("[Flipper] Cannot find shop NPC, retrying"); + Utils.debugLog("Cannot find shop NPC, retrying"); buyWait.schedule(500); } else { Lilase.mc.playerController.interactWithEntitySendPacket(Lilase.mc.thePlayer, auctionMaster); @@ -111,7 +113,7 @@ public class Flipper { } else if (InventoryUtils.inventoryNameContains("Create BIN Auction")) { if (InventoryUtils.isStoneButton() && buyWait.passed()) { if (InventoryUtils.getSlotForItem(itemname) == -1) { - Utils.debugLog("[Flipper] Cannot find item in inventory, stopping flipper"); + Utils.debugLog("Cannot find item in inventory, stopping flipper"); state = FlipperState.NONE; Lilase.sniper.setOpen(true); return; @@ -151,10 +153,9 @@ public class Flipper { case NONE: break; } - } - public JsonObject getItemData() throws IOException { + public static JsonObject getItemData() throws IOException { URL url = new URL("https://www.night0721.me/api/skyblock"); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.addRequestProperty("Content-Type", "text/plain"); @@ -176,15 +177,15 @@ public class Flipper { return (JsonObject) new JsonParser().parse(content.toString()); } - private float distanceToFirstPoint() { + public static float distanceToFirstPoint() { return (float) Math.sqrt(Math.pow(Lilase.mc.thePlayer.posX - (-2.5), 2) + Math.pow(Lilase.mc.thePlayer.posZ - (-91.5), 2)); } - private float distanceToAuctionMaster() { + public static float distanceToAuctionMaster() { return (float) Math.sqrt(Math.pow(Lilase.mc.thePlayer.posX - (-45), 2) + Math.pow(Lilase.mc.thePlayer.posZ - (-90), 2)); } - private Entity getAuctionMaster() { + public static Entity getAuctionMaster() { for (final Entity e : Lilase.mc.theWorld.loadedEntityList) { if (e instanceof EntityArmorStand) { final String name = StringUtils.stripControlCodes(e.getDisplayName().getUnformattedText()); diff --git a/src/main/java/me/night0721/lilase/features/sniper/PageFlipper.java b/src/main/java/me/night0721/lilase/features/sniper/PageFlipper.java index cc544eb..94c311a 100644 --- a/src/main/java/me/night0721/lilase/features/sniper/PageFlipper.java +++ b/src/main/java/me/night0721/lilase/features/sniper/PageFlipper.java @@ -1,10 +1,131 @@ package me.night0721.lilase.features.sniper; +import me.night0721.lilase.Lilase; +import me.night0721.lilase.player.EffectState; +import me.night0721.lilase.utils.*; +import net.minecraft.entity.Entity; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +import java.util.Objects; + +import static me.night0721.lilase.features.flipper.Flipper.*; + public class PageFlipper { - public void start() { -// Utils.checkFooter(); -// if (Utils.cookie) { -// Utils.sendServerMessage("/ah"); -// } - } + public PageFlipperState state = PageFlipperState.NONE; + public Clock cooldown = new Clock(); + public boolean open = false; + private Thread loop; + + public void start() { + Utils.checkFooter(); + if (Utils.cookie == EffectState.ON) state = PageFlipperState.OPENING; + else { + Utils.sendServerMessage("/hub"); + state = PageFlipperState.WALKING_TO_FIRST_POINT; + } + } + + public void switchStates() { + switch (state) { + case WALKING_TO_FIRST_POINT: + if (Lilase.mc.currentScreen != null) { + Lilase.mc.thePlayer.closeScreen(); + } else if (distanceToFirstPoint() < 0.7f) { + System.out.println("Moving to auction house"); + KeyBindingManager.updateKeys(false, false, false, false, false); + state = PageFlipperState.WALKING_INTO_AUCTION_HOUSE; + } else if (distanceToFirstPoint() < 5f) { + System.out.println("Crouching to point 1"); + KeyBindingManager.updateKeys(true, false, false, false, false, true, false); + } else { + KeyBindingManager.updateKeys(true, false, false, false, false); + } + break; + case WALKING_INTO_AUCTION_HOUSE: + if (Lilase.mc.currentScreen != null) { + Lilase.mc.thePlayer.closeScreen(); + } else if (AngleUtils.smallestAngleDifference(AngleUtils.get360RotationYaw(), 88f) > 1.2) { + System.out.println("Rotating to Auction Master"); + rotation.easeTo(88f, Lilase.mc.thePlayer.rotationPitch, 500); + } else if (distanceToAuctionMaster() < 0.7f) { + Utils.debugLog("At Auction Master, opening shop"); + KeyBindingManager.updateKeys(false, false, false, false, false); + state = PageFlipperState.OPENING; + } else if (distanceToAuctionMaster() < 5f) { + System.out.println("Crouching to Auction Master"); + KeyBindingManager.updateKeys(true, false, false, false, false, true, false); + } else { + KeyBindingManager.updateKeys(true, false, false, false, false); + } + break; + case OPENING: + if (Utils.cookie != EffectState.ON && Lilase.mc.currentScreen == null && cooldown.passed()) { + final Entity auctionMaster = getAuctionMaster(); + if (auctionMaster == null) { + Utils.debugLog("Cannot find shop NPC, retrying"); + cooldown.schedule(500); + } else { + Lilase.mc.playerController.interactWithEntitySendPacket(Lilase.mc.thePlayer, auctionMaster); + cooldown.schedule(1500); + } + } else if (Utils.cookie == EffectState.ON) { + if (Lilase.mc.currentScreen != null) Lilase.mc.thePlayer.closeScreen(); + else Utils.sendServerMessage("/ah"); + } else if (InventoryUtils.inventoryNameContains("Auction House") && cooldown.passed()) { + InventoryUtils.clickOpenContainerSlot(11); + state = PageFlipperState.START; + } + case START: + if (InventoryUtils.inventoryNameContains("Auctions")) { + ItemStack is = InventoryUtils.getStackInOpenContainerSlot(49); + if (is != null && is.getItem() == Items.arrow) { + if (loop == null) { + loop = new Thread(() -> { + for (int i = 11; i <= 43; i++) { + if (!Objects.equals(Lilase.mc.thePlayer.openContainer.getSlot(i).getStack().getDisplayName(), " ")) { + byte[] b = Lilase.mc.thePlayer.openContainer.getSlot(i).getStack().getTagCompound().getCompoundTag("display").getByteArray("Lore"); +// System.out.println(Arrays.toString(b).replaceAll("ยง[0-9a-z]", "")); + } + } + loop = null; + }); + loop.start(); + } + } else { + Utils.debugLog("Not in auction house GUI, stopping"); +// toggleAuction(); + } + } else { + Utils.debugLog("No GUI open, stopping"); + } + case NONE: + break; + } + } + + public void toggleAuction() { + if (getOpen()) { + Utils.sendMessage("Stopped Page Flipper"); + Lilase.mc.thePlayer.closeScreen(); + state = PageFlipperState.NONE; + setOpen(false); + UngrabUtils.regrabMouse(); + } else { + if (Utils.checkInHub()) { + Utils.sendMessage("Started Page Flipper"); + start(); + setOpen(true); + UngrabUtils.ungrabMouse(); + } else Utils.sendMessage("Detected not in hub, please go to hub to start"); + } + } + + public Boolean getOpen() { + return open; + } + + public void setOpen(Boolean open) { + this.open = open; + } } diff --git a/src/main/java/me/night0721/lilase/features/sniper/PageFlipperState.java b/src/main/java/me/night0721/lilase/features/sniper/PageFlipperState.java new file mode 100644 index 0000000..950e5d0 --- /dev/null +++ b/src/main/java/me/night0721/lilase/features/sniper/PageFlipperState.java @@ -0,0 +1,5 @@ +package me.night0721.lilase.features.sniper; + +public enum PageFlipperState { + NONE, WALKING_TO_FIRST_POINT, WALKING_INTO_AUCTION_HOUSE, OPENING, START +} diff --git a/src/main/java/me/night0721/lilase/utils/KeyBindingManager.java b/src/main/java/me/night0721/lilase/utils/KeyBindingManager.java index 04c4bd5..3daf319 100644 --- a/src/main/java/me/night0721/lilase/utils/KeyBindingManager.java +++ b/src/main/java/me/night0721/lilase/utils/KeyBindingManager.java @@ -1,6 +1,7 @@ package me.night0721.lilase.utils; import me.night0721.lilase.Lilase; +import me.night0721.lilase.config.AHConfig; import net.minecraft.client.settings.KeyBinding; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -21,7 +22,17 @@ public class KeyBindingManager { @SubscribeEvent public void onKeyPress(InputEvent.KeyInputEvent event) { if (keyBindings[0].isPressed()) { - Lilase.sniper.toggleAuction(); + switch (AHConfig.SNIPER_MODE) { + case 0: + Lilase.sniper.toggleAuction(); + break; + case 1: + Lilase.pageFlipper.toggleAuction(); + break; + case 2: + Lilase.cofl.toggleAuction(); + break; + } } if (keyBindings[1].isPressed()) { Lilase.config.openGui();