aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features
diff options
context:
space:
mode:
authorRoseGoldIsntGay <yoavkau@gmail.com>2022-01-07 16:41:44 +0200
committerRoseGoldIsntGay <yoavkau@gmail.com>2022-01-07 16:41:44 +0200
commitf06690a35ed7040db0aed7cec1f8a392eeffa3e7 (patch)
tree74adb90635b1101d7eedf17cc071b502a9febb46 /src/main/java/rosegoldaddons/features
parent19de3c3ee0582f25d8e127492d791f81a410b70a (diff)
downloadRGA-f06690a35ed7040db0aed7cec1f8a392eeffa3e7.tar.gz
RGA-f06690a35ed7040db0aed7cec1f8a392eeffa3e7.tar.bz2
RGA-f06690a35ed7040db0aed7cec1f8a392eeffa3e7.zip
2.5.1-pre1
Diffstat (limited to 'src/main/java/rosegoldaddons/features')
-rw-r--r--src/main/java/rosegoldaddons/features/AutoArrowAlign.java10
-rw-r--r--src/main/java/rosegoldaddons/features/AutoReady.java22
-rw-r--r--src/main/java/rosegoldaddons/features/AutoSlayer.java176
-rw-r--r--src/main/java/rosegoldaddons/features/BlockBreakAura.java98
-rw-r--r--src/main/java/rosegoldaddons/features/BloodTriggerBot.java2
-rw-r--r--src/main/java/rosegoldaddons/features/BrewingMacro.java234
-rw-r--r--src/main/java/rosegoldaddons/features/CanePlanter.java78
-rw-r--r--src/main/java/rosegoldaddons/features/CropNuker.java152
-rw-r--r--src/main/java/rosegoldaddons/features/CustomItemMacro.java23
-rw-r--r--src/main/java/rosegoldaddons/features/EndermanMacro.java38
-rw-r--r--src/main/java/rosegoldaddons/features/EntityReach.java98
-rw-r--r--src/main/java/rosegoldaddons/features/ForagingIslandMacro.java44
-rw-r--r--src/main/java/rosegoldaddons/features/ForagingNuker.java69
-rw-r--r--src/main/java/rosegoldaddons/features/GemstoneAura.java151
-rw-r--r--src/main/java/rosegoldaddons/features/GhostMacro.java29
-rw-r--r--src/main/java/rosegoldaddons/features/HardstoneAura.java (renamed from src/main/java/rosegoldaddons/features/HardstoneMacro.java)99
-rw-r--r--src/main/java/rosegoldaddons/features/MithrilNuker.java125
-rw-r--r--src/main/java/rosegoldaddons/features/PingWorldChange.java48
-rw-r--r--src/main/java/rosegoldaddons/features/PowderMacro.java3
-rw-r--r--src/main/java/rosegoldaddons/features/SexAura.java33
-rw-r--r--src/main/java/rosegoldaddons/features/TpMe.java5
21 files changed, 1261 insertions, 276 deletions
diff --git a/src/main/java/rosegoldaddons/features/AutoArrowAlign.java b/src/main/java/rosegoldaddons/features/AutoArrowAlign.java
index 4744766..e4c9c14 100644
--- a/src/main/java/rosegoldaddons/features/AutoArrowAlign.java
+++ b/src/main/java/rosegoldaddons/features/AutoArrowAlign.java
@@ -10,7 +10,9 @@ import net.minecraft.item.ItemCloth;
import net.minecraft.item.ItemStack;
import net.minecraft.network.play.client.C02PacketUseEntity;
import net.minecraft.util.BlockPos;
+import net.minecraft.util.EnumFacing;
import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
@@ -121,9 +123,11 @@ public class AutoArrowAlign {
Entity finalSave = save;
new Thread(() -> {
try {
- Thread.sleep(60);
+ Thread.sleep(500);
if(finalSave != null) {
interactWithEntity(finalSave);
+ PlayerControllerMP playerControllerMP = Minecraft.getMinecraft().playerController;
+ playerControllerMP.sendUseItem(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().theWorld, Minecraft.getMinecraft().thePlayer.getHeldItem());
}
} catch (Exception e) {
e.printStackTrace();
@@ -324,6 +328,10 @@ public class AutoArrowAlign {
playerControllerMP.interactWithEntitySendPacket(Minecraft.getMinecraft().thePlayer, entity);
}
+ private static void interactWithEntity2(Entity entity) {
+ PlayerControllerMP playerControllerMP = Minecraft.getMinecraft().playerController;
+ playerControllerMP.isPlayerRightClickingOnEntity(Minecraft.getMinecraft().thePlayer, entity, Minecraft.getMinecraft().objectMouseOver);
+ }
private static boolean isInSection3() {
int x = Minecraft.getMinecraft().thePlayer.getPosition().getX();
diff --git a/src/main/java/rosegoldaddons/features/AutoReady.java b/src/main/java/rosegoldaddons/features/AutoReady.java
index 12089a1..f28910e 100644
--- a/src/main/java/rosegoldaddons/features/AutoReady.java
+++ b/src/main/java/rosegoldaddons/features/AutoReady.java
@@ -1,48 +1,26 @@
package rosegoldaddons.features;
-import com.mojang.realmsclient.gui.ChatFormatting;
-
-import java.awt.Color;
import java.util.List;
-import java.util.Locale;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.entity.EntityPlayerSP;
-import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiChest;
-import net.minecraft.client.network.NetHandlerPlayClient;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ContainerChest;
import net.minecraft.inventory.Slot;
-import net.minecraft.network.play.server.S45PacketTitle;
-import net.minecraft.potion.Potion;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.IChatComponent;
import net.minecraft.util.StringUtils;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import rosegoldaddons.Config;
import rosegoldaddons.Main;
-import rosegoldaddons.events.RenderLivingEntityEvent;
-import rosegoldaddons.utils.OutlineUtils;
-import net.minecraft.network.play.client.C02PacketUseEntity;
import net.minecraft.client.multiplayer.PlayerControllerMP;
-import scala.collection.parallel.ParIterableLike;
public class AutoReady {
boolean startDung = false;
boolean checkingEntities = false;
- String currentMenu = "";
static int windowId;
- private double getDist2Entities(Entity entity1, Entity entity2) {
- return Math.sqrt(Math.pow((entity1.getPosition().getX() - entity2.getPosition().getX()), 2) + Math.pow((entity1.getPosition().getY() - entity2.getPosition().getY()), 2) + Math.pow((entity1.getPosition().getZ() - entity2.getPosition().getZ()), 2));
- }
-
private static void interactWithEntity(Entity entity) {
PlayerControllerMP playerControllerMP = Minecraft.getMinecraft().playerController;
playerControllerMP.interactWithEntitySendPacket(Minecraft.getMinecraft().thePlayer, entity);
diff --git a/src/main/java/rosegoldaddons/features/AutoSlayer.java b/src/main/java/rosegoldaddons/features/AutoSlayer.java
new file mode 100644
index 0000000..839e238
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/AutoSlayer.java
@@ -0,0 +1,176 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IChatComponent;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.client.event.GuiScreenEvent;
+import net.minecraftforge.event.entity.player.PlayerInteractEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.InputEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.utils.ChatUtils;
+import rosegoldaddons.utils.ScoreboardUtils;
+
+import java.util.List;
+
+public class AutoSlayer {
+ private static String lastMaddoxCommand = "/cb placeholder";
+ private static boolean openMaddox = false;
+ private static boolean startSlayer = false;
+ private static boolean waitingForMaddox = false;
+ private static int slayerSlot = 0;
+ private static int slotLevel = 0;
+
+ @SubscribeEvent
+ public void chat(ClientChatReceivedEvent event) {
+ if (!Main.configFile.autoSlayer) return;
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
+ if (message.contains(":")) return;
+ if (message.contains("[OPEN MENU]")) {
+ List<IChatComponent> siblings = event.message.getSiblings();
+ for (IChatComponent sibling : siblings) {
+ if (sibling.getUnformattedText().contains("[OPEN MENU]")) {
+ lastMaddoxCommand = sibling.getChatStyle().getChatClickEvent().getValue();
+ openMaddox = true;
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onInteract(InputEvent.KeyInputEvent event) {
+ if (!Main.configFile.autoSlayer || !Main.configFile.clickMaddox || waitingForMaddox) return;
+ List<String> scoreboard = ScoreboardUtils.getSidebarLines();
+ for (String line : scoreboard) {
+ String cleanedLine = ScoreboardUtils.cleanSB(line);
+ if (cleanedLine.contains("Boss slain!")) {
+ int maddox = findItemInHotbar("Batphone");
+ if (maddox != -1) {
+ ItemStack item = Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(maddox);
+ int save = Minecraft.getMinecraft().thePlayer.inventory.currentItem;
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = maddox;
+ Minecraft.getMinecraft().playerController.sendUseItem(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().theWorld, item);
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = save;
+ waitingForMaddox = true;
+ break;
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (!Main.configFile.autoSlayer) return;
+ if (!openMaddox) return;
+ Minecraft.getMinecraft().thePlayer.sendChatMessage(lastMaddoxCommand);
+ switch (Main.configFile.slayerTypeIndex) {
+ case 1:
+ slayerSlot = 10; //zombie
+ slotLevel = 13; //tier 3
+ break;
+ case 2:
+ slayerSlot = 10;
+ slotLevel = 14; //tier 4
+ break;
+ case 3:
+ slayerSlot = 10;
+ slotLevel = 15; //tier 5
+ break;
+ case 4:
+ slayerSlot = 11; //spider
+ slotLevel = 13; //tier 3
+ break;
+ case 5:
+ slayerSlot = 11;
+ slotLevel = 14; //tier 4
+ break;
+ case 6:
+ slayerSlot = 12; //sven
+ slotLevel = 13; //tier 3
+ break;
+ case 7:
+ slayerSlot = 12;
+ slotLevel = 14; //tier 4
+ break;
+ case 8:
+ slayerSlot = 13; //eman
+ slotLevel = 12; //tier 2
+ break;
+ case 9:
+ slayerSlot = 13;
+ slotLevel = 13; //tier 3
+ break;
+ case 10:
+ slayerSlot = 13;
+ slotLevel = 14; //tier 4
+ break;
+ }
+ openMaddox = false;
+ startSlayer = true;
+ }
+
+ @SubscribeEvent
+ public void guiDraw(GuiScreenEvent.BackgroundDrawnEvent event) {
+ if (!Main.configFile.autoSlayer) return;
+ if (!startSlayer) return;
+ if (slayerSlot == 0 || slotLevel == 0) return;
+ if (event.gui instanceof GuiChest) {
+ Container container = ((GuiChest) event.gui).inventorySlots;
+ if (container instanceof ContainerChest) {
+ String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
+ ChatUtils.sendMessage(chestName);
+ if (chestName.contains("Slayer")) {
+ ChatUtils.sendMessage(slayerSlot +" "+slotLevel);
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ if (!chestInventory.get(13).getHasStack()) return;
+ if (chestInventory.get(13).getStack().getDisplayName().contains("Ongoing")) {
+
+ } else if (chestInventory.get(13).getStack().getDisplayName().contains("Complete")) {
+ ChatUtils.sendMessage("will now commence clicks");
+ clickSlot(13, 2, 0);
+ clickSlot(slayerSlot, 2, 1);
+ clickSlot(slotLevel, 2, 2);
+ clickSlot(11, 2, 3); //confirm
+ ChatUtils.sendMessage("clicked");
+ } else {
+ ChatUtils.sendMessage("will now commence clicks");
+ clickSlot(slayerSlot, 2, 0);
+ clickSlot(slotLevel, 2, 1);
+ clickSlot(11, 2, 2); //confirm
+ ChatUtils.sendMessage("clicked");
+ }
+ ChatUtils.sendMessage("resetting variables");
+ slayerSlot = 0;
+ slotLevel = 0;
+ startSlayer = false;
+ waitingForMaddox = false;
+ }
+ }
+ }
+ }
+
+ private static int findItemInHotbar(String name) {
+ InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory;
+ for (int i = 0; i < 9; i++) {
+ ItemStack curStack = inv.getStackInSlot(i);
+ if (curStack != null) {
+ if (curStack.getDisplayName().contains(name)) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+ private void clickSlot(int slot, int type, int windowAdd) {
+ Minecraft.getMinecraft().playerController.windowClick(Minecraft.getMinecraft().thePlayer.openContainer.windowId + windowAdd, slot, type, 0, Minecraft.getMinecraft().thePlayer);
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/BlockBreakAura.java b/src/main/java/rosegoldaddons/features/BlockBreakAura.java
deleted file mode 100644
index 528ccc1..0000000
--- a/src/main/java/rosegoldaddons/features/BlockBreakAura.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package rosegoldaddons.features;
-
-import net.minecraft.block.Block;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.multiplayer.PlayerControllerMP;
-import net.minecraft.client.settings.KeyBinding;
-import net.minecraft.init.Blocks;
-import net.minecraft.network.play.client.C07PacketPlayerDigging;
-import net.minecraft.util.*;
-import net.minecraftforge.client.event.RenderWorldLastEvent;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
-import net.minecraftforge.fml.common.gameevent.TickEvent;
-import rosegoldaddons.Main;
-import rosegoldaddons.utils.RenderUtils;
-import rosegoldaddons.utils.RotationUtils;
-
-import java.awt.*;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-
-public class BlockBreakAura {
- BlockPos gem = null;
- private Thread thread;
- private boolean breaking = false;
-
- @SubscribeEvent
- public void onTick(TickEvent.ClientTickEvent event) {
- if(!Main.gemNukeToggle) {
- if(breaking) {
- KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false);
- breaking = false;
- }
- return;
- }
- if(event.phase.toString().equals("START") && gem != null) {
- RotationUtils.facePos(new Vec3(gem.getX()+0.5, gem.getY()-1, gem.getZ()+0.5));
- MovingObjectPosition objectMouseOver = Minecraft.getMinecraft().objectMouseOver;
- if(objectMouseOver != null && objectMouseOver.typeOfHit.toString() == "BLOCK") {
- BlockPos pos = objectMouseOver.getBlockPos();
- Block gem = Minecraft.getMinecraft().theWorld.getBlockState(pos).getBlock();
- if(gem == Blocks.stained_glass || gem == Blocks.stained_glass_pane) {
- if(!breaking) {
- KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), true);
- breaking = true;
- }
- } else {
- if(breaking) {
- KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false);
- breaking = false;
- }
- }
-
- }
- }
- }
-
- @SubscribeEvent
- public void renderWorld(RenderWorldLastEvent event) {
- if(!Main.gemNukeToggle) return;
- gem = closestGemstone();
- if (gem != null) {
- RenderUtils.drawBlockBox(gem, Color.RED, true, event.partialTicks);
- }
- }
-
- private BlockPos closestGemstone() {
- int r = 5;
- BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition();
- playerPos.add(0, 1, 0);
- Vec3 playerVec = Minecraft.getMinecraft().thePlayer.getPositionVector();
- Vec3i vec3i = new Vec3i(r, r, r);
- ArrayList<Vec3> chests = new ArrayList<Vec3>();
- if (playerPos != null) {
- for (BlockPos blockPos : BlockPos.getAllInBox(playerPos.add(vec3i), playerPos.subtract(vec3i))) {
- IBlockState blockState = Minecraft.getMinecraft().theWorld.getBlockState(blockPos);
- //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(blockState.getBlock().toString()));
- if (blockState.getBlock() == Blocks.stained_glass) {
- chests.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5));
- }
- }
- }
- double smallest = 9999;
- Vec3 closest = null;
- for (int i = 0; i < chests.size(); i++) {
- double dist = chests.get(i).distanceTo(playerVec);
- if (dist < smallest) {
- smallest = dist;
- closest = chests.get(i);
- }
- }
- if (closest != null && smallest < 4) {
- return new BlockPos(closest.xCoord, closest.yCoord, closest.zCoord);
- }
- return null;
- }
-
-}
diff --git a/src/main/java/rosegoldaddons/features/BloodTriggerBot.java b/src/main/java/rosegoldaddons/features/BloodTriggerBot.java
index 41d1f90..9df02e9 100644
--- a/src/main/java/rosegoldaddons/features/BloodTriggerBot.java
+++ b/src/main/java/rosegoldaddons/features/BloodTriggerBot.java
@@ -22,7 +22,7 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
public class BloodTriggerBot {
- private static String[] names = {"Bonzo", "Revoker", "Psycho", "Reaper", "Cannibal", "Mute", "Ooze", "Putrid", "Freak", "Leech", "Tear", "Parasite", "Flamer", "Skull", "Mr. Dead", "Vader", "Frost", "Walker", "WanderingSoul", "Shadow Assassin", "Lost Adventurer", "Livid", "Professor"};
+ private static String[] names = {"Bonzo", "Revoker", "Psycho", "Reaper", "Cannibal", "Mute", "Ooze", "Putrid", "Freak", "Leech", "Tear", "Parasite", "Flamer", "Skull", "Mr. Dead", "Vader", "Frost", "Walker", "WanderingSoul", "Shadow Assassin", "Lost Adventurer", "Livid", "Professor", "Spirit Bear"};
private static ArrayList<Entity> bloodMobs = null;
private Thread thread;
diff --git a/src/main/java/rosegoldaddons/features/BrewingMacro.java b/src/main/java/rosegoldaddons/features/BrewingMacro.java
new file mode 100644
index 0000000..6dffeba
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/BrewingMacro.java
@@ -0,0 +1,234 @@
+package rosegoldaddons.features;
+
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.init.Blocks;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.Slot;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.Vec3;
+import net.minecraft.util.Vec3i;
+import net.minecraftforge.client.event.GuiScreenEvent;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.utils.ChatUtils;
+import rosegoldaddons.utils.RenderUtils;
+
+import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
+
+public class BrewingMacro {
+ private Thread thread;
+ private BlockPos stand;
+ private boolean sell = false;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (!Main.brewingMacro || !Main.configFile.openstand || Main.configFile.alchindex != 0) return;
+ if (event.phase == TickEvent.Phase.END) {
+ if (Minecraft.getMinecraft().currentScreen == null && stand != null && !sell) {
+ if (Minecraft.getMinecraft().playerController.onPlayerRightClick(
+ Minecraft.getMinecraft().thePlayer,
+ Minecraft.getMinecraft().theWorld,
+ Minecraft.getMinecraft().thePlayer.inventory.getCurrentItem(),
+ stand,
+ EnumFacing.fromAngle(Minecraft.getMinecraft().thePlayer.rotationYaw),
+ new Vec3(Math.random(), Math.random(), Math.random())
+ )) {
+ Minecraft.getMinecraft().thePlayer.swingItem();
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void guiDraw(GuiScreenEvent.BackgroundDrawnEvent event) {
+ if (!Main.brewingMacro) return;
+ if (thread == null || !thread.isAlive()) {
+ thread = new Thread(() -> {
+ try {
+ if (event.gui instanceof GuiChest) {
+ Container container = ((GuiChest) event.gui).inventorySlots;
+ if (container instanceof ContainerChest) {
+ String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
+ int sleep = Main.configFile.alchsleep;
+ if (Main.configFile.alchindex == 0) {
+ if (chestName.contains("Brewing Stand")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if ((slot.getStack().getDisplayName().contains("Speed") || slot.getStack().getDisplayName().contains("Weakness")) && slot.slotNumber < 54) {
+ clickSlot(slot.slotNumber, 1, 1);
+ Thread.sleep(sleep);
+ if (isInventoryFull()) {
+ sell = true;
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/sbmenu");
+ }
+ }
+ }
+ }
+ if (sell) {
+ if (chestName.contains("SkyBlock")) {
+ Thread.sleep(100);
+ clickSlot(22, 0, 0);
+ } else if (chestName.contains("Trades")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if ((slot.getStack().getDisplayName().contains("Speed") || slot.getStack().getDisplayName().contains("Weakness")) && slot.slotNumber >= 54) {
+ clickSlot(slot.slotNumber, 1, 0);
+ Thread.sleep(sleep);
+ }
+ }
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ sell = false;
+ }
+ }
+ } else if (Main.configFile.alchindex == 1) {
+ if (chestName.contains("Brewing Stand")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if (!chestInventory.get(42).getHasStack()) {
+ if (slot.getStack().getDisplayName().contains("Water Bottle") && slot.slotNumber >= 54) {
+ clickSlot(slot.slotNumber, 1, 1);
+ Thread.sleep(sleep);
+ }
+ }
+ }
+ if(Main.configFile.alchclose) {
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+ }
+ } else if (Main.configFile.alchindex == 2) {
+ if (chestName.contains("Brewing Stand")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if (!chestInventory.get(13).getHasStack()) {
+ if (slot.getStack().getDisplayName().contains("Nether Wart") && slot.slotNumber >= 54) {
+ clickSlot(slot.slotNumber, 0, 0);
+ Thread.sleep(sleep/2);
+ clickSlot(13, 1, 0);
+ Thread.sleep(sleep/2);
+ clickSlot(slot.slotNumber, 0, 0);
+ break;
+ }
+ }
+ }
+ if(Main.configFile.alchclose) {
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+ }
+ } else if (Main.configFile.alchindex == 3) {
+ if (chestName.contains("Brewing Stand")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if (!chestInventory.get(13).getHasStack()) {
+ if ((slot.getStack().getDisplayName().contains("Sugar") || slot.getStack().getDisplayName().contains("Spider Eye")) && slot.slotNumber >= 54) {
+ clickSlot(slot.slotNumber, 0, 0);
+ Thread.sleep(sleep/2);
+ clickSlot(13, 1, 0);
+ Thread.sleep(sleep/2);
+ clickSlot(slot.slotNumber, 0, 0);
+ break;
+ }
+ }
+ }
+ if(Main.configFile.alchclose) {
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+ }
+ } else if (Main.configFile.alchindex == 4) {
+ if (chestName.contains("Brewing Stand")) {
+ List<Slot> chestInventory = ((GuiChest) Minecraft.getMinecraft().currentScreen).inventorySlots.inventorySlots;
+ for (Slot slot : chestInventory) {
+ if (!slot.getHasStack()) continue;
+ if (!chestInventory.get(13).getHasStack()) {
+ if (slot.getStack().getDisplayName().contains("Glowstone") && slot.slotNumber >= 54) {
+ clickSlot(slot.slotNumber, 0, 0);
+ Thread.sleep(sleep/2);
+ clickSlot(13, 1, 0);
+ Thread.sleep(sleep/2);
+ clickSlot(slot.slotNumber, 0, 0);
+ break;
+ }
+ }
+ }
+ if(Main.configFile.alchclose) {
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception exception) {
+ exception.printStackTrace();
+ }
+ }, "brewing");
+ thread.start();
+ }
+ }
+
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ if (!Main.brewingMacro) return;
+ stand = closestStand();
+ if (stand != null) {
+ RenderUtils.drawBlockBox(stand, Color.YELLOW, true, event.partialTicks);
+ }
+ }
+
+ private boolean isInventoryFull() {
+ List<Slot> inventory = Minecraft.getMinecraft().thePlayer.inventoryContainer.inventorySlots;
+ for (Slot slot : inventory) {
+ if (!slot.getHasStack() && slot.slotNumber > 8) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private BlockPos closestStand() {
+ int r = 6;
+ if (Minecraft.getMinecraft().thePlayer == null) return null;
+ BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition();
+ playerPos.add(0, 1, 0);
+ Vec3 playerVec = Minecraft.getMinecraft().thePlayer.getPositionVector();
+ Vec3i vec3i = new Vec3i(r, r, r);
+ ArrayList<Vec3> stands = new ArrayList<Vec3>();
+ if (playerPos != null) {
+ for (BlockPos blockPos : BlockPos.getAllInBox(playerPos.add(vec3i), playerPos.subtract(vec3i))) {
+ IBlockState blockState = Minecraft.getMinecraft().theWorld.getBlockState(blockPos);
+ //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(blockState.getBlock().toString()));
+ if (blockState.getBlock() == Blocks.brewing_stand) {
+ stands.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5));
+ }
+ }
+ }
+ double smallest = 9999;
+ Vec3 closest = null;
+ for (int i = 0; i < stands.size(); i++) {
+ double dist = stands.get(i).distanceTo(playerVec);
+ if (dist < smallest) {
+ smallest = dist;
+ closest = stands.get(i);
+ }
+ }
+ if (closest != null && smallest < 5) {
+ return new BlockPos(closest.xCoord, closest.yCoord, closest.zCoord);
+ }
+ return null;
+ }
+
+ private void clickSlot(int slot, int type, int mode) {
+ Minecraft.getMinecraft().playerController.windowClick(Minecraft.getMinecraft().thePlayer.openContainer.windowId, slot, type, mode, Minecraft.getMinecraft().thePlayer);
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/CanePlanter.java b/src/main/java/rosegoldaddons/features/CanePlanter.java
new file mode 100644
index 0000000..0a93a85
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/CanePlanter.java
@@ -0,0 +1,78 @@
+package rosegoldaddons.features;
+
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.Vec3;
+import net.minecraft.util.Vec3i;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+
+import java.util.ArrayList;
+
+public class CanePlanter {
+ //when you're down bad
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (!Main.placeCane || event.phase == TickEvent.Phase.END) {
+ return;
+ }
+ int cane = findItemInHotbar("Cane");
+ BlockPos dirt = furthestEmptyDirt();
+ if (cane != -1 &