diff options
| author | RoseGoldIsntGay <yoavkau@gmail.com> | 2021-11-07 18:34:22 +0200 |
|---|---|---|
| committer | RoseGoldIsntGay <yoavkau@gmail.com> | 2021-11-07 18:34:22 +0200 |
| commit | 6f69d1e1aff688bf2f5ca34754640eed5102b045 (patch) | |
| tree | e931c56ad48dedb4cec6ffceb78ef0b320c1c192 /src/main/java/rosegoldaddons/features | |
| download | RGA-6f69d1e1aff688bf2f5ca34754640eed5102b045.tar.gz RGA-6f69d1e1aff688bf2f5ca34754640eed5102b045.tar.bz2 RGA-6f69d1e1aff688bf2f5ca34754640eed5102b045.zip | |
committed
or something
Diffstat (limited to 'src/main/java/rosegoldaddons/features')
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(); + } + } + } +} |
