aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/Danker/features/SlayerESP.java
blob: 3629474d2a62b8d3b9cc0553fd0dc820e33bc4d1 (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
123
124
125
126
127
128
129
package me.Danker.features;

import me.Danker.DankersSkyblockMod;
import me.Danker.commands.ToggleCommand;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.StringUtils;
import net.minecraft.world.World;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
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 java.util.List;

/**
 * @author CuzImClicks
 */

public class SlayerESP {

    static Entity zombie = null;
    static Entity spider = null;
    static Entity wolf = null;
    static Entity enderman = null;
    static boolean slayerActive = false;
    static boolean slayerStarted = false;
    public static int SLAYER_COLOUR;

    @SubscribeEvent
    public void onWorldChange(WorldEvent.Load event) {
        zombie = null;
        spider = null;
        wolf = null;
        enderman = null;
    }

    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent event) {
        if (!Utils.inSkyblock) return;
        if (event.phase != TickEvent.Phase.START) return;

        World world = Minecraft.getMinecraft().theWorld;
        if (world == null) return;
        if (!slayerStarted) return;
        if (zombie != null || spider != null || wolf != null || enderman != null) {
            return;
        }
        slayerActive = true;
        if (DankersSkyblockMod.tickAmount % 10 == 0 && ToggleCommand.highlightSlayers) {
            for (String line : ScoreboardHandler.getSidebarLines()) {
                String cleanedLine = ScoreboardHandler.cleanSB(line);
                if (cleanedLine.contains("Slay the boss!")) {
                    slayerActive = true;
                    List<Entity> entities = world.getLoadedEntityList();
                    for (Entity e : entities) {
                        System.out.println(e.getName());
                        if (e.getName().contains("Revenant Horror")) {
                            zombie = e;
                            return;
                        } else if (e.getName().contains("Tarantula Broodfather")) {
                            spider = e;
                            return;
                        } else if (e.getName().contains("Sven Packmaster")) {
                            wolf = e;
                            return;
                        } else if (e.getName().contains("Voidgloom Seraph")) {
                            enderman = e;
                            return;
                        }
                    }
                    break;
                }
            }
        }
    }

    @SubscribeEvent
    public void onChat(ClientChatReceivedEvent event) {
        if (!Utils.inSkyblock) return;
        String message = StringUtils.stripControlCodes(event.message.getUnformattedText());
        if (message.contains("SLAYER QUEST STARTED!")) {
            slayerStarted = true;
        }
        if (message.contains("NICE! SLAYER BOSS SLAIN!") || message.contains("SLAYER QUEST COMPLETE!") || message.contains("SLAYER QUEST FAILED!")) {
            slayerActive = false;
            slayerStarted = false;
            zombie = null;
            spider = null;
            wolf = null;
            enderman = null;
        }

    }


    @SubscribeEvent
    public void onWorldRender(RenderWorldLastEvent event) {
        if (!Utils.inSkyblock) return;
        if (!slayerStarted) return;
        if (slayerActive && ToggleCommand.highlightSlayers) {
            if (zombie != null) {
                AxisAlignedBB aabb = new AxisAlignedBB(zombie.posX - 0.5, zombie.posY - 2, zombie.posZ - 0.5, zombie.posX + 0.5, zombie.posY, zombie.posZ + 0.5);
                Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
                return;
            }
            if (spider != null) {
                AxisAlignedBB aabb = new AxisAlignedBB(spider.posX - 0.75, spider.posY - 1, spider.posZ - 0.75, spider.posX + 0.75, spider.posY, spider.posZ + 0.75);
                Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
                return;
            }
            if (wolf != null) {
                AxisAlignedBB aabb = new AxisAlignedBB(wolf.posX - 0.5, wolf.posY - 1, wolf.posZ - 0.5, wolf.posX + 0.5, wolf.posY, wolf.posZ + 0.5);
                Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
                return;
            }
            if (enderman != null) {
                AxisAlignedBB aabb = new AxisAlignedBB(enderman.posX - 0.5, enderman.posY - 3, enderman.posZ - 0.5, enderman.posX + 0.5, enderman.posY, enderman.posZ + 0.5);
                Utils.draw3DBox(aabb, SLAYER_COLOUR, event.partialTicks);
                return;
            }
        }
    }

}