Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/java/myau/Myau.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ public void init() {
moduleManager.modules.put(ChestStealer.class, new ChestStealer());
moduleManager.modules.put(Eagle.class, new Eagle());
moduleManager.modules.put(ESP.class, new ESP());
moduleManager.modules.put(EggESP.class, new EggESP());
moduleManager.modules.put(FastPlace.class, new FastPlace());
moduleManager.modules.put(Freeze.class, new Freeze());
moduleManager.modules.put(Fly.class, new Fly());
Expand Down
77 changes: 53 additions & 24 deletions src/main/java/myau/module/modules/ESP.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,14 @@
import myau.mixin.IAccessorEntityRenderer;
import myau.mixin.IAccessorRenderManager;
import myau.module.Module;
import myau.property.properties.BooleanProperty;
import myau.property.properties.IntProperty;
import myau.property.properties.ModeProperty;
import myau.util.ColorUtil;
import myau.util.RenderUtil;
import myau.util.TeamUtil;
import myau.util.shader.GlowShader;
import myau.util.shader.OutlineShader;
import myau.property.properties.BooleanProperty;
import myau.property.properties.ModeProperty;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.GlStateManager;
Expand All @@ -35,49 +36,62 @@ public class ESP extends Module {
private Framebuffer framebuffer = null;
private boolean outline = true;
private boolean glow = true;
public final ModeProperty mode = new ModeProperty("mode", 2, new String[]{"NONE", "2D", "3D", "OUTLINE", "FAKECORNER", "FAKE2D"});
public final ModeProperty mode = new ModeProperty("mode", 2, new String[]{"NONE", "2D", "3D", "OUTLINE",
"FAKECORNER", "FAKE2D"});
public final ModeProperty color = new ModeProperty("color", 0, new String[]{"DEFAULT", "TEAMS", "HUD"});
public final ModeProperty healthBar = new ModeProperty("health-bar", 0, new String[]{"NONE", "2D", "RAVEN"});
public final BooleanProperty players = new BooleanProperty("players", true);
public final BooleanProperty friends = new BooleanProperty("friends", true);
public final BooleanProperty enemies = new BooleanProperty("enemies", true);
public final BooleanProperty self = new BooleanProperty("self", false);
public final BooleanProperty bots = new BooleanProperty("bots", false);
public final IntProperty healthPercentage = new IntProperty("Render Health %", 50, 0, 100);

private boolean shouldRenderPlayer(EntityPlayer entityPlayer) {
if (entityPlayer.deathTime > 0) {
return false;
} else if (mc.getRenderViewEntity().getDistanceToEntity(entityPlayer) > 512.0F) {
}
else if (mc.getRenderViewEntity().getDistanceToEntity(entityPlayer) > 512.0F) {
return false;
} else if (!entityPlayer.ignoreFrustumCheck && !RenderUtil.isInViewFrustum(entityPlayer.getEntityBoundingBox(), 0.1F)) {
}
else if (!entityPlayer.ignoreFrustumCheck && !RenderUtil.isInViewFrustum(entityPlayer.getEntityBoundingBox(),
0.1F)) {
return false;
} else if (entityPlayer != mc.thePlayer && entityPlayer != mc.getRenderViewEntity()) {
}
else if (entityPlayer != mc.thePlayer && entityPlayer != mc.getRenderViewEntity()) {
if (TeamUtil.isBot(entityPlayer)) {
return this.bots.getValue();
} else if (TeamUtil.isFriend(entityPlayer)) {
}
else if (TeamUtil.isFriend(entityPlayer)) {
return this.friends.getValue();
} else {
}
else {
return TeamUtil.isTarget(entityPlayer) ? this.enemies.getValue() : this.players.getValue();
}
} else {
}
else {
return this.self.getValue() && mc.gameSettings.thirdPersonView != 0;
}
}

private Color getEntityColor(EntityPlayer entityPlayer) {
if (TeamUtil.isFriend(entityPlayer)) {
return Myau.friendManager.getColor();
} else if (TeamUtil.isTarget(entityPlayer)) {
}
else if (TeamUtil.isTarget(entityPlayer)) {
return Myau.targetManager.getColor();
} else {
}
else {
switch (this.color.getValue()) {
case 0:
return TeamUtil.getTeamColor(entityPlayer, 1.0F);
case 1:
int teamColor = TeamUtil.isSameTeam(entityPlayer) ? ChatColors.BLUE.toAwtColor() : ChatColors.RED.toAwtColor();
int teamColor = TeamUtil.isSameTeam(entityPlayer) ? ChatColors.BLUE.toAwtColor() :
ChatColors.RED.toAwtColor();
return new Color(teamColor);
case 2:
int hudColor = ((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()).getRGB();
int hudColor =
((HUD) Myau.moduleManager.modules.get(HUD.class)).getColor(System.currentTimeMillis()).getRGB();
return new Color(hudColor);
default:
return new Color(-1);
Expand Down Expand Up @@ -108,7 +122,8 @@ public void onResize(ResizeEvent event) {
@EventTarget(Priority.HIGH)
public void onRender(Render2DEvent event) {
if (this.isEnabled() && (this.mode.getValue() == 1 || this.mode.getValue() == 3 || this.healthBar.getValue() == 1)) {
List<EntityPlayer> renderedEntities = TeamUtil.getLoadedEntitiesSorted().stream().filter(entity -> entity instanceof EntityPlayer && this.shouldRenderPlayer((EntityPlayer) entity)).map(EntityPlayer.class::cast).collect(Collectors.toList());
List<EntityPlayer> renderedEntities =
TeamUtil.getLoadedEntitiesSorted().stream().filter(entity -> entity instanceof EntityPlayer && this.shouldRenderPlayer((EntityPlayer) entity)).map(EntityPlayer.class::cast).collect(Collectors.toList());
if (!renderedEntities.isEmpty()) {
if (this.mode.getValue() == 3) {
GlStateManager.pushMatrix();
Expand Down Expand Up @@ -163,16 +178,22 @@ public void onRender(Render2DEvent event) {
float w = (float) screenPosition.w;
if (this.mode.getValue() == 1) {
int color = this.getEntityColor(player).getRGB();
RenderUtil.drawOutlineRect(x, y, z, w, 3.0F, 0, (color & 16579836) >> 2 | color & 0xFF000000);
RenderUtil.drawOutlineRect(x, y, z, w, 3.0F, 0,
(color & 16579836) >> 2 | color & 0xFF000000);
RenderUtil.drawOutlineRect(x, y, z, w, 1.5F, 0, color);
}
if (this.healthBar.getValue() == 1) {
float heal = player.getHealth() + player.getAbsorptionAmount();
float percent = Math.min(Math.max(heal / player.getMaxHealth(), 0.0F), 1.0F);
if (percent * 100 > this.healthPercentage.getValue()) {
continue;
}
float box = (z - x) * 0.08F;
Color healthColor = ColorUtil.getHealthBlend(percent);
RenderUtil.drawLine(x - box, y, x - box, w, 3.0F, ColorUtil.darker(healthColor, 0.2F).getRGB());
RenderUtil.drawLine(x - box, w, x - box, w + (y - w) * percent, 1.5F, healthColor.getRGB());
RenderUtil.drawLine(x - box, y, x - box, w, 3.0F,
ColorUtil.darker(healthColor, 0.2F).getRGB());
RenderUtil.drawLine(x - box, w, x - box, w + (y - w) * percent, 1.5F,
healthColor.getRGB());
}
}
}
Expand All @@ -187,22 +208,31 @@ public void onRender(Render2DEvent event) {
public void onRender(Render3DEvent event) {
if (this.isEnabled() && (this.mode.getValue() == 2 || this.mode.getValue() == 4 || this.mode.getValue() == 5 || this.healthBar.getValue() == 2)) {
RenderUtil.enableRenderState();
for (EntityPlayer player : TeamUtil.getLoadedEntitiesSorted().stream().filter(entity -> entity instanceof EntityPlayer && this.shouldRenderPlayer((EntityPlayer) entity)).map(EntityPlayer.class::cast).collect(Collectors.toList())) {
for (EntityPlayer player :
TeamUtil.getLoadedEntitiesSorted().stream().filter(entity -> entity instanceof EntityPlayer && this.shouldRenderPlayer((EntityPlayer) entity)).map(EntityPlayer.class::cast).collect(Collectors.toList())) {
if (player.ignoreFrustumCheck || RenderUtil.isInViewFrustum(player.getEntityBoundingBox(), 0.1F)) {
if (this.mode.getValue() == 2) {
Color color = this.getEntityColor(player);
RenderUtil.drawEntityBoundingBox(player, color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha(), 1.5F, 0.1F);
RenderUtil.drawEntityBoundingBox(player, color.getRed(), color.getGreen(), color.getBlue(),
color.getAlpha(), 1.5F, 0.1F);
GlStateManager.resetColor();
}
if (this.mode.getValue() == 4) {
Color color = this.getEntityColor(player);
RenderUtil.drawCornerESP(player, color.getRed() / 255.0F, color.getGreen() / 255.0F, color.getBlue() / 255.0F);
RenderUtil.drawCornerESP(player, color.getRed() / 255.0F, color.getGreen() / 255.0F,
color.getBlue() / 255.0F);
}
if (this.mode.getValue() == 5) {
Color color = this.getEntityColor(player);
RenderUtil.drawFake2DESP(player, color.getRed() / 255.0F, color.getGreen() / 255.0F, color.getBlue() / 255.0F);
RenderUtil.drawFake2DESP(player, color.getRed() / 255.0F, color.getGreen() / 255.0F,
color.getBlue() / 255.0F);
}
if (this.healthBar.getValue() == 2) {
float heal = player.getHealth() + player.getAbsorptionAmount();
float percent = Math.min(Math.max(heal / player.getMaxHealth(), 0.0F), 1.0F);
if (percent * 100 > this.healthPercentage.getValue()) {
continue;
}
double x = RenderUtil.lerpDouble(player.posX, player.lastTickPosX, event.getPartialTicks())
- ((IAccessorRenderManager) mc.getRenderManager()).getRenderPosX();
double y = RenderUtil.lerpDouble(player.posY, player.lastTickPosY, event.getPartialTicks())
Expand All @@ -213,11 +243,10 @@ public void onRender(Render3DEvent event) {
GlStateManager.pushMatrix();
GlStateManager.translate(x, y, z);
GlStateManager.rotate(mc.getRenderManager().playerViewY * -1.0F, 0.0F, 1.0F, 0.0F);
float heal = player.getHealth() + player.getAbsorptionAmount();
float percent = Math.min(Math.max(heal / player.getMaxHealth(), 0.0F), 1.0F);
Color healthColor = ColorUtil.getHealthBlend(percent);
float height = player.height + 0.2F;
RenderUtil.drawRect3D(0.57250005F, -0.027500002F, 0.7275F, height + 0.027500002F, Color.black.getRGB());
RenderUtil.drawRect3D(0.57250005F, -0.027500002F, 0.7275F, height + 0.027500002F,
Color.black.getRGB());
RenderUtil.drawRect3D(0.6F, 0.0F, 0.70000005F, height, Color.darkGray.getRGB());
RenderUtil.drawRect3D(0.6F, 0.0F, 0.70000005F, height * percent, healthColor.getRGB());
GlStateManager.popMatrix();
Expand Down
103 changes: 103 additions & 0 deletions src/main/java/myau/module/modules/EggESP.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
package myau.module.modules;

import myau.event.EventTarget;
import myau.event.types.EventType;
import myau.events.Render3DEvent;
import myau.events.TickEvent;
import myau.module.Module;
import myau.property.properties.BooleanProperty;
import myau.property.properties.ColorProperty;
import myau.property.properties.IntProperty;
import myau.util.RenderUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;

import java.awt.*;
import java.util.concurrent.CopyOnWriteArraySet;

public class EggESP extends Module {
private static final Minecraft mc = Minecraft.getMinecraft();

// Cache of found eggs
private final CopyOnWriteArraySet<BlockPos> eggs = new CopyOnWriteArraySet<>();

// Settings
public final IntProperty range = new IntProperty("range", 48, 8, 128);
public final IntProperty yRange = new IntProperty("y-range", 32, 8, 128);
public final BooleanProperty outline = new BooleanProperty("outline", true);
public final ColorProperty color = new ColorProperty("color", new Color(108, 0, 210).getRGB());

public EggESP() {
super("EggESP", false);
}

@EventTarget
public void onTick(TickEvent event) {
if (!this.isEnabled()) return;
if (event.getType() != EventType.POST) return;

if (mc.theWorld == null || mc.thePlayer == null) {
eggs.clear();
return;
}

// Don’t scan every tick to reduce load
// (every 10 ticks ≈ twice per second)
if (mc.thePlayer.ticksExisted % 10 != 0) return;

scanForEggs();
}

private void scanForEggs() {
eggs.clear();

BlockPos base = mc.thePlayer.getPosition();
int r = range.getValue();
int yr = yRange.getValue();

int minY = Math.max(0, base.getY() - yr);
int maxY = Math.min(255, base.getY() + yr);

for (int x = base.getX() - r; x <= base.getX() + r; x++) {
for (int z = base.getZ() - r; z <= base.getZ() + r; z++) {
for (int y = minY; y <= maxY; y++) {
BlockPos pos = new BlockPos(x, y, z);

// Avoid chunk loads / unnecessary lookups
if (!mc.theWorld.isBlockLoaded(pos, false)) continue;

if (mc.theWorld.getBlockState(pos).getBlock() == Blocks.dragon_egg) {
eggs.add(pos);
}
}
}
}
}

@EventTarget
public void onRender(Render3DEvent event) {
if (!this.isEnabled()) return;
if (mc.theWorld == null || mc.thePlayer == null) return;

Color c = new Color(color.getValue());

RenderUtil.enableRenderState();

for (BlockPos pos : eggs) {
// If egg got broken / moved, drop it from cache
if (!mc.theWorld.isBlockLoaded(pos, false) ||
mc.theWorld.getBlockState(pos).getBlock() != Blocks.dragon_egg) {
eggs.remove(pos);
continue;
}

if (outline.getValue()) {
RenderUtil.drawBlockBoundingBox(pos, 1.0, c.getRed(), c.getGreen(), c.getBlue(), 255, 1.5F);
}
RenderUtil.drawBlockBox(pos, 1.0, c.getRed(), c.getGreen(), c.getBlue());
}

RenderUtil.disableRenderState();
}
}
14 changes: 11 additions & 3 deletions src/main/java/myau/module/modules/ItemESP.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import myau.events.Render3DEvent;
import myau.mixin.IAccessorRenderManager;
import myau.module.Module;
import myau.util.RenderUtil;
import myau.util.TeamUtil;
import myau.property.properties.BooleanProperty;
import myau.property.properties.PercentProperty;
import myau.util.RenderUtil;
import myau.util.TeamUtil;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
Expand Down Expand Up @@ -36,12 +36,14 @@ public class ItemESP extends Module {
public final BooleanProperty diamonds = new BooleanProperty("diamonds", true);
public final BooleanProperty goldd = new BooleanProperty("gold", true);
public final BooleanProperty iron = new BooleanProperty("iron", true);
public final BooleanProperty nametag = new BooleanProperty("nametag", true);

private boolean shouldHighlightItem(int itemId) {
return this.emeralds.getValue() && this.isEmeraldItem(itemId)
|| this.diamonds.getValue() && this.isDiamondItem(itemId)
|| this.goldd.getValue() && this.isGoldItem(itemId)
|| this.iron.getValue() && this.isIronItem(itemId);
|| this.iron.getValue() && this.isIronItem(itemId)
|| this.nametag.getValue() && this.isNametagItem(itemId);
}

private boolean isEmeraldItem(int itemId) {
Expand Down Expand Up @@ -79,6 +81,12 @@ private boolean isIronItem(int itemId) {
return item == Items.iron_ingot || block == Blocks.iron_block || block == Blocks.iron_ore;
}

private boolean isNametagItem(int itemId) {
Item item = Item.getItemById(itemId);
Block block = Block.getBlockFromItem(item);
return item == Items.name_tag;
}

private Color getItemColor(int itemId) {
if (this.isEmeraldItem(itemId)) {
return new Color(ChatColors.GREEN.toAwtColor());
Expand Down
Loading