aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features
diff options
context:
space:
mode:
authorRoseGoldIsntGay <yoavkau@gmail.com>2022-07-27 21:47:43 +0300
committerRoseGoldIsntGay <yoavkau@gmail.com>2022-07-27 21:47:43 +0300
commit170ccfa42e36f04306820fbc3ef8a8ce3cf75010 (patch)
tree6728741f9a9befcb71ce1f27262073c984affe9a /src/main/java/rosegoldaddons/features
parent854c131bf7965cef66d37e80640999242c9e0d65 (diff)
downloadRGA-master.tar.gz
RGA-master.tar.bz2
RGA-master.zip
last update for a whileHEADmaster
imma be real with y'all this is really old changes i never pushed to git so forgive me if the changelog is partial added an autoclicker that probably gets u banned added auto leave limbo added three weirdos auto solver added block size modifiers for dungeons i changed a log of stuff probably bug fixes have fun
Diffstat (limited to 'src/main/java/rosegoldaddons/features')
-rw-r--r--src/main/java/rosegoldaddons/features/ArmorStandESPs.java1
-rw-r--r--src/main/java/rosegoldaddons/features/AutoArrowAlign.java4
-rw-r--r--src/main/java/rosegoldaddons/features/AutoClicker.java80
-rw-r--r--src/main/java/rosegoldaddons/features/AutoLeaveLimbo.java37
-rw-r--r--src/main/java/rosegoldaddons/features/AutoSlayer.java66
-rw-r--r--src/main/java/rosegoldaddons/features/AutoThreeWeirdos.java169
-rw-r--r--src/main/java/rosegoldaddons/features/CustomItemMacro.java6
-rw-r--r--src/main/java/rosegoldaddons/features/DungeonESP.java20
-rw-r--r--src/main/java/rosegoldaddons/features/EndermanMacro.java260
-rw-r--r--src/main/java/rosegoldaddons/features/ForagingIslandMacro.java5
-rw-r--r--src/main/java/rosegoldaddons/features/HardstoneAura.java134
-rw-r--r--src/main/java/rosegoldaddons/features/PrecEyeMacro.java5
-rw-r--r--src/main/java/rosegoldaddons/features/SexAura.java75
-rw-r--r--src/main/java/rosegoldaddons/features/StrandedVillagerMacro.java333
14 files changed, 1098 insertions, 97 deletions
diff --git a/src/main/java/rosegoldaddons/features/ArmorStandESPs.java b/src/main/java/rosegoldaddons/features/ArmorStandESPs.java
index f726052..b937f8a 100644
--- a/src/main/java/rosegoldaddons/features/ArmorStandESPs.java
+++ b/src/main/java/rosegoldaddons/features/ArmorStandESPs.java
@@ -1,6 +1,5 @@
package rosegoldaddons.features;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity;
import net.minecraft.entity.boss.EntityWither;
diff --git a/src/main/java/rosegoldaddons/features/AutoArrowAlign.java b/src/main/java/rosegoldaddons/features/AutoArrowAlign.java
index db9650f..de502c4 100644
--- a/src/main/java/rosegoldaddons/features/AutoArrowAlign.java
+++ b/src/main/java/rosegoldaddons/features/AutoArrowAlign.java
@@ -32,7 +32,7 @@ public class AutoArrowAlign {
private static final Map<BlockPos, Integer> clicksPerFrame = new HashMap<>();
private static final Map<BlockPos, Integer> toClickMap = new HashMap<>();
private static boolean init = false;
- private static final BlockPos topLeft = new BlockPos(196, 125, 278);
+ private static final BlockPos topLeft = new BlockPos(196 - 100, 125, 278 - 100);
/*@SubscribeEvent
public void debugging(TickEvent.ClientTickEvent event) {
@@ -336,6 +336,6 @@ public class AutoArrowAlign {
private static boolean isInSection3() {
int x = Main.mc.thePlayer.getPosition().getX();
int z = Main.mc.thePlayer.getPosition().getZ();
- return x < 218 && z > 251 && x > 196 && z < 319;
+ return x < (218 - 200) && z > (251 - 200) && x > (196 - 200) && z < (319 - 200);
}
}
diff --git a/src/main/java/rosegoldaddons/features/AutoClicker.java b/src/main/java/rosegoldaddons/features/AutoClicker.java
new file mode 100644
index 0000000..0411df3
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/AutoClicker.java
@@ -0,0 +1,80 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraftforge.fml.client.registry.ClientRegistry;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.InputEvent;
+import org.lwjgl.input.Keyboard;
+import rosegoldaddons.Main;
+import rosegoldaddons.events.MillisecondEvent;
+import rosegoldaddons.utils.ChatUtils;
+
+import java.lang.reflect.Method;
+
+public class AutoClicker {
+ private static final KeyBinding keyBinding = new KeyBinding("Auto Clicker", Keyboard.KEY_NONE, "RoseGoldAddons - Combat");
+ private boolean toggled = false;
+ private int count = 0;
+ private long startedAt = 0;
+ private long lastClickTime = 0;
+
+ @SubscribeEvent
+ public void onMillisecond(MillisecondEvent event) {
+ if(!toggled) return;
+ if(System.currentTimeMillis() - lastClickTime < (long) (1000 / Main.configFile.autoClickerCPS)) return;
+ switch (Main.configFile.autoClickerMode) {
+ case 1:
+ MovingObjectPosition movingObjectPosition = Main.mc.objectMouseOver;
+ if (movingObjectPosition != null && movingObjectPosition.entityHit != null) {
+ Main.mc.playerController.attackEntity(Main.mc.thePlayer, movingObjectPosition.entityHit);
+ Main.mc.thePlayer.swingItem();
+ count++;
+ } else if (movingObjectPosition != null) {
+ Main.mc.thePlayer.swingItem();
+ }
+ break;
+ case 0:
+ rightClick();
+ count++;
+ break;
+ }
+ lastClickTime = System.currentTimeMillis();
+ }
+
+ @SubscribeEvent
+ public void onKeyInput(InputEvent.KeyInputEvent event) {
+ int eventKey = Keyboard.getEventKey();
+ if(eventKey != keyBinding.getKeyCode()) return;
+ if(Keyboard.isKeyDown(eventKey)) {
+ if(!toggled) {
+ toggled = true;
+ count = 0;
+ startedAt = System.currentTimeMillis();
+ }
+ } else {
+ toggled = false;
+ ChatUtils.sendMessage(String.format("%s Clicks in %s milliseconds", count, System.currentTimeMillis() - startedAt));
+ }
+ }
+
+ public static void init() {
+ ClientRegistry.registerKeyBinding(keyBinding);
+ }
+
+ public static void rightClick() {
+ try {
+ Method rightClickMouse;
+ try {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("func_147121_ag");
+ } catch (NoSuchMethodException e) {
+ rightClickMouse = Minecraft.class.getDeclaredMethod("rightClickMouse");
+ }
+ rightClickMouse.setAccessible(true);
+ rightClickMouse.invoke(Main.mc);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/AutoLeaveLimbo.java b/src/main/java/rosegoldaddons/features/AutoLeaveLimbo.java
new file mode 100644
index 0000000..407965f
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/AutoLeaveLimbo.java
@@ -0,0 +1,37 @@
+package rosegoldaddons.features;
+
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+import rosegoldaddons.Main;
+import rosegoldaddons.utils.ScoreboardUtils;
+
+public class AutoLeaveLimbo {
+ private int deb = 0;
+ private boolean playSb = false;
+ private int prev = 0;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if(!Main.configFile.autoLeaveLimbo || Main.endermanMacro) return;
+ if(event.phase == TickEvent.Phase.END) return;
+ if(deb > 0) deb--;
+ if(deb != 0) return;
+ deb = 20;
+ if(ScoreboardUtils.inLimbo) {
+ if(prev < 10) {
+ prev++;
+ } else {
+ Main.mc.thePlayer.sendChatMessage("/l");
+ prev = 0;
+ playSb = true;
+ return;
+ }
+ } else {
+ prev = 0;
+ }
+ if(!ScoreboardUtils.inSkyblock && playSb && Main.configFile.autoLimboSB) {
+ Main.mc.thePlayer.sendChatMessage("/play sb");
+ playSb = false;
+ }
+ }
+}
diff --git a/src/main/java/rosegoldaddons/features/AutoSlayer.java b/src/main/java/rosegoldaddons/features/AutoSlayer.java
index 64b173a..09c7c51 100644
--- a/src/main/java/rosegoldaddons/features/AutoSlayer.java
+++ b/src/main/java/rosegoldaddons/features/AutoSlayer.java
@@ -25,6 +25,8 @@ public class AutoSlayer {
private static boolean openMaddox = false;
private static boolean startSlayer = false;
private static boolean waitingForMaddox = false;
+ private static boolean restart = false;
+ private static int countdown = 0;
private static int slayerSlot = 0;
private static int slotLevel = 0;
private static int debounce = 0;
@@ -46,12 +48,12 @@ public class AutoSlayer {
}
@SubscribeEvent
- public void onInteract(InputEvent.KeyInputEvent event) {
+ public void interactHandler(TickEvent.ClientTickEvent event) {
+ if(Main.mc.thePlayer == null || Main.mc.theWorld == null) return;
+ if(ScoreboardUtils.inPrivateIsland) return;
if (!Main.configFile.autoSlayer || !Main.configFile.clickMaddox || waitingForMaddox || debounce != 0) return;
- List<String> scoreboard = ScoreboardUtils.getSidebarLines();
- for (String line : scoreboard) {
- String cleanedLine = ScoreboardUtils.cleanSB(line);
- if (cleanedLine.contains("Boss slain!")) {
+ if (Main.configFile.forceSlayer) {
+ if (!ScoreboardUtils.scoreboardContains("Slay the boss!") && !ScoreboardUtils.scoreboardContains("Kills") && !ScoreboardUtils.scoreboardContains("Combat XP")) {
int maddox = findItemInHotbar("Batphone");
if (maddox != -1) {
ItemStack item = Main.mc.thePlayer.inventory.getStackInSlot(maddox);
@@ -60,7 +62,44 @@ public class AutoSlayer {
Main.mc.playerController.sendUseItem(Main.mc.thePlayer, Main.mc.theWorld, item);
Main.mc.thePlayer.inventory.currentItem = save;
waitingForMaddox = true;
- break;
+ restart = false;
+ }
+ }
+ if (ScoreboardUtils.scoreboardContains("Slay the boss!")) {
+ if (!restart) {
+ countdown = 800;
+ restart = true;
+ } else {
+ if (countdown > 0) {
+ if (countdown % 40 == 0) {
+ ChatUtils.sendMessage("§ccountdown: " + countdown / 40);
+ }
+ countdown--;
+ } else {
+ int maddox = findItemInHotbar("Batphone");
+ if (maddox != -1) {
+ ItemStack item = Main.mc.thePlayer.inventory.getStackInSlot(maddox);
+ int save = Main.mc.thePlayer.inventory.currentItem;
+ Main.mc.thePlayer.inventory.currentItem = maddox;
+ Main.mc.playerController.sendUseItem(Main.mc.thePlayer, Main.mc.theWorld, item);
+ Main.mc.thePlayer.inventory.currentItem = save;
+ waitingForMaddox = true;
+ restart = false;
+ }
+ }
+ }
+ }
+ } else {
+ if (ScoreboardUtils.scoreboardContains("Boss slain!")) {
+ int maddox = findItemInHotbar("Batphone");
+ if (maddox != -1) {
+ ItemStack item = Main.mc.thePlayer.inventory.getStackInSlot(maddox);
+ int save = Main.mc.thePlayer.inventory.currentItem;
+ Main.mc.thePlayer.inventory.currentItem = maddox;
+ Main.mc.playerController.sendUseItem(Main.mc.thePlayer, Main.mc.theWorld, item);
+ Main.mc.thePlayer.inventory.currentItem = save;
+ waitingForMaddox = true;
+ restart = false;
}
}
}
@@ -133,13 +172,26 @@ public class AutoSlayer {
List<Slot> chestInventory = ((GuiChest) Main.mc.currentScreen).inventorySlots.inventorySlots;
if (!chestInventory.get(13).getHasStack()) return;
if (chestInventory.get(13).getStack().getDisplayName().contains("Ongoing")) {
-
+ if (Main.configFile.forceSlayer) {
+ clickSlot(13, 2, 0);
+ clickSlot(11, 2, 1);
+ clickSlot(slayerSlot, 2, 2);
+ clickSlot(slotLevel, 2, 3);
+ clickSlot(11, 2, 4); //confirm
+ debounce = 80;
+ }
} else if (chestInventory.get(13).getStack().getDisplayName().contains("Complete")) {
clickSlot(13, 2, 0);
clickSlot(slayerSlot, 2, 1);
clickSlot(slotLevel, 2, 2);
clickSlot(11, 2, 3); //confirm
debounce = 80;
+ } else if (chestInventory.get(13).getStack().getDisplayName().contains("Failed")) {
+ clickSlot(13, 2, 0);
+ clickSlot(slayerSlot, 2, 1);
+ clickSlot(slotLevel, 2, 2);
+ clickSlot(11, 2, 3); //confirm
+ debounce = 80;
} else {
clickSlot(slayerSlot, 2, 0);
clickSlot(slotLevel, 2, 1);
diff --git a/src/main/java/rosegoldaddons/features/AutoThreeWeirdos.java b/src/main/java/rosegoldaddons/features/AutoThreeWeirdos.java
new file mode 100644
index 0000000..d96e804
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/AutoThreeWeirdos.java
@@ -0,0 +1,169 @@
+package rosegoldaddons.features;
+
+import net.minecraft.client.multiplayer.PlayerControllerMP;
+import net.minecraft.entity.Entity;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.StringUtils;
+import net.minecraft.util.Vec3;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+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.utils.ChatUtils;
+import rosegoldaddons.utils.ScoreboardUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+/*
+ * Solver blatantly copied from DSM: https://github.com/bowser0000/SkyblockMod
+ */
+
+public class AutoThreeWeirdos {
+ private static final ArrayList<String> solutions = new ArrayList<>(Arrays.asList(
+ "The reward is not in my chest!",
+ "At least one of them is lying, and the reward is not in",
+ "My chest doesn't have the reward. We are all telling the truth",
+ "My chest has the reward and I'm telling the truth",
+ "The reward isn't in any of our chests",
+ "Both of them are telling the truth."
+ ));
+
+ private static final ArrayList<String> weirdos = new ArrayList<>(Arrays.asList(
+ "Baxter", "Benson", "Eveleth", "Hope", "Luverne", "Madelia", "Rose", "Victoria", "Morris", "Carver", "Ardis", "Lino",
+ "Elmo", "Virginia", "Montgomery", "Winona", "Melrose", "Marshall", "Hugo", "Willmar", "Ramsey"
+ ));
+
+ private static BlockPos riddleChest = null;
+ private static boolean talked = false;
+ private static boolean opened = false;
+ private static int debounce = 0;
+
+
+ @SubscribeEvent
+ public void onChat(ClientChatReceivedEvent event) {
+ if(!Main.configFile.autoThreeWeirdos || opened || !ScoreboardUtils.inDungeon) return;
+ String message = removeFormatting(event.message.getUnformattedText());
+ if (message.startsWith("[NPC]")) {
+ for (String solution : solutions) {
+ if (message.contains(solution)) {
+ String npcName = message.substring(message.indexOf("]") + 2, message.indexOf(":"));
+ if (riddleChest == null) {
+ List<Entity> entities = Main.mc.theWorld.getLoadedEntityList();
+ for (Entity entity : entities) {
+ if (entity == null || !entity.hasCustomName()) continue;
+ if (entity.getCustomNameTag().contains(npcName)) {
+ BlockPos npcLocation = new BlockPos(entity.posX, 69, entity.posZ);
+ if (Main.mc.theWorld.getBlockState(npcLocation.north()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.north();
+ } else if (Main.mc.theWorld.getBlockState(npcLocation.east()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.east();
+ } else if (Main.mc.theWorld.getBlockState(npcLocation.south()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.south();
+ } else if (Main.mc.theWorld.getBlockState(npcLocation.west()).getBlock() == Blocks.chest) {
+ riddleChest = npcLocation.west();
+ } else {
+ ChatUtils.sendMessage("Could not find correct riddle chest.");
+ }
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ else if(message.startsWith("PUZZLE") && message.contains("wasn't fooled by")) {
+ opened = true;
+ talked = true;
+ }
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if(!Main.configFile.autoThreeWeirdos || opened || !ScoreboardUtils.inDungeon) return;
+ if(Main.mc.theWorld == null || Main.mc.thePlayer == null) return;
+ if(event.phase == TickEvent.Phase.END) return;
+ if(debounce > 0) debounce--;
+ if(debounce != 0) return;
+ if(!talked) {
+ debounce = 5;
+ if(!allWeirdosInRange()) return;
+ interactWithWeirdos();
+ talked = true;
+ } else {
+ if(riddleChest != null) {
+ debounce = 10;
+ interactWithChest();
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldChange(WorldEvent.Load event) {
+ riddleChest = null;
+ opened = false;
+ talked = false;
+ }
+
+ private static boolean allWeirdosInRange() {
+ int count = 0;
+ List<Entity> entities = Main.mc.theWorld.getLoadedEntityList();
+ for (Entity entity : entities) {
+ if (entity == null || !entity.hasCustomName()) continue;
+ String name = removeFormatting(entity.getCustomNameTag());
+ if(weirdos.contains(name)) {
+ float range = entity.getDistanceToEntity(Main.mc.thePlayer);
+ if(range < 4) {
+ count++;
+ }
+ }
+ }
+ if(count == 1 || count == 2) {
+ ChatUtils.sendMessage("Detected an incorrect amount of weirdos in range, try moving closer or DMing RoseGold#5441 the names of the weirdos");
+ }
+ return count == 3 || count == 2;
+ }
+
+ private static void interactWithWeirdos() {
+ List<Entity> entities = Main.mc.theWorld.getLoadedEntityList();
+ for (Entity entity : entities) {
+ if (entity == null || !entity.hasCustomName()) continue;
+ String name = removeFormatting(entity.getCustomNameTag());
+ if(weirdos.contains(name)) {
+ interactWithEntity(entity);
+ }
+ }
+ }
+
+ private static void interactWithChest() {
+ Vec3 playerPos = Main.mc.thePlayer.getPositionEyes(1f);
+ if(playerPos.distanceTo(new Vec3(riddleChest.getX() + 0.5, riddleChest.getY() + 0.5, riddleChest.getZ() + 0.5)) > 5) {
+ ChatUtils.sendMessage("§cWalk closer to chest!");
+ }
+ if(Main.mc.playerController.onPlayerRightClick(
+ Main.mc.thePlayer,
+ Main.mc.theWorld,
+ Main.mc.thePlayer.inventory.getCurrentItem(),
+ riddleChest,
+ EnumFacing.fromAngle(Main.mc.thePlayer.rotationYaw),
+ new Vec3(Math.random(), Math.random(), Math.random())
+ )) {
+ Main.mc.thePlayer.swingItem();
+ opened = true;
+ }
+ }
+
+ private static void interactWithEntity(Entity entity) {
+ PlayerControllerMP playerControllerMP = Main.mc.playerController;
+ playerControllerMP.interactWithEntitySendPacket(Main.mc.thePlayer, entity);
+ }
+
+ private static String removeFormatting(String input) {
+ return input.replaceAll("§[0-9a-fk-or]", "");
+ }
+
+}
diff --git a/src/main/java/rosegoldaddons/features/CustomItemMacro.java b/src/main/java/rosegoldaddons/features/CustomItemMacro.java
index 37b4ce3..7f6e179 100644
--- a/src/main/java/rosegoldaddons/features/CustomItemMacro.java
+++ b/src/main/java/rosegoldaddons/features/CustomItemMacro.java
@@ -1,18 +1,12 @@
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 java.lang.reflect.Method;
-
public class CustomItemMacro {
private Thread thread;
private int milis = 0;
diff --git a/src/main/java/rosegoldaddons/features/DungeonESP.java b/src/main/java/rosegoldaddons/features/DungeonESP.java
index b611fe9..958a5e3 100644
--- a/src/main/java/rosegoldaddons/features/DungeonESP.java
+++ b/src/main/java/rosegoldaddons/features/DungeonESP.java
@@ -1,7 +1,6 @@
package rosegoldaddons.features;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.entity.passive.EntityBat;
import net.minecraft.entity.player.EntityPlayer;
@@ -9,9 +8,9 @@ import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
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.RenderLivingEntityEvent;
-import rosegoldaddons.utils.ChatUtils;
import rosegoldaddons.utils.RenderUtils;
import rosegoldaddons.utils.ScoreboardUtils;
@@ -23,6 +22,7 @@ import java.util.List;
public class DungeonESP {
private static HashMap<Entity, Color> highlightedEntities = new HashMap<>();
private static HashSet<Entity> checkedStarNameTags = new HashSet<>();
+ private int ticks = 0;
private static void highlightEntity(Entity entity, Color color) {
highlightedEntities.put(entity, color);
@@ -55,11 +55,10 @@ public class DungeonESP {
@SubscribeEvent
public void onRenderEntityLiving(RenderLivingEntityEvent event) {
- if (!ScoreboardUtils.inDungeon || !Main.configFile.dungeonESP || checkedStarNameTags.contains(event.entity))
- return;
+ if (!ScoreboardUtils.inDungeon || !Main.configFile.dungeonESP || checkedStarNameTags.contains(event.entity)) return;
if (event.entity instanceof EntityArmorStand) {
- if (event.entity.hasCustomName() && event.entity.getCustomNameTag().contains("✯")) {
- List<Entity> possibleEntities = event.entity.getEntityWorld().getEntitiesInAABBexcluding(event.entity, event.entity.getEntityBoundingBox().expand(0, 3, 0), entity -> !(entity instanceof EntityArmorStand));
+ if (event.entity.hasCustomName() && (event.entity.getCustomNameTag().contains("✯") || event.entity.getCustomNameTag().contains("__rga"))) {
+ List<Entity> possibleEntities = event.entity.getEntityWorld().getEntitiesInAABBexcluding(event.entity, event.entity.getEntityBoundingBox().offset(0, -1, 0), entity -> !(entity instanceof EntityArmorStand));
if (!possibleEntities.isEmpty()) {
highlightEntity(possibleEntities.get(0), Color.ORANGE);
}
@@ -80,6 +79,15 @@ public class DungeonESP {
}
@SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if(ticks % 40 == 0) {
+ checkedStarNameTags.clear();
+ ticks = 0;
+ }
+ ticks++;
+ }
+
+ @SubscribeEvent
public void onWorldLoad(WorldEvent.Load event) {
highlightedEntities.clear();
checkedStarNameTags.clear();
diff --git a/src/main/java/rosegoldaddons/features/EndermanMacro.java b/src/main/java/rosegoldaddons/features/EndermanMacro.java
index 0e99af4..ecd82d2 100644
--- a/src/main/java/rosegoldaddons/features/EndermanMacro.java
+++ b/src/main/java/rosegoldaddons/features/EndermanMacro.java
@@ -1,62 +1,280 @@
package rosegoldaddons.features;
-import net.minecraft.client.network.NetHandlerPlayClient;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockBanner;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiChat;
+import net.minecraft.client.gui.GuiIngameMenu;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.entity.monster.EntityEnderman;
-import net.minecraft.network.play.client.C0BPacketEntityAction;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.util.Vec3;
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.ShadyRotation;
+import rosegoldaddons.utils.*;
import java.awt.*;
+import java.util.List;
+import java.util.Random;
public class EndermanMacro {
+ private final KeyBinding sneak = Minecraft.getMinecraft().gameSettings.keyBindSneak;
+ private final KeyBinding walkForward = Minecraft.getMinecraft().gameSettings.keyBindForward;
+ private final KeyBinding jump = Minecraft.getMinecraft().gameSettings.keyBindJump;
+ private final KeyBinding sprint = Minecraft.getMinecraft().gameSettings.keyBindSprint;
+ public static long ms = -1;
private static Entity enderman;
+ public static int ticks = 0;
+ public static int pausedTicks = 0;
+ private boolean sneaking = false;
+ private boolean moving = false;
+ private boolean pauseMacro = false;
+ private boolean sold = false;
+ private boolean stored = false;
+ private boolean sentl = false;
+ private int totalShifts = 0;
+ private int mainDeb = 0;
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase == TickEvent.Phase.END) return;
+ if (pauseMacro) return;
+ ticks++;
if (!Main.configFile.EndermanESP && !Main.endermanMacro) return;
- if(event.phase == TickEvent.Phase.END) return;
+ if (ticks % Math.pow(2, Main.configFile.endermanSpeed) != 0) return;
+ if (Main.mc.currentScreen != null && !(Main.mc.currentScreen instanceof GuiIngameMenu) && !(Main.mc.currentScreen instanceof GuiChat)) return;
+ if(mainDeb != 0) return;
+ sold = false;
+ stored = false;
enderman = getClosestEnderman();
- if(enderman != null && Main.endermanMacro && !ShadyRotation.running) {
- ShadyRotation.smoothLook(ShadyRotation.getRotationToEntity(enderman), Main.configFile.smoothLookVelocity, () -> {
- KeyBinding.setKeyBindState(Main.mc.gameSettings.keyBindSneak.getKeyCode(), true);
- KeyBinding.setKeyBindState(Main.mc.gameSettings.keyBindSneak.getKeyCode(), false);
+ if (Main.endermanMacro && !ShadyRotation.running) {
+ if (enderman != null) {
+ ShadyRotation.smoothLook(
+ ShadyRotation.getRotationToEntity(enderman),
+ Main.configFile.smoothLookVelocity,
+ () -> {
+ if (!sneaking && totalShifts % 2 == 0) {
+ if(Main.mc.thePlayer.inventory.getStackInSlot(Main.mc.thePlayer.inventory.currentItem) != null) {
+ if(Main.configFile.endermanRC || (Main.configFile.zealotRC && enderman instanceof EntityEnderman && ((EntityEnderman) enderman).getHeldBlockState().getBlock() == Blocks.end_portal_frame))
+ Main.mc.playerController.sendUseItem(Main.mc.thePlayer, Main.mc.theWorld, Main.mc.thePlayer.inventory.getStackInSlot(Main.mc.thePlayer.inventory.currentItem));
+ }
+ if(!Main.configFile.endermanRC) KeyBinding.setKeyBindState(sneak.getKeyCode(), true);
+ KeyBinding.setKeyBindState(jump.getKeyCode(), true);
+ totalShifts++;
+ sneaking = true;
+ }
+ });
+ } else {
+ KeyBinding.setKeyBindState(jump.getKeyCode(), true);
+ if(Main.configFile.zealotOnly) {
+ if(ScoreboardUtils.inLimbo) {
+ mainDeb = 20;
+ Main.mc.thePlayer.sendChatMessage("/l");
+ return;
+ }
+ if(!ScoreboardUtils.inSkyblock) {
+ mainDeb = 20;
+ Main.mc.thePlayer.sendChatMessage("/play sb");
+ return;
+ }
+ if (!ScoreboardUtils.inDragonNest) {
+ mainDeb = 20;
+ Main.mc.thePlayer.sendChatMessage("/warp drag");
+ return;
+ }
+ }
+ if(Main.configFile.endermanRandom && !ShadyRotation.runningAsync) {
+ ShadyRotation.smoothLook(
+ new ShadyRotation.Rotation(new Random().nextInt(30), Main.mc.thePlayer.rotationYaw + new Random().nextInt(80)-40),
+ 10,
+ () -> {},
+ true
+ );
+ }
+ }
+ }
+ }
- if(!Main.mc.thePlayer.movementInput.sneak) {
- Main.mc.getNetHandler().addToSendQueue(new C0BPacketEntityAction(Main.mc.thePlayer, C0BPacketEntityAction.Action.START_SNEAKING));
- Main.mc.thePlayer.movementInput.sneak = true;
+ @SubscribeEvent
+ public void movementControl(TickEvent.ClientTickEvent event) {
+ if (!Main.configFile.endermanMove) return;
+ if (event.phase == TickEvent.Phase.END) return;
+ if (Main.mc.currentScreen != null && !(Main.mc.currentScreen instanceof GuiIngameMenu) && !(Main.mc.currentScreen instanceof GuiChat)) return;
+ if (Main.endermanMacro) {
+ if (pausedTicks % 40 != 0) return;
+ KeyBinding.setKeyBindState(walkForward.getKeyCode(), true);
+ KeyBinding.setKeyBindState(sprint.getKeyCode(), true);
+ moving = true;
+ if (Main.configFile.endermanTimer != 0 && ticks > Main.configFile.endermanTimer * 1200) {
+ pauseMacro = true;
+ moving = false;
+ KeyBinding.setKeyBindState(walkForward.getKeyCode(), false);
+ KeyBinding.setKeyBindState(jump.getKeyCode(), false);
+ KeyBinding.setKeyBindState(sprint.getKeyCode(), false);
+ KeyBinding.setKeyBindState(sneak.getKeyCode(), false);
+ if (OpenSkyblockGui.selling || OpenSkyblockGui.storing) return;
+ if(!Main.configFile.endermanIronman) {
+ if (!sold) {
+ OpenSkyblockGui.sellAll = true;
+ OpenSkyblockGui.selling = true;
+ Main.mc.thePlayer.sendChatMessage("/bz");
+ sold = true;
+ return;
+ }
+ }
+ if (Main.configFile.endermanLobby) {
+ if (ScoreboardUtils.inDragonNest) {
+ if(!sentl) {
+ Main.mc.thePlayer.sendChatMessage("/l");
+ sentl = true;
+ return;
+ } else {
+ ChatUtils.sendMessage("Successfully rejoined a new lobby, macro uptime: "+millisToHours(ms));
+ pauseMacro = false;
+ ticks = 0;
+ sentl = false;
+ }
+ } else {
+ if(ScoreboardUtils.inSkyblock && !ScoreboardUtils.inPrivateIsland) {
+ Main.mc.thePlayer.sendChatMessage("/is");
+ }
+ if(ScoreboardUtils.inPrivateIsland) {
+ if(Main.configFile.endermanIronman && !stored) {
+ OpenSkyblockGui.storeInChest = true;
+ stored = true;
+ return;
+ }
+ Main.mc.thePlayer.sendChatMessage("/warp drag");
+ }
+ }
+ if (!ScoreboardUtils.inSkyblock) {
+ Main.mc.thePlayer.sendChatMessage("/play sb");
+ }
} else {
- Main.mc.getNetHandler().addToSendQueue(new C0BPacketEntityAction(Main.mc.thePlayer, C0BPacketEntityAction.Action.STOP_SNEAKING));
- Main.mc.thePlayer.movementInput.sneak = false;
+ if (ScoreboardUtils.inDragonNest) {
+ Main.mc.thePlayer.sendChatMessage("/is");
+ }
+ if (ScoreboardUtils.inPrivateIsland) {
+ if(Main.configFile.endermanIronman && !stored) {
+ OpenSkyblockGui.storeInChest = true;
+ stored = true;
+ return;
+ }
+ Main.mc.thePlayer.sendChatMessage("/warp drag");
+ pauseMacro = false;
+ ticks = 0;
+ }
}
- });
+ }
+ } else {
+ if (!moving) return;
+ KeyBinding.setKeyBindState(walkForward.getKeyCode(), false);
+ KeyBinding.setKeyBindState(jump.getKeyCode(), false);
+ KeyBinding.setKeyBindState(sprint.getKeyCode(), false);
+ moving = false;
+ }
+ }
+
+ @SubscribeEvent
+ public void debounce(TickEvent.ClientTickEvent event) {
+ if (event.phase == TickEvent.Phase.END) return;
+ if (pauseMacro) pausedTicks++;
+ if(mainDeb > 0) mainDeb--;
+ }
+
+ @SubscribeEvent
+ public void stuckControl(TickEvent.ClientTickEvent event) {
+ if (!Main.endermanMacro || !Main.configFile.endermanMove) return;
+ if(ev