aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/rosegoldaddons/features/DungeonESP.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/rosegoldaddons/features/DungeonESP.java')
-rw-r--r--src/main/java/rosegoldaddons/features/DungeonESP.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/main/java/rosegoldaddons/features/DungeonESP.java b/src/main/java/rosegoldaddons/features/DungeonESP.java
new file mode 100644
index 0000000..b611fe9
--- /dev/null
+++ b/src/main/java/rosegoldaddons/features/DungeonESP.java
@@ -0,0 +1,87 @@
+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;
+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 rosegoldaddons.Main;
+import rosegoldaddons.events.RenderLivingEntityEvent;
+import rosegoldaddons.utils.ChatUtils;
+import rosegoldaddons.utils.RenderUtils;
+import rosegoldaddons.utils.ScoreboardUtils;
+
+import java.awt.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+
+public class DungeonESP {
+ private static HashMap<Entity, Color> highlightedEntities = new HashMap<>();
+ private static HashSet<Entity> checkedStarNameTags = new HashSet<>();
+
+ private static void highlightEntity(Entity entity, Color color) {
+ highlightedEntities.put(entity, color);
+ }
+
+ @SubscribeEvent
+ public void onEntityJoinWorld(EntityJoinWorldEvent event) {
+ if (!ScoreboardUtils.inDungeon || !Main.configFile.dungeonESP) return;
+ if (event.entity instanceof EntityPlayer) {
+ String name = event.entity.getName();
+ switch (name) {
+ case "Shadow Assassin":
+ event.entity.setInvisible(false);
+ highlightEntity(event.entity, Color.MAGENTA);
+ break;
+
+ case "Lost Adventurer":
+ highlightEntity(event.entity, Color.BLUE);
+ break;
+
+ case "Diamond Guy":
+ highlightEntity(event.entity, Color.CYAN);
+ break;
+ }
+ }
+ if (event.entity instanceof EntityBat) {
+ highlightEntity(event.entity, Color.RED);
+ }
+ }
+
+ @SubscribeEvent
+ public void onRenderEntityLiving(RenderLivingEntityEvent event) {
+ 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 (!possibleEntities.isEmpty()) {
+ highlightEntity(possibleEntities.get(0), Color.ORANGE);
+ }
+ checkedStarNameTags.add(event.entity);
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void onRenderWorld(RenderWorldLastEvent event) {
+ if(ScoreboardUtils.inDungeon && Main.configFile.dungeonESP) {
+ Main.mc.theWorld.loadedEntityList.forEach(entity -> {
+ if(highlightedEntities.containsKey(entity)) {
+ RenderUtils.drawEntityBox(entity, highlightedEntities.get(entity), Main.configFile.lineWidth, event.partialTicks);
+ }
+ });
+ }
+ }
+
+ @SubscribeEvent
+ public void onWorldLoad(WorldEvent.Load event) {
+ highlightedEntities.clear();
+ checkedStarNameTags.clear();
+ }
+}