From 6f69d1e1aff688bf2f5ca34754640eed5102b045 Mon Sep 17 00:00:00 2001 From: RoseGoldIsntGay Date: Sun, 7 Nov 2021 18:34:22 +0200 Subject: committed or something --- src/main/java/rosegoldaddons/Config.java | 52 ++ src/main/java/rosegoldaddons/FMLLoadingPlugin.java | 45 ++ src/main/java/rosegoldaddons/Main.java | 159 +++++ src/main/java/rosegoldaddons/OpenSettings.java | 57 ++ .../java/rosegoldaddons/commands/Backpack.java | 87 +++ .../java/rosegoldaddons/commands/LobbySwap.java | 57 ++ .../java/rosegoldaddons/commands/Rosedrobe.java | 90 +++ .../java/rosegoldaddons/commands/UseCooldown.java | 90 +++ .../java/rosegoldaddons/commands/WartSetup.java | 82 +++ .../rosegoldaddons/events/ReceivePacketEvent.java | 16 + .../events/RenderLivingEntityEvent.java | 26 + .../java/rosegoldaddons/features/AutoReady.java | 122 ++++ .../rosegoldaddons/features/BlockBreakAura.java | 98 +++ .../rosegoldaddons/features/CustomItemMacro.java | 77 +++ .../rosegoldaddons/features/EndermanMacro.java | 63 ++ .../java/rosegoldaddons/features/GhostMacro.java | 51 ++ .../rosegoldaddons/features/HardstoneMacro.java | 201 ++++++ .../rosegoldaddons/features/ItemFrameAura.java | 413 +++++++++++++ .../rosegoldaddons/features/PartyUntransfer.java | 34 + .../java/rosegoldaddons/features/PowderMacro.java | 98 +++ .../rosegoldaddons/features/SwordSwapping.java | 106 ++++ .../java/rosegoldaddons/features/WartMacro.java | 146 +++++ .../rosegoldaddons/mixins/MixinNetworkManager.java | 20 + .../mixins/MixinRendererLivingEntity.java | 28 + .../java/rosegoldaddons/utils/OpenSkyblockGui.java | 154 +++++ .../java/rosegoldaddons/utils/OutlineUtils.java | 152 +++++ .../java/rosegoldaddons/utils/RenderUtils.java | 682 +++++++++++++++++++++ .../java/rosegoldaddons/utils/RotationUtils.java | 110 ++++ 28 files changed, 3316 insertions(+) create mode 100644 src/main/java/rosegoldaddons/Config.java create mode 100644 src/main/java/rosegoldaddons/FMLLoadingPlugin.java create mode 100644 src/main/java/rosegoldaddons/Main.java create mode 100644 src/main/java/rosegoldaddons/OpenSettings.java create mode 100644 src/main/java/rosegoldaddons/commands/Backpack.java create mode 100644 src/main/java/rosegoldaddons/commands/LobbySwap.java create mode 100644 src/main/java/rosegoldaddons/commands/Rosedrobe.java create mode 100644 src/main/java/rosegoldaddons/commands/UseCooldown.java create mode 100644 src/main/java/rosegoldaddons/commands/WartSetup.java create mode 100644 src/main/java/rosegoldaddons/events/ReceivePacketEvent.java create mode 100644 src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java create mode 100644 src/main/java/rosegoldaddons/features/AutoReady.java create mode 100644 src/main/java/rosegoldaddons/features/BlockBreakAura.java create mode 100644 src/main/java/rosegoldaddons/features/CustomItemMacro.java create mode 100644 src/main/java/rosegoldaddons/features/EndermanMacro.java create mode 100644 src/main/java/rosegoldaddons/features/GhostMacro.java create mode 100644 src/main/java/rosegoldaddons/features/HardstoneMacro.java create mode 100644 src/main/java/rosegoldaddons/features/ItemFrameAura.java create mode 100644 src/main/java/rosegoldaddons/features/PartyUntransfer.java create mode 100644 src/main/java/rosegoldaddons/features/PowderMacro.java create mode 100644 src/main/java/rosegoldaddons/features/SwordSwapping.java create mode 100644 src/main/java/rosegoldaddons/features/WartMacro.java create mode 100644 src/main/java/rosegoldaddons/mixins/MixinNetworkManager.java create mode 100644 src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java create mode 100644 src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java create mode 100644 src/main/java/rosegoldaddons/utils/OutlineUtils.java create mode 100644 src/main/java/rosegoldaddons/utils/RenderUtils.java create mode 100644 src/main/java/rosegoldaddons/utils/RotationUtils.java (limited to 'src/main/java') diff --git a/src/main/java/rosegoldaddons/Config.java b/src/main/java/rosegoldaddons/Config.java new file mode 100644 index 0000000..0047b65 --- /dev/null +++ b/src/main/java/rosegoldaddons/Config.java @@ -0,0 +1,52 @@ +package rosegoldaddons; + +import gg.essential.vigilance.Vigilant; +import gg.essential.vigilance.data.Property; +import gg.essential.vigilance.data.PropertyType; + +import java.awt.*; +import java.io.File; +import java.util.Arrays; + +import java.io.File; + +public class Config extends Vigilant { + public static Config INSTANCE = new Config(); + + @Property(type = PropertyType.SWITCH, name = "Auto Start Dungeon + Ready", description = "Automatically starts the dungeon and gets ready.", + category = "RoseGoldAddons", subcategory = "General") + public boolean AutoReady = true; + + @Property(type = PropertyType.SWITCH, name = "Party Untransfer", description = "When you really dont wanna be party leader.", + category = "RoseGoldAddons", subcategory = "General") + public boolean AutoUntransfer = true; + + @Property(type = PropertyType.SWITCH, name = "Enderman ESP", description = "**NOT** Needed for enderman macro.", + category = "RoseGoldAddons", subcategory = "General") + public boolean EndermanESP = false; + + @Property(type = PropertyType.SWITCH, name = "Use Utility Items when Swapping", description = "Automatically use Tuba / Orb / Wand when AOTS or Whip swap are enabled", + category = "RoseGoldAddons", subcategory = "General") + public boolean UseUtility = false; + + @Property(type = PropertyType.SLIDER, name = "Sword Swap Delay", description = "How often to swap swords (in miliseconds)", + category = "RoseGoldAddons", subcategory = "General", max = 2000) + public int swapFrequency = 500; + + @Property(type = PropertyType.SLIDER, name = "ItemFrame Terminal Aura Delay", description = "How often to click an item frame (in miliseconds)", + category = "RoseGoldAddons", subcategory = "General", max = 500) + public int auraDelay = 10; + + @Property(type = PropertyType.SLIDER, name = "Smooth Look Velocity", description = "How fast should head rotation changes be (in miliseconds)", + category = "RoseGoldAddons", subcategory = "General", min = 1, max = 200) + public int smoothLookVelocity = 50; + + @Property(type = PropertyType.SLIDER, name = "Macro Range", description = "Look for entities only in radius of the player, 0 = unlimited", + category = "RoseGoldAddons", subcategory = "General", min = 0, max = 100) + public int macroRadius = 0; + + public Config() { + super(new File("./config/rosegoldaddons/config.toml"), "RoseGold Addons"); + initialize(); + } +} diff --git a/src/main/java/rosegoldaddons/FMLLoadingPlugin.java b/src/main/java/rosegoldaddons/FMLLoadingPlugin.java new file mode 100644 index 0000000..57d237e --- /dev/null +++ b/src/main/java/rosegoldaddons/FMLLoadingPlugin.java @@ -0,0 +1,45 @@ +package rosegoldaddons; + +import net.minecraftforge.common.ForgeVersion; +import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; +import org.spongepowered.asm.launch.MixinBootstrap; +import org.spongepowered.asm.mixin.MixinEnvironment; +import org.spongepowered.asm.mixin.Mixins; + + +import java.util.Map; + +@IFMLLoadingPlugin.MCVersion(ForgeVersion.mcVersion) +public class FMLLoadingPlugin implements IFMLLoadingPlugin { + + public FMLLoadingPlugin() { + MixinBootstrap.init(); + Mixins.addConfiguration("mixins.rosegoldaddons.json"); + MixinEnvironment.getCurrentEnvironment().setObfuscationContext("searge"); + } + + @Override + public String[] getASMTransformerClass() { + return new String[0]; + } + + @Override + public String getModContainerClass() { + return null; + } + + @Override + public String getSetupClass() { + return null; + } + + @Override + public void injectData(Map data) { + + } + + @Override + public String getAccessTransformerClass() { + return null; + } +} diff --git a/src/main/java/rosegoldaddons/Main.java b/src/main/java/rosegoldaddons/Main.java new file mode 100644 index 0000000..9c2a338 --- /dev/null +++ b/src/main/java/rosegoldaddons/Main.java @@ -0,0 +1,159 @@ +package rosegoldaddons; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.util.ChatComponentText; +import net.minecraftforge.client.ClientCommandHandler; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.InputEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.fml.common.network.FMLNetworkEvent; +import org.lwjgl.input.Keyboard; +import rosegoldaddons.commands.*; +import rosegoldaddons.features.BlockBreakAura; +import rosegoldaddons.features.*; +import rosegoldaddons.utils.OpenSkyblockGui; + +import java.io.*; + +@Mod(modid = "timechanger", name = "RoseGold Addons", version = "2.1") +public class Main { + public static GuiScreen display = null; + public static Config configFile = Config.INSTANCE; + public static KeyBinding[] keyBinds = new KeyBinding[11]; + public static int tickCount = 0; + public static boolean endermanMacro = false; + public static boolean powderMacro = false; + public static String u = ""; + public static boolean AOTSMacro = false; + public static boolean SoulWhipMacro = false; + public static boolean verified = false; + public static boolean GhostMacro = false; + public static boolean legitToggle = false; + public static boolean gemNukeToggle = false; + public static boolean wartToggle = false; + public static boolean autoUseItems = false; + public static boolean autoHardStone = false; + + @Mod.EventHandler + public void onFMLInitialization(FMLPreInitializationEvent event) { + File directory = new File(event.getModConfigurationDirectory(), "rosegoldaddons"); + if (!directory.exists()) { + directory.mkdirs(); + } + } + + @Mod.EventHandler + public void init(FMLInitializationEvent event) { + MinecraftForge.EVENT_BUS.register(this); + MinecraftForge.EVENT_BUS.register(new AutoReady()); + MinecraftForge.EVENT_BUS.register(new OpenSkyblockGui()); + MinecraftForge.EVENT_BUS.register(new EndermanMacro()); + MinecraftForge.EVENT_BUS.register(new ItemFrameAura()); + MinecraftForge.EVENT_BUS.register(new PowderMacro()); + MinecraftForge.EVENT_BUS.register(new SwordSwapping()); + MinecraftForge.EVENT_BUS.register(new PartyUntransfer()); + MinecraftForge.EVENT_BUS.register(new GhostMacro()); + MinecraftForge.EVENT_BUS.register(new BlockBreakAura()); + MinecraftForge.EVENT_BUS.register(new WartMacro()); + MinecraftForge.EVENT_BUS.register(new CustomItemMacro()); + MinecraftForge.EVENT_BUS.register(new HardstoneMacro()); + + configFile.initialize(); + ClientCommandHandler.instance.registerCommand(new OpenSettings()); + ClientCommandHandler.instance.registerCommand(new Rosedrobe()); + ClientCommandHandler.instance.registerCommand(new LobbySwap()); + ClientCommandHandler.instance.registerCommand(new Backpack()); + ClientCommandHandler.instance.registerCommand(new WartSetup()); + ClientCommandHandler.instance.registerCommand(new UseCooldown()); + + keyBinds[0] = new KeyBinding("Custom Item Macro Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[1] = new KeyBinding("Toggle Enderman Macro", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[2] = new KeyBinding("Item Frame Aura", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[3] = new KeyBinding("Powder Macro Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[4] = new KeyBinding("AOTS SS Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[5] = new KeyBinding("Soul Whip SS Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[6] = new KeyBinding("Ghost Macro Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[7] = new KeyBinding("Item Frame Legit Mode Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[8] = new KeyBinding("Gemstone Smart Nuke", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[9] = new KeyBinding("Wart Macro", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[10] = new KeyBinding("Hardstone Macro", Keyboard.KEY_NONE, "RoseGold Addons"); + + for (KeyBinding keyBind : keyBinds) { + ClientRegistry.registerKeyBinding(keyBind); + } + } + + @SubscribeEvent + public void tick(TickEvent.ClientTickEvent event) { + if (event.phase != TickEvent.Phase.START) return; + if (display != null) { + try { + Minecraft.getMinecraft().displayGuiScreen(display); + } catch (Exception e) { + e.printStackTrace(); + } + display = null; + } + } + + @SubscribeEvent + public void connect(FMLNetworkEvent.ClientConnectedToServerEvent event) { + + } + + @SubscribeEvent + public void key(InputEvent.KeyInputEvent event) { + if (keyBinds[0].isPressed()) { + autoUseItems = !autoUseItems; + String str = autoUseItems ? "§aCustom Item Macro Activated" : "§cCustom Item Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[1].isPressed()) { + endermanMacro = !endermanMacro; + String str = endermanMacro ? "§aZealot Macro Activated" : "§cZealot Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[2].isPressed()) { + ItemFrameAura.mainAura(); + } else if (keyBinds[3].isPressed()) { + powderMacro = !powderMacro; + String str = powderMacro ? "§aPowder Macro Activated" : "§cPowder Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[4].isPressed()) { + AOTSMacro = !AOTSMacro; + String str = AOTSMacro ? "§aAOTS Macro Activated" : "§cAOTS Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[5].isPressed()) { + SoulWhipMacro = !SoulWhipMacro; + String str = SoulWhipMacro ? "§aSoul Whip Macro Activated" : "§cSoul Whip Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[6].isPressed()) { + GhostMacro = !GhostMacro; + String str = GhostMacro ? "§aGhost Macro Activated" : "§cGhost Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[7].isPressed()) { + legitToggle = !legitToggle; + String str = legitToggle ? "§aLegit Mode Activated" : "§cLegit Mode Deactivated"; + SwordSwapping.tickCount = 0; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[8].isPressed()) { + gemNukeToggle = !gemNukeToggle; + String str = gemNukeToggle ? "§aGemstone Nuke Activated" : "§cGemstone Nuke Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[9].isPressed()) { + wartToggle = !wartToggle; + String str = wartToggle ? "§aWart Macro Activated" : "§cWart Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[10].isPressed()) { + autoHardStone = !autoHardStone; + String str = autoHardStone ? "§aHardstone Macro Activated" : "§cHardstone Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } + } + +} diff --git a/src/main/java/rosegoldaddons/OpenSettings.java b/src/main/java/rosegoldaddons/OpenSettings.java new file mode 100644 index 0000000..0e79b74 --- /dev/null +++ b/src/main/java/rosegoldaddons/OpenSettings.java @@ -0,0 +1,57 @@ +package rosegoldaddons; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class OpenSettings implements ICommand { + @Override + public String getCommandName() { + return "rosegoldaddons"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(Arrays.asList("rosegoldaddons", "rga")); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + /*EntityPlayerSP player = (EntityPlayerSP) sender; + player.addChatMessage(new ChatComponentText("hi "+player.getName()+"!"));*/ + Main.display = Main.configFile.gui(); + return; + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} + diff --git a/src/main/java/rosegoldaddons/commands/Backpack.java b/src/main/java/rosegoldaddons/commands/Backpack.java new file mode 100644 index 0000000..f69cd87 --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/Backpack.java @@ -0,0 +1,87 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.Slot; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.StringUtils; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.jetbrains.annotations.NotNull; +import rosegoldaddons.Main; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Backpack implements ICommand { + public static boolean openBP = false; + public static int bpSlot = 0; + + @Override + public String getCommandName() { + return "backpack"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(Arrays.asList("backpack", "bp")); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 0) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/storage"); + } else { + if (isNumeric(args[0])) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/storage"); + openBP = true; + bpSlot = Integer.parseInt(args[0]); + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + return; + } + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/LobbySwap.java b/src/main/java/rosegoldaddons/commands/LobbySwap.java new file mode 100644 index 0000000..517354b --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/LobbySwap.java @@ -0,0 +1,57 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LobbySwap implements ICommand { + public static boolean swapLobby = false; + + @Override + public String getCommandName() { + return "lobbyswap"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + swapLobby = true; + Minecraft.getMinecraft().thePlayer.sendChatMessage("/sbmenu"); + + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return null; + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/Rosedrobe.java b/src/main/java/rosegoldaddons/commands/Rosedrobe.java new file mode 100644 index 0000000..1f7fd62 --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/Rosedrobe.java @@ -0,0 +1,90 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.Slot; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.StringUtils; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.jetbrains.annotations.NotNull; +import rosegoldaddons.Main; +import scala.actors.threadpool.Arrays; + +import java.util.ArrayList; +import java.util.List; + +public class Rosedrobe implements ICommand { + public static boolean openWardrobe = false; + public static int slot = 0; + int windowId; + + @Override + public String getCommandName() { + return "rosedrobe"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 0) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/pets"); + slot = 0; + openWardrobe = true; + } else { + if (isNumeric(args[0])) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/pets"); + openWardrobe = true; + slot = Integer.parseInt(args[0]); + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + return; + } + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/UseCooldown.java b/src/main/java/rosegoldaddons/commands/UseCooldown.java new file mode 100644 index 0000000..912c75a --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/UseCooldown.java @@ -0,0 +1,90 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class UseCooldown implements ICommand { + public static HashMap items = new HashMap(); + + @Override + public String getCommandName() { + return "usecooldown"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 1 && isNumeric(args[0])) { + InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory; + + ItemStack curStack = inv.getStackInSlot(Minecraft.getMinecraft().thePlayer.inventory.currentItem); + if (curStack != null) { + int cd = Integer.parseInt(args[0]); + if (cd == 0) { + items.remove(curStack.getDisplayName()); + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§aSuccessfully Removed " + curStack.getDisplayName() + "§a.")); + return; + } + if (cd < 1) { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Miliseconds, Minimum delay 1 Milisecond.")); + return; + } + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§aSuccessfully Added " + curStack.getDisplayName() + "§a with delay of " + cd + " ms.")); + items.put(curStack.getDisplayName(), cd); + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cError getting current held item.")); + } + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/WartSetup.java b/src/main/java/rosegoldaddons/commands/WartSetup.java new file mode 100644 index 0000000..a5cca13 --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/WartSetup.java @@ -0,0 +1,82 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class WartSetup implements ICommand { + public static int wartEnd = 99999; + public static String cardinal = "west"; + + @Override + public String getCommandName() { + return "wartsetup"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if(args.length == 2) { + if(args[0].equals("west")) { + cardinal = "west"; + } else if(args[0].equals("north")) { + cardinal = "north"; + } else if(args[0].equals("east")) { + cardinal = "east"; + } else if(args[0].equals("south")) { + cardinal = "south"; + } + + if(isNumeric(args[1])) { + wartEnd = (int) Math.floor(Double.parseDouble(args[1])); + } + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } +} diff --git a/src/main/java/rosegoldaddons/events/ReceivePacketEvent.java b/src/main/java/rosegoldaddons/events/ReceivePacketEvent.java new file mode 100644 index 0000000..e658a1e --- /dev/null +++ b/src/main/java/rosegoldaddons/events/ReceivePacketEvent.java @@ -0,0 +1,16 @@ +package rosegoldaddons.events; + +import net.minecraft.network.Packet; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class ReceivePacketEvent extends Event { + + public Packet packet; + + public ReceivePacketEvent(Packet packet) { + this.packet = packet; + } + +} diff --git a/src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java b/src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java new file mode 100644 index 0000000..8a6c9ed --- /dev/null +++ b/src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java @@ -0,0 +1,26 @@ +package rosegoldaddons.events; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class RenderLivingEntityEvent extends Event { + + public EntityLivingBase entity; + public float p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, scaleFactor; + public ModelBase modelBase; + + public RenderLivingEntityEvent(EntityLivingBase entity, float p_77036_2_, float p_77036_3_, float p_77036_4_, float p_77036_5_, float p_77036_6_, float scaleFactor, ModelBase modelBase) { + this.entity = entity; + this.p_77036_2_ = p_77036_2_; + this.p_77036_3_ = p_77036_3_; + this.p_77036_4_ = p_77036_4_; + this.p_77036_5_ = p_77036_5_; + this.p_77036_6_ = p_77036_6_; + this.scaleFactor = scaleFactor; + this.modelBase = modelBase; + } + +} \ No newline at end of file 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 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 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.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 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 stones = new ArrayList(); + 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 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 itemFrames = new ArrayList(); + private static boolean clicking = false; + private static ArrayList clicked = new ArrayList(); + 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 redWools = new ArrayList(); + ArrayList greenWools = new ArrayList(); + + 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); +