aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features
diff options
context:
space:
mode:
authorRoseGoldIsntGay <yoavkau@gmail.com>2021-11-07 18:34:22 +0200
committerRoseGoldIsntGay <yoavkau@gmail.com>2021-11-07 18:34:22 +0200
commit6f69d1e1aff688bf2f5ca34754640eed5102b045 (patch)
treee931c56ad48dedb4cec6ffceb78ef0b320c1c192 /src/main/java/rosegoldaddons/features
downloadRGA-6f69d1e1aff688bf2f5ca34754640eed5102b045.tar.gz
RGA-6f69d1e1aff688bf2f5ca34754640eed5102b045.tar.bz2
RGA-6f69d1e1aff688bf2f5ca34754640eed5102b045.zip
committed
or something
Diffstat (limited to 'src/main/java/rosegoldaddons/features')
-rw-r--r--src/main/java/rosegoldaddons/features/AutoReady.java122
-rw-r--r--src/main/java/rosegoldaddons/features/BlockBreakAura.java98
-rw-r--r--src/main/java/rosegoldaddons/features/CustomItemMacro.java77
-rw-r--r--src/main/java/rosegoldaddons/features/EndermanMacro.java63
-rw-r--r--src/main/java/rosegoldaddons/features/GhostMacro.java51
-rw-r--r--src/main/java/rosegoldaddons/features/HardstoneMacro.java201
-rw-r--r--src/main/java/rosegoldaddons/features/ItemFrameAura.java413
-rw-r--r--src/main/java/rosegoldaddons/features/PartyUntransfer.java34
-rw-r--r--src/main/java/rosegoldaddons/features/PowderMacro.java98
-rw-r--r--src/main/java/rosegoldaddons/features/SwordSwapping.java106
-rw-r--r--src/main/java/rosegoldaddons/features/WartMacro.java146
11 files changed, 1409 insertions, 0 deletions
diff --git a/src/main/java/rosegoldaddons/features/AutoReady.java b/src/main/java/rosegoldaddons/features/AutoReady.java
new file mode 100644
index 0000000..12089a1
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/AutoReady.java
@@ -0,0 +1,122 @@
+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);
+ }
+
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ if (!Main.configFile.AutoReady || !startDung || checkingEntities) return;
+ new Thread(() -> {
+ try {
+ checkingEntities = true;
+ Thread.sleep(500);
+ Entity mort = null;
+ for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) {
+ if (entity1.getName().contains("Mort")) {
+ mort = entity1;
+ interactWithEntity(mort);
+ startDung = false;
+ break;
+ }
+ }
+ checkingEntities = false;
+ } catch (Exception e) {}
+ }).start();
+ }
+
+ @SubscribeEvent
+ public void chat(ClientChatReceivedEvent event) {
+ if (!Main.configFile.AutoReady) return;
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText()).toLowerCase();
+ if (message.contains("active potion effects have been paused")) {
+ startDung = true;
+ }
+ }
+
+ @SubscribeEvent
+ public void guiDraw(GuiScreenEvent.BackgroundDrawnEvent event) {
+ if (!Main.configFile.AutoReady) return;
+ if (event.gui instanceof GuiChest) {
+ Container container = ((GuiChest) event.gui).inventorySlots;
+ if (container instanceof ContainerChest) {
+ String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText();
+ List<Slot> invSlots = container.inventorySlots;
+ //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(chestName));
+ if (chestName.contains("Start Dungeon?")) {
+ int i;
+ for(i = 0; i < invSlots.size(); i++) {
+ if(!invSlots.get(i).getHasStack()) continue;
+ String slotName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName());
+ if(slotName.equals("Start Dungeon?")) {
+ clickSlot(invSlots.get(i));
+ }
+ }
+ } else if (chestName.contains("Catacombs -")) {
+ int i;
+ for(i = 0; i < invSlots.size(); i++) {
+ if(!invSlots.get(i).getHasStack()) continue;
+ String slotName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName());
+ if(slotName.contains(Minecraft.getMinecraft().thePlayer.getName())) {
+ i += 9;
+ if(invSlots.get(i).getHasStack()) {
+ if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).equals("Not Ready")) {
+ clickSlot(invSlots.get(i));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private void clickSlot(Slot slot) {
+ windowId = Minecraft.getMinecraft().thePlayer.openContainer.windowId;
+ Minecraft.getMinecraft().playerController.windowClick(windowId, slot.slotNumber, 1, 0, Minecraft.getMinecraft().thePlayer);
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/BlockBreakAura.java b/src/main/java/rosegoldaddons/features/BlockBreakAura.java
new file mode 100644
index 0000000..e8b7219
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/BlockBreakAura.java
@@ -0,0 +1,98 @@
+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 = 4;
+ 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/CustomItemMacro.java b/src/main/java/rosegoldaddons/features/CustomItemMacro.java
new file mode 100644
index 0000000..57c650f
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/CustomItemMacro.java
@@ -0,0 +1,77 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+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.commands.UseCooldown;
+import rosegoldaddons.commands.WartSetup;
+
+import java.lang.reflect.Method;
+
+public class CustomItemMacro {
+ private Thread thread;
+ private int milis = 0;
+
+ @SubscribeEvent
+ public void onRender(RenderWorldLastEvent event) {
+ if (!Main.autoUseItems) return;
+ if (thread == null || !thread.isAlive()) {
+ thread = new Thread(() -> {
+ try {
+ milis++;
+ int prevItem = Minecraft.getMinecraft().thePlayer.inventory.currentItem;
+ for (String i : UseCooldown.items.keySet()) {
+ //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(Math.floor(UseCooldown.items.get(i)/1000) + " " + milis));
+ if (milis % Math.floor(UseCooldown.items.get(i)/100) == 0) {
+ int slot = findItemInHotbar(i);
+ if (slot != -1) {
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = slot;
+ rightClick();
+ Thread.sleep(1);
+ }
+ }
+ }
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = prevItem;
+ Thread.sleep(100);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }, "Custom Item Use");
+ thread.start();
+ }
+ }
+
+ public static void rightClick() {
+ try {
+ Method rightClickMouse = null;
+ try {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("rightClickMouse");
+ } catch (NoSuchMethodException e) {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("func_147121_ag");
+ }
+ rightClickMouse.setAccessible(true);
+ rightClickMouse.invoke(Minecraft.getMinecraft());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ 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;
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/EndermanMacro.java b/src/main/java/rosegoldaddons/features/EndermanMacro.java
new file mode 100644
index 0000000..fb31a0b
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/EndermanMacro.java
@@ -0,0 +1,63 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.monster.EntityCreeper;
+import net.minecraft.entity.monster.EntityEnderman;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.IChatComponent;
+import net.minecraftforge.client.event.RenderWorldEvent;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.events.RenderLivingEntityEvent;
+import rosegoldaddons.utils.OutlineUtils;
+import rosegoldaddons.utils.RenderUtils;
+import rosegoldaddons.utils.RotationUtils;
+
+import java.awt.*;
+import java.util.HashSet;
+import java.util.Random;
+
+public class EndermanMacro {
+
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ if (Main.endermanMacro) {
+ Entity entity1 = getClosestEnderman();
+ if(entity1 == null) return;
+ RenderUtils.drawEntityBox(entity1, Color.RED, true, event.partialTicks);
+ RotationUtils.faceEntity(entity1);
+ Random r = new Random();
+ if(r.nextInt(1000) == 1) {
+ RotationUtils.antiAfk();
+ }
+ } else if (Main.configFile.EndermanESP) {
+ for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) {
+ if (entity1 instanceof EntityEnderman) {
+ RenderUtils.drawEntityBox(entity1, Color.RED, true, event.partialTicks);
+ }
+ }
+ }
+ }
+
+ private static Entity getClosestEnderman() {
+ Entity eman = null;
+ Double closest = Double.valueOf(9999);
+ for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) {
+ if (entity1 instanceof EntityEnderman && !(((EntityEnderman) entity1).getHealth() == 0)) {
+ double dist = entity1.getDistanceSq(Minecraft.getMinecraft().thePlayer.posX, Minecraft.getMinecraft().thePlayer.posY, Minecraft.getMinecraft().thePlayer.posZ);
+ if (dist < closest) {
+ if(Main.configFile.macroRadius != 0 && dist < Main.configFile.macroRadius) {
+ closest = dist;
+ eman = entity1;
+ } if(Main.configFile.macroRadius == 0) {
+ closest = dist;
+ eman = entity1;
+ }
+ }
+ }
+ }
+ return eman;
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/GhostMacro.java b/src/main/java/rosegoldaddons/features/GhostMacro.java
new file mode 100644
index 0000000..8fb2dfc
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/GhostMacro.java
@@ -0,0 +1,51 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.monster.EntityCreeper;
+import net.minecraft.entity.monster.EntityEnderman;
+import net.minecraft.util.ChatComponentText;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.utils.RenderUtils;
+import rosegoldaddons.utils.RotationUtils;
+
+import java.awt.*;
+import java.util.Random;
+
+public class GhostMacro {
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ if (Main.GhostMacro) {
+ Entity entity1 = getClosestCreeper();
+ if (entity1 == null) return;
+ RenderUtils.drawEntityBox(entity1, Color.RED, true, event.partialTicks);
+ RotationUtils.faceEntity(entity1);
+ Random r = new Random();
+ if(r.nextInt(800) == 1) {
+ RotationUtils.antiAfk();
+ }
+ }
+ }
+
+ private static Entity getClosestCreeper() {
+ Entity eman = null;
+ Double closest = Double.valueOf(9999);
+ for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) {
+ if (entity1 instanceof EntityCreeper && !(((EntityCreeper) entity1).getHealth() == 0)) {
+ double dist = entity1.getDistanceSq(Minecraft.getMinecraft().thePlayer.posX, Minecraft.getMinecraft().thePlayer.posY, Minecraft.getMinecraft().thePlayer.posZ);
+ if (dist < closest) {
+ if(Main.configFile.macroRadius != 0 && dist < Main.configFile.macroRadius) {
+ closest = dist;
+ eman = entity1;
+ } if(Main.configFile.macroRadius == 0) {
+ closest = dist;
+ eman = entity1;
+ }
+ }
+ }
+ }
+ return eman;
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/HardstoneMacro.java b/src/main/java/rosegoldaddons/features/HardstoneMacro.java
new file mode 100644
index 0000000..95c1808
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/HardstoneMacro.java
@@ -0,0 +1,201 @@
+package rosegoldaddons.features;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.init.Blocks;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraft.inventory.Slot;
+import net.minecraft.network.play.server.S2APacketParticles;
+import net.minecraft.util.*;
+import net.minecraftforge.client.event.GuiScreenEvent;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.events.ReceivePacketEvent;
+import rosegoldaddons.utils.RenderUtils;
+import rosegoldaddons.utils.RotationUtils;
+
+import java.awt.*;
+import java.util.ArrayList;
+
+public class HardstoneMacro {
+ private ArrayList<Vec3> solved = new ArrayList<>();
+ private BlockPos closestStone = null;
+ private Vec3 closestChest = null;
+ private Thread thread;
+ private boolean breaking = false;
+ private boolean stopHardstone = false;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (!Main.autoHardStone) {
+ if (breaking) {
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false);
+ breaking = false;
+ }
+ return;
+ }
+ if (event.phase.toString().equals("START") && closestStone != null && !stopHardstone) {
+ RotationUtils.facePos(new Vec3(closestStone.getX() + 0.5, closestStone.getY() - 1, closestStone.getZ() + 0.5));
+ //Minecraft.getMinecraft().playerController.onPlayerDamageBlock(closestStone, EnumFacing.fromAngle(Minecraft.getMinecraft().thePlayer.rotationYaw));
+ MovingObjectPosition objectMouseOver = Minecraft.getMinecraft().objectMouseOver;
+ if (objectMouseOver != null && objectMouseOver.typeOfHit.toString() == "BLOCK") {
+ BlockPos pos = objectMouseOver.getBlockPos();
+ Block block = Minecraft.getMinecraft().theWorld.getBlockState(pos).getBlock();
+ if (block == Blocks.stone || block == Blocks.coal_ore || block == Blocks.diamond_ore || block == Blocks.emerald_ore
+ || block == Blocks.gold_ore || block == Blocks.iron_ore || block == Blocks.lapis_ore || block == Blocks.redstone_ore) {
+ int pickaxe = PowderMacro.findItemInHotbar("Jungle");
+ if (pickaxe != -1) Minecraft.getMinecraft().thePlayer.inventory.currentItem = pickaxe;
+ 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;
+ }
+ }
+
+ }
+ }
+ if (stopHardstone) {
+ if (breaking) {
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false);
+ breaking = false;
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void receivePacket(ReceivePacketEvent event) {
+ if (!Main.autoHardStone) return;
+ if (event.packet instanceof S2APacketParticles) {
+ S2APacketParticles packet = (S2APacketParticles) event.packet;
+ if (packet.getParticleType().equals(EnumParticleTypes.CRIT)) {
+ Vec3 particlePos = new Vec3(packet.getXCoordinate(), packet.getYCoordinate() - 0.7, packet.getZCoordinate());
+ if (closestChest != null) {
+ stopHardstone = true;
+ double dist = closestChest.distanceTo(particlePos);
+ if (dist < 1) {
+ particlePos = particlePos.add(new Vec3(0, -1, 0));
+ int drill = PowderMacro.findItemInHotbar("X655");
+ if (drill != -1) Minecraft.getMinecraft().thePlayer.inventory.currentItem = drill;
+ RotationUtils.facePos(particlePos);
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void guiDraw(GuiScreenEvent.BackgroundDrawnEvent event) {
+ 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();
+ if (chestName.contains("Treasure")) {
+ breaking = false;
+ solved.add(closestChest);
+ stopHardstone = false;
+ Thread.sleep(20);
+ Minecraft.getMinecraft().thePlayer.closeScreen();
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }).start();
+ }
+
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ if (!Main.autoHardStone) return;
+ closestStone = closestStone();
+ closestChest = closestChest();
+ if (closestStone != null) {
+ RenderUtils.drawBlockBox(closestStone, new Color(128, 128, 128), true, event.partialTicks);
+ }
+ if (closestChest != null) {
+ RenderUtils.drawBlockBox(new BlockPos(closestChest.xCoord, closestChest.yCoord, closestChest.zCoord), new Color(255, 128, 0), true, event.partialTicks);
+ } else {
+ stopHardstone = false;
+ }
+ }
+
+ @SubscribeEvent
+ public void clear(WorldEvent.Load event) {
+ solved.clear();
+ }
+
+ private BlockPos closestStone() {
+ int r = 6;
+ BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition();
+ playerPos.add(0, 1, 0);
+ Vec3 playerVec = Minecraft.getMinecraft().thePlayer.getPositionVector();
+ Vec3i vec3i = new Vec3i(r, 1, r);
+ Vec3i vec3i2 = new Vec3i(r, 0, r);
+ ArrayList<Vec3> stones = new ArrayList<Vec3>();
+ if (playerPos != null) {
+ for (BlockPos blockPos : BlockPos.getAllInBox(playerPos.add(vec3i), playerPos.subtract(vec3i2))) {
+ IBlockState blockState = Minecraft.getMinecraft().theWorld.getBlockState(blockPos);
+ //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(blockState.getBlock().toString()));
+ if (blockState.getBlock() == Blocks.stone) {
+ stones.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5));
+ }
+ }
+ }
+ double smallest = 9999;
+ Vec3 closest = null;
+ for (Vec3 stone : stones) {
+ double dist = stone.distanceTo(playerVec);
+ if (dist < smallest) {
+ smallest = dist;
+ closest = stone;
+ }
+ }
+ if (closest != null && smallest < 5) {
+ return new BlockPos(closest.xCoord, closest.yCoord, closest.zCoord);
+ }
+ return null;
+ }
+
+ private Vec3 closestChest() {
+ int r = 6;
+ 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<>();
+ 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.chest) {
+ chests.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5));
+ }
+ }
+ }
+ double smallest = 9999;
+ Vec3 closest = null;
+ for (Vec3 chest : chests) {
+ if(!solved.contains(chest)) {
+ double dist = chest.distanceTo(playerVec);
+ if (dist < smallest) {
+ smallest = dist;
+ closest = chest;
+ }
+ }
+ }
+ return closest;
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/ItemFrameAura.java b/src/main/java/rosegoldaddons/features/ItemFrameAura.java
new file mode 100644
index 0000000..0e7426f
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/ItemFrameAura.java
@@ -0,0 +1,413 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.multiplayer.PlayerControllerMP;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItemFrame;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.IChatComponent;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+
+public class ItemFrameAura {
+ private static ArrayList<Entity> itemFrames = new ArrayList<Entity>();
+ private static boolean clicking = false;
+ private static ArrayList<Entity> clicked = new ArrayList<Entity>();
+ private Thread thread;
+
+ public static void rightClick() {
+ try {
+ Method rightClickMouse = null;
+ try {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("rightClickMouse");
+ } catch (NoSuchMethodException e) {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("func_147121_ag");
+ }
+ rightClickMouse.setAccessible(true);
+ rightClickMouse.invoke(Minecraft.getMinecraft());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.PlayerTickEvent event) {
+ if (!Main.legitToggle) return;
+ if (thread == null || !thread.isAlive()) {
+ thread = new Thread(() -> {
+ try {
+ BlockPos topLeft = new BlockPos(196, 125, 278);
+ ArrayList<Entity> redWools = new ArrayList<Entity>();
+ ArrayList<Entity> greenWools = new ArrayList<Entity>();
+
+ itemFrames.forEach(itemFrame -> {
+ ItemStack itemStack = ((EntityItemFrame) itemFrame).getDisplayedItem();
+ if (itemStack != null) {
+ String itemString = itemStack.toString();
+ if (itemString.contains("cloth@14")) {
+ redWools.add(itemFrame);
+ } else if (itemString.contains("cloth@5")) {
+ greenWools.add(itemFrame);
+ }
+ }
+ });
+ String patternName = getPattern(redWools, greenWools, topLeft);
+ MovingObjectPosition objectMouseOver = Minecraft.getMinecraft().objectMouseOver;
+ if (objectMouseOver != null && objectMouseOver.entityHit != null) {
+ Entity entity = objectMouseOver.entityHit;
+ if (entity instanceof EntityItemFrame) {
+ Entity itemFrame = entity;
+ ItemStack itemStack = ((EntityItemFrame) itemFrame).getDisplayedItem();
+ if (itemStack != null) {
+ String itemString = itemStack.toString();
+ if (itemString.contains("arrow@0")) {
+ int endRotationAmount = howMuchToClick(patternName, itemFrame, topLeft, true);
+ int currRotationAmount = ((EntityItemFrame) itemFrame).getRotation();
+ int toClick = 0;
+ if (currRotationAmount < endRotationAmount) {
+ toClick = endRotationAmount - currRotationAmount;
+ } else if (currRotationAmount > endRotationAmount) {
+ currRotationAmount = currRotationAmount - 8;
+ toClick = endRotationAmount - currRotationAmount;
+ }
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("" + toClick));
+ for (int i = 0; i < toClick; i++) {
+ //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("clicked"));
+ rightClick();
+ Thread.sleep(Main.configFile.auraDelay);
+ }
+ Thread.sleep(200);
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }, "Legit Mode");
+ thread.start();
+ }
+ }
+
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ itemFrames.clear();
+ for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) {
+ if (entity1 instanceof EntityItemFrame) {
+ itemFrames.add(entity1);
+ }
+ }
+ }
+
+ private static void interactWithEntity(Entity entity) {
+ PlayerControllerMP playerControllerMP = Minecraft.getMinecraft().playerController;
+ playerControllerMP.interactWithEntitySendPacket(Minecraft.getMinecraft().thePlayer, entity);
+ }
+
+ public static void mainAura() {
+ BlockPos topLeft = new BlockPos(196, 125, 278);
+ ArrayList<Entity> redWools = new ArrayList<Entity>();
+ ArrayList<Entity> greenWools = new ArrayList<Entity>();
+
+ itemFrames.forEach(itemFrame -> {
+ ItemStack itemStack = ((EntityItemFrame) itemFrame).getDisplayedItem();
+ if (itemStack != null) {
+ String itemString = itemStack.toString();
+ if (itemString.contains("cloth@14")) {
+ redWools.add(itemFrame);
+ } else if (itemString.contains("cloth@5")) {
+ greenWools.add(itemFrame);
+ }
+ }
+ });
+
+ String patternName = getPattern(redWools, greenWools, topLeft);
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(patternName));
+ clickPatternAura(patternName, topLeft);
+ }
+
+ private static void clickPatternAura(String patternName, BlockPos topLeft) {
+ new Thread(() -> {
+ itemFrames.forEach(itemFrame -> {
+ ItemStack itemStack = ((EntityItemFrame) itemFrame).getDisplayedItem();
+ if (itemStack != null) {
+ String itemString = itemStack.toString();
+ if (itemString.contains("arrow@0")) {
+ int endRotationAmount = howMuchToClick(patternName, itemFrame, topLeft, false);
+ int currRotationAmount = ((EntityItemFrame) itemFrame).getRotation();
+ int toClick = 0;
+ if (currRotationAmount < endRotationAmount) {
+ toClick = endRotationAmount - currRotationAmount;
+ } else if (currRotationAmount > endRotationAmount) {
+ currRotationAmount = currRotationAmount - 8;
+ toClick = endRotationAmount - currRotationAmount;
+ }
+ for (int i = 0; i < toClick; i++) {
+ interactWithEntity(itemFrame);
+ }
+ }
+ }
+ });
+ }).start();
+ }
+
+ private static int howMuchToClick(String patternName, Entity entity, BlockPos topLeft, boolean legitMode) {
+ //prepare to see top tier code right here boys
+ int y = entity.getPosition().getY();
+ int z = entity.getPosition().getZ();
+ int relativeY = topLeft.getY() - y;
+ int relativeX = topLeft.getZ() - z; //intentional
+
+ //shit tier code!! i didn't know how to use hashmaps when i made this :)
+ if (patternName == "legs") {
+ if (relativeY == 0) {
+ if (relativeX == 3 || relativeX == 2) {
+ return 5;
+ } else if (relativeX == 1) {
+ return 3;
+ }
+ }
+ if (relativeY == 1 || relativeY == 2 || relativeY == 3) {
+ if (relativeX == 1) {
+ return 3;
+ } else if (relativeX == 3) {
+ return 7;
+ }
+ }
+ if (relativeY == 4) {
+ if (relativeX == 1) {
+ if (legitMode) return 5;
+ return 4;
+ }
+ if (relativeX == 3) {
+ return 7;
+ }
+ }
+ }
+ if (patternName == "lines") {
+ if (relativeY == 4 && relativeX == 2) {
+ if (legitMode) return 5;
+ return 4;
+ }
+ return 5;
+ }
+ if (patternName == "S") {
+ if (relativeY == 0) {
+ if (relativeX == 4) {
+ return 3;
+ }
+ if (relativeX < 4) {
+ return 1;
+ }
+ }
+ if (relativeY == 1) {
+ if (relativeX == 2) {
+ return 7;
+ }
+ if (relativeX == 4) {
+ return 3;
+ }
+ }
+ if (relativeY == 3) {
+ if (relativeX == 0) {
+ return 7;
+ }
+ if (relativeX == 2) {
+ if (legitMode) return 3;
+ return 2;
+ }
+ }
+ if (relativeY == 4) {
+ if (relativeX == 0) {
+ return 7;
+ }
+ if (relativeX > 0) {
+ return 5;
+ }
+ }
+ }
+ if (patternName == "W") {
+ if (relativeY == 1 || relativeY == 2) {
+ return 3;
+ }
+ if (relativeY == 3) {
+ if (relativeX == 0 || relativeX == 4) {
+ return 3;
+ }
+ if (relativeX == 2) {
+ if (legitMode) return 7;
+ return 6;
+ }
+ }
+ if (relativeY == 4) {
+ if (relativeX < 2) {
+ return 1;
+ }
+ if (relativeX == 2) {
+ return 7;
+ }
+ if (relativeX > 2) {
+ return 5;
+ }
+ }
+ }
+ if (patternName == "spiral") {
+ if (relativeY == 0) {
+ if (relativeX == 0) {
+ return 3;
+ }
+ return 5;
+ }
+ if (relativeY == 3 && relativeX == 2) {
+ if (legitMode) return 7;
+ return 6;
+ }
+ if (relativeY < 4) {
+ if (relativeX == 0) {
+ return 3;
+ }
+ if (relativeX == 2 || relativeX == 4) {
+ return 7;
+ }
+ }
+ if (relativeY == 4) {
+ if (relativeX == 2) {
+ return 7;
+ }
+ return 1;
+ }
+ }
+ if (patternName == "zigzag") {
+ if (relativeY == 3) {
+ if (relativeX == 2) {
+ if (legitMode) return 5;
+ return 4;
+ }
+ }
+ if (relativeY == 1 || relativeY == 3 || relativeX == 3) {
+ return 5;
+ }
+ if (relativeX == 2) {
+ if (relativeY == 0) {
+ return 3;
+ }
+ if (relativeY == 2 || relativeY == 4) {
+ return 7;
+ }
+ }
+ }
+ if (patternName == "N") {
+ if (relativeY == 3 && relativeX == 2) {
+ if (legitMode) return 3;
+ return 2;
+ }
+ if (relativeY == 0) {
+ if (relativeX == 2) {
+ return 3;
+ }
+ return 5;
+ }
+ if (relativeY < 4) {
+ if (relativeX == 0 || relativeX == 4) {
+ return 7;
+ }
+ if (relativeX == 2) {
+ return 3;
+ }
+ }
+ if (relativeY == 4) {
+ if (relativeX > 0) {
+ return 5;
+ }
+ if (relativeX == 0) {
+ return 7;
+ }
+ }
+ }
+ if (patternName == "bottleneck") {
+ if (relativeY == 3 && relativeX == 1) {
+ if (legitMode) return 7;
+ return 6;
+ }
+ if (relativeY == 0) {
+ if (relativeX < 2) {
+ return 1;
+ }
+ if (relativeX > 2) {
+ return 5;
+ }
+ }
+ if (relativeY == 1 || relativeY == 3) {
+ return 7;
+ }
+ if (relativeY == 2) {
+ if (relativeX == 0 || relativeX == 4) {
+ return 7;
+ }
+ if (relativeX == 1) {
+ return 5;
+ }
+ if (relativeX == 3) {
+ return 1;
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ private static String getPattern(ArrayList<Entity> redWools, ArrayList<Entity> greenWools, BlockPos topleft) {
+ if (redWools.size() == 1) {
+ if (greenWools.size() == 1) {
+ Entity ry1 = (Entity) redWools.toArray()[0];
+ Entity gy1 = (Entity) greenWools.toArray()[0];
+ BlockPos redPos1 = ry1.getPosition();
+ BlockPos greenPos1 = gy1.getPosition();
+ //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("red 1: "+redPos1));
+ int relativeR1 = topleft.getY() - redPos1.getY();
+ int relativeG1 = topleft.getY() - greenPos1.getY();
+ if (relativeG1 == 4 && relativeR1 == 4) {
+ return "legs";
+ }
+ if (relativeG1 == 4 && relativeR1 == 0) {
+ return "N";
+ }
+ if (relativeG1 == 4 && relativeR1 == 2) {
+ return "spiral";
+ }
+ } else if (greenWools.size() == 2) {
+ Entity ry1 = (Entity) redWools.toArray()[0];
+ BlockPos redPos1 = ry1.getPosition();
+ int relativeR1 = topleft.getY() - redPos1.getY();
+ if (relativeR1 == 2) {
+ return "W";
+ }
+ return "bottleneck";
+ }
+
+ } else if (redWools.size() == 2) {
+ Entity ry1 = (Entity) redWools.toArray()[0];
+ Entity ry2 = (Entity) redWools.toArray()[0];
+ BlockPos redPos1 = ry1.getPosition();
+ BlockPos redPos2 = ry2.getPosition();
+ int relativeR1 = topleft.getY() - redPos1.getY();
+ int relativeR2 = topleft.getY() - redPos2.getY();
+ if (greenWools.size() > 1) return "zigzag";
+ return "S";
+
+ } else if (redWools.size() == 3) {
+ return "lines";
+ }
+
+ return "Unrecognized";
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/PartyUntransfer.java b/src/main/java/rosegoldaddons/features/PartyUntransfer.java
new file mode 100644
index 0000000..c88b4e3
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/PartyUntransfer.java
@@ -0,0 +1,34 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.StringUtils;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import rosegoldaddons.Main;
+
+public class PartyUntransfer {
+ @SubscribeEvent
+ public void chat(ClientChatReceivedEvent event) {
+ if (!Main.configFile.AutoUntransfer) return;
+ String message = StringUtils.stripControlCodes(event.message.getUnformattedText()).toLowerCase();
+ if (message.contains("the party was transferred to")) {
+ String playerName = Minecraft.getMinecraft().thePlayer.getName();
+ String leader = stripRank(message.substring(message.indexOf("by")+3));
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/p transfer "+leader);
+ }
+ if(message.contains("has promoted")) {
+ String playerName = Minecraft.getMinecraft().thePlayer.getName();
+ String leader = stripRank(message.substring(0 ,message.indexOf("has promoted")-1));
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/p transfer "+leader);
+ }
+ }
+
+ private String stripRank(String name) {
+ if(!name.contains("]")) {
+ System.out.println("non detected");
+ return name;
+ }
+ return name.substring(name.indexOf("]")+2);
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/PowderMacro.java b/src/main/java/rosegoldaddons/features/PowderMacro.java
new file mode 100644
index 0000000..3666e0d
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/PowderMacro.java
@@ -0,0 +1,98 @@
+package rosegoldaddons.features;
+
+import net.minecraft.block.Block;
+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.network.play.server.S2APacketParticles;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.*;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
+import net.minecraftforge.event.entity.living.LivingEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.events.ReceivePacketEvent;
+import rosegoldaddons.utils.RenderUtils;
+import rosegoldaddons.utils.RotationUtils;
+
+import java.awt.*;
+import java.util.ArrayList;
+
+public class PowderMacro {
+ private static Vec3 closestChest = null;
+
+ @SubscribeEvent
+ public void receivePacket(ReceivePacketEvent event) {
+ if (!Main.powderMacro) return;
+ if (event.packet instanceof S2APacketParticles) {
+ S2APacketParticles packet = (S2APacketParticles) event.packet;
+ if (packet.getParticleType().equals(EnumParticleTypes.CRIT)) {
+ Vec3 particlePos = new Vec3(packet.getXCoordinate(), packet.getYCoordinate() - 0.7, packet.getZCoordinate());
+ if (closestChest != null) {
+ double dist = closestChest.distanceTo(particlePos);
+ /*Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(dist + ""));
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(closestChest.toString()));
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(particlePos.toString()));*/
+ if (dist < 1) {
+ particlePos = particlePos.add(new Vec3(0, -1, 0));
+ int drill = findItemInHotbar("X655");
+ if(drill != -1) Minecraft.getMinecraft().thePlayer.inventory.currentItem = drill;
+ RotationUtils.facePos(particlePos);
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void renderWorld(RenderWorldLastEvent event) {
+ if (!Main.powderMacro) return;
+ closestChest = closestChest();
+ if (closestChest != null) {
+ RenderUtils.drawBlockBox(new BlockPos(closestChest.xCoord, closestChest.yCoord, closestChest.zCoord), new Color(255, 128, 0), true, event.partialTicks);
+ }
+ }
+
+ private static Vec3 closestChest() {
+ int r = 6;
+ 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.chest) {
+ 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);
+ }
+ }
+ return closest;
+ }
+
+ public 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;
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/SwordSwapping.java b/src/main/java/rosegoldaddons/features/SwordSwapping.java
new file mode 100644
index 0000000..099b9d7
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/SwordSwapping.java
@@ -0,0 +1,106 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.StringUtils;
+import net.minecraft.world.World;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+
+import java.lang.reflect.Method;
+
+public class SwordSwapping {
+ public static int tickCount = 0;
+ private Thread thread;
+
+ public static void rightClick() {
+ try {
+ Method rightClickMouse = null;
+ try {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("rightClickMouse");
+ } catch (NoSuchMethodException e) {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("func_147121_ag");
+ }
+ rightClickMouse.setAccessible(true);
+ rightClickMouse.invoke(Minecraft.getMinecraft());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ 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;
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.PlayerTickEvent event) {
+ if (Minecraft.getMinecraft().currentScreen != null) return;
+ if (!Main.AOTSMacro && !Main.SoulWhipMacro) {
+ tickCount = 0;
+ return;
+ }
+ if (thread == null || !thread.isAlive()) {
+ thread = new Thread(() -> {
+ try {
+ Thread.sleep(Main.configFile.swapFrequency);
+ int prevItem = Minecraft.getMinecraft().thePlayer.inventory.currentItem;
+ int orbSlot = findItemInHotbar("Power Orb");
+ int tubaSlot = findItemInHotbar("Tuba");
+ int wandSlot = findItemInHotbar("Atonement");
+ int whipSlot = -1;
+ int aotsSlot = -1;
+ if(Main.AOTSMacro) {
+ aotsSlot = findItemInHotbar("Shredded");
+ }
+ if(Main.SoulWhipMacro) {
+ whipSlot = findItemInHotbar("Whip");
+ }
+ if(whipSlot != -1) {
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = whipSlot;
+ rightClick();
+ }
+ if(aotsSlot != -1) {
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = aotsSlot;
+ rightClick();
+ }
+ if(Main.configFile.UseUtility) {
+ if(tickCount % Math.round((1000/Main.configFile.swapFrequency*20)) == 1 && tubaSlot != -1) {
+ Thread.sleep(1);
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = tubaSlot;
+ rightClick();
+ }
+ if(tickCount % Math.round((1000/Main.configFile.swapFrequency*59)) == 1 && orbSlot != -1) {
+ Thread.sleep(1);
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = orbSlot;
+ rightClick();
+ }
+ if(tickCount % Math.round((1000/Main.configFile.swapFrequency*7)) == 1 && wandSlot != -1) {
+ Thread.sleep(1);
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = wandSlot;
+ rightClick();
+ }
+ }
+ Minecraft.getMinecraft().thePlayer.inventory.currentItem = prevItem;
+ tickCount++;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }, "Sword Swap");
+ thread.start();
+ }
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/WartMacro.java b/src/main/java/rosegoldaddons/features/WartMacro.java
new file mode 100644
index 0000000..8b47fcb
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/WartMacro.java
@@ -0,0 +1,146 @@
+package rosegoldaddons.features;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.state.IBlockState;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.init.Blocks;
+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.commands.WartSetup;
+import rosegoldaddons.utils.RenderUtils;
+
+import java.awt.*;
+import java.util.ArrayList;
+
+public class WartMacro {
+ private boolean breaking = false;
+ private boolean walking = false;
+ private double savex = -999;
+ private double savez = -999;
+ private Thread thread;
+ private Thread thread2;
+
+ @SubscribeEvent
+ public void move(TickEvent.ClientTickEvent event) {
+ if (!Main.wartToggle || Minecraft.getMinecraft().currentScreen != null) {
+ if (walking) {
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindForward.getKeyCode(), false);
+ walking = false;
+ }
+ return;
+ }
+ if (thread == null || !thread.isAlive()) {
+ thread = new Thread(() -> {
+ try {
+ //if (event.phase.toString().equals("START")) {
+ if (!walking) {
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindForward.getKeyCode(), true);
+ walking = true;
+ }
+ float prevYaw = Minecraft.getMinecraft().thePlayer.rotationYaw;
+ float nextYaw = -1;
+ if (WartSetup.cardinal.equals("east")) {
+ if (Minecraft.getMinecraft().thePlayer.getPosition().getZ() == WartSetup.wartEnd) {
+ nextYaw = 230;
+ } else if (Minecraft.getMinecraft().thePlayer.getPosition().getZ() == -WartSetup.wartEnd) {
+ nextYaw = 310;
+ }
+ } else if (WartSetup.cardinal.equals("north")) {
+ if (Minecraft.getMinecraft().thePlayer.getPosition().getX() == WartSetup.wartEnd) {
+ nextYaw = 140;
+ } else if (Minecraft.getMinecraft().thePlayer.getPosition().getX() == -WartSetup.wartEnd) {
+ nextYaw = 220;
+ }
+ } else if (WartSetup.cardinal.equals("west")) {
+ if (Minecraft.getMinecraft().thePlayer.getPosition().getZ() == WartSetup.wartEnd) {
+ nextYaw = 130;
+ } else if (Minecraft.getMinecraft().thePlayer.getPosition().getZ() == -WartSetup.wartEnd) {
+ nextYaw = 50;
+ }
+ } else if (WartSetup.cardinal.equals("south")) {
+ if (Minecraft.getMinecraft().thePlayer.getPosition().getX() == WartSetup.wartEnd) {
+ nextYaw = 40;
+ } else if (Minecraft.getMinecraft().thePlayer.getPosition().getX() == -WartSetup.wartEnd) {
+ nextYaw = 320;
+ }
+ }
+ if(nextYaw != -1) {
+ for (int i = 0; i < 50; i++) {
+ Minecraft.getMinecraft().thePlayer.rotationYaw += (nextYaw - prevYaw) / 50;
+ Thread.sleep(10);
+ }
+ }
+ //}
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }, "Wart Rotation");
+ thread.start();
+ }
+ }
+
+
+ @SubscribeEvent
+ public void click(TickEvent.ClientTickEvent event) {
+ if (!Main.wartToggle || Minecraft.getMinecraft().currentScreen != null) {
+ if (breaking) {
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false);
+ breaking = false;
+ }
+ return;
+ }
+ if (event.phase.toString().equals("START")) {
+ 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.nether_wart) {
+ 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 antiStuck(TickEvent.ClientTickEvent event) {
+ if (!Main.wartToggle || Minecraft.getMinecraft().currentScreen != null) return;
+ if (event.phase.toString().equals("START")) {
+ if (thread2 == null || !thread2.isAlive()) {
+ thread2 = new Thread(() -> {
+ try {
+ Thread.sleep(1500);
+ double xdiff = Math.abs(savex - Minecraft.getMinecraft().thePlayer.posX);
+ double zdiff = Math.abs(savez - Minecraft.getMinecraft().thePlayer.posZ);
+ if(xdiff < 2 && zdiff < 2) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("stuck detected."));
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindLeft.getKeyCode(), true);
+ Thread.sleep(500);
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindLeft.getKeyCode(), false);
+ Thread.sleep(1000);
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindRight.getKeyCode(), true);
+ Thread.sleep(500);
+ KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindRight.getKeyCode(), false);
+ }
+ savex = Minecraft.getMinecraft().thePlayer.posX;
+ savez = Minecraft.getMinecraft().thePlayer.posZ;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }, "Anti Stuck");
+ thread2.start();
+ }
+ }
+ }
+}