aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features/AutoReady.java
blob: 675d9f131a8d4a20ae7697ffded324e293300226 (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
package rosegoldaddons.features;

import java.util.List;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.entity.Entity;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ContainerChest;
import net.minecraft.inventory.Slot;
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.Main;
import net.minecraft.client.multiplayer.PlayerControllerMP;

public class AutoReady {
    boolean startDung = false;
    boolean checkingEntities = false;
    static int windowId;

    private static void interactWithEntity(Entity entity) {
        PlayerControllerMP playerControllerMP = Main.mc.playerController;
        playerControllerMP.interactWithEntitySendPacket(Main.mc.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 : (Main.mc.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;
                //Main.mc.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(Main.mc.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 = Main.mc.thePlayer.openContainer.windowId;
        Main.mc.playerController.windowClick(windowId, slot.slotNumber, 1, 0, Main.mc.thePlayer);
    }
}