aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features/AutoReady.java
blob: 12089a17ddd2c27ee4b5ac9cf12da7ccffbb354c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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);
    }
}