Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Визуальная часть PenisESP 1.16.5

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
5 Сен 2025
Сообщения
141
Реакции
5
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Выберите загрузчик игры
  1. OptiFine
Вы дождались этой легендарной функции..
я ее делал типо 3 месяца парни пж лайки моей любимой зайке.

ss -

PastaESP:
Expand Collapse Copy
package aurora.feature.impl.combat;

import aurora.events.WorldEvent;
import aurora.feature.helper.feature.Category;
import aurora.feature.helper.impl.CheckBoxSetting;
import aurora.feature.helper.impl.ColorSetting;
import aurora.feature.helper.impl.SliderSetting;
import aurora.feature.helper.main.Feature;
import aurora.feature.helper.main.FeatureAdd;
import aurora.util.visual.main.color.ColorUtils;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;

/**
make by me 12.10.2025
 */
@FeatureAdd(name = "PenisESP", type = Category.Render)
public class PenisESP extends Feature {

private final CheckBoxSetting onlyOwn = new CheckBoxSetting("Только свой", false);

private final SliderSetting penisLength = new SliderSetting("Длина", 1.5f, 0.1f, 3.0f, 0.1f);
private final SliderSetting penisThickness = new SliderSetting("Толщина", 0.07f, 0.01f, 0.3f, 0.01f);
private final SliderSetting ballSize = new SliderSetting("Размер яиц", 0.15f, 0.05f, 0.5f, 0.01f);
private final SliderSetting gradation = new SliderSetting("Градация (сглаженность)", 30f, 10f, 100f, 1f);

private final ColorSetting penisColor = new ColorSetting("Цвет", -1);
private final ColorSetting headColor = new ColorSetting("Цвет головки", -1);

public PenisESP() {
addSettings(onlyOwn, penisLength, penisThickness, ballSize, gradation, penisColor, headColor);
    }

@Subscribe
    public void onRenderWorldLast(WorldEvent e) {
        MatrixStack matrix = e.getMatrix();

for (PlayerEntity player : mc.world.getPlayers()) {
if (onlyOwn.get() && player != mc.player) continue;
            drawPenisESP(player);
        }
    }

private Vector3d interpolate(Entity entity) {
double x = entity.prevPosX + (entity.getPosX() - entity.prevPosX) * mc.getRenderPartialTicks();
double y = entity.prevPosY + (entity.getPosY() - entity.prevPosY) * mc.getRenderPartialTicks();
double z = entity.prevPosZ + (entity.getPosZ() - entity.prevPosZ) * mc.getRenderPartialTicks();
return new Vector3d(x, y, z);
    }

private void drawPenisESP(PlayerEntity player) {
EntityRendererManager rm = mc.getRenderManager();
Vector3d base = interpolate(player).subtract(rm.info.getProjectedView());

double yaw = Math.toRadians(-player.rotationYaw);
double penisLen = penisLength.get();
double penisWidth = penisThickness.get();
double balls = ballSize.get();
Vector3d basePos = base.add(0, player.getHeight() / 2.4, 0);
Vector3d forward = new Vector3d(Math.sin(yaw), 0, Math.cos(yaw));
Vector3d left = basePos.add(Math.sin(yaw - Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw - Math.PI / 2) * balls * 0.9);
Vector3d right = basePos.add(Math.sin(yaw + Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw + Math.PI / 2) * balls * 0.9);
double offset = 0.1 + (balls * 0.5);
if (offset > 0.25) offset = 0.25;
if (offset < 0.1) offset = 0.1;
Vector3d start = basePos.add(forward.scale(offset)).add(0, balls * 0.15, 0);
        Vector3d tip = start.add(forward.scale(penisLen));
drawSphere(left, balls, gradation.get().intValue(), penisColor.get(), 0);
drawSphere(right, balls, gradation.get().intValue(), penisColor.get(), 0);
drawCylinder(start, tip, penisWidth, penisColor.get());
drawSphere(tip, balls * 0.8, gradation.get().intValue(), headColor.get(), 2);
    }


private void drawSphere(Vector3d pos, double radius, int grad, int color, int stage) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

for (float alpha = 0; alpha < Math.PI; alpha += Math.PI / grad) {
for (float beta = 0; beta < 2.0 * Math.PI; beta += Math.PI / grad) {
double x1 = pos.x + (radius * Math.cos(beta) * Math.sin(alpha));
double y1 = pos.y + (radius * Math.sin(beta) * Math.sin(alpha));
double z1 = pos.z + (radius * Math.cos(alpha));

double sin = Math.sin(alpha + Math.PI / grad);
double x2 = pos.x + (radius * Math.cos(beta) * sin);
double y2 = pos.y + (radius * Math.sin(beta) * sin);
double z2 = pos.z + (radius * Math.cos(alpha + Math.PI / grad));

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1, y1, z1);
GL11.glVertex3d(x2, y2, z2);
GL11.glEnd();
            }
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void drawCylinder(Vector3d start, Vector3d end, double radius, int color) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

int slices = 20;
for (int i = 0; i < 360; i += 360 / slices) {
double a1 = Math.toRadians(i);
double a2 = Math.toRadians(i + 360 / slices);

double x1s = start.x + radius * Math.cos(a1);
double z1s = start.z + radius * Math.sin(a1);
double x2s = start.x + radius * Math.cos(a2);
double z2s = start.z + radius * Math.sin(a2);

double x1e = end.x + radius * Math.cos(a1);
double z1e = end.z + radius * Math.sin(a1);
double x2e = end.x + radius * Math.cos(a2);
double z2e = end.z + radius * Math.sin(a2);

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x2s, start.y, z2s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x2e, end.y, z2e);
GL11.glEnd();
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void setColor(int color) {
float a = (ColorUtils.getAlpha(color) / 255f);
float r = (ColorUtils.getRed(color) / 255f);
float g = (ColorUtils.getGreen(color) / 255f);
float b = (ColorUtils.getBlue(color) / 255f);
GL11.glColor4f(r, g, b, a);
    }
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это пиздец ладно про молчу бро
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вы дождались этой легендарной функции..
я ее делал типо 3 месяца парни пж лайки моей любимой зайке.

ss -

PastaESP:
Expand Collapse Copy
package aurora.feature.impl.combat;

import aurora.events.WorldEvent;
import aurora.feature.helper.feature.Category;
import aurora.feature.helper.impl.CheckBoxSetting;
import aurora.feature.helper.impl.ColorSetting;
import aurora.feature.helper.impl.SliderSetting;
import aurora.feature.helper.main.Feature;
import aurora.feature.helper.main.FeatureAdd;
import aurora.util.visual.main.color.ColorUtils;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;

/**
make by me 12.10.2025
 */
@FeatureAdd(name = "PenisESP", type = Category.Render)
public class PenisESP extends Feature {

private final CheckBoxSetting onlyOwn = new CheckBoxSetting("Только свой", false);

private final SliderSetting penisLength = new SliderSetting("Длина", 1.5f, 0.1f, 3.0f, 0.1f);
private final SliderSetting penisThickness = new SliderSetting("Толщина", 0.07f, 0.01f, 0.3f, 0.01f);
private final SliderSetting ballSize = new SliderSetting("Размер яиц", 0.15f, 0.05f, 0.5f, 0.01f);
private final SliderSetting gradation = new SliderSetting("Градация (сглаженность)", 30f, 10f, 100f, 1f);

private final ColorSetting penisColor = new ColorSetting("Цвет", -1);
private final ColorSetting headColor = new ColorSetting("Цвет головки", -1);

public PenisESP() {
addSettings(onlyOwn, penisLength, penisThickness, ballSize, gradation, penisColor, headColor);
    }

@Subscribe
    public void onRenderWorldLast(WorldEvent e) {
        MatrixStack matrix = e.getMatrix();

for (PlayerEntity player : mc.world.getPlayers()) {
if (onlyOwn.get() && player != mc.player) continue;
            drawPenisESP(player);
        }
    }

private Vector3d interpolate(Entity entity) {
double x = entity.prevPosX + (entity.getPosX() - entity.prevPosX) * mc.getRenderPartialTicks();
double y = entity.prevPosY + (entity.getPosY() - entity.prevPosY) * mc.getRenderPartialTicks();
double z = entity.prevPosZ + (entity.getPosZ() - entity.prevPosZ) * mc.getRenderPartialTicks();
return new Vector3d(x, y, z);
    }

private void drawPenisESP(PlayerEntity player) {
EntityRendererManager rm = mc.getRenderManager();
Vector3d base = interpolate(player).subtract(rm.info.getProjectedView());

double yaw = Math.toRadians(-player.rotationYaw);
double penisLen = penisLength.get();
double penisWidth = penisThickness.get();
double balls = ballSize.get();
Vector3d basePos = base.add(0, player.getHeight() / 2.4, 0);
Vector3d forward = new Vector3d(Math.sin(yaw), 0, Math.cos(yaw));
Vector3d left = basePos.add(Math.sin(yaw - Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw - Math.PI / 2) * balls * 0.9);
Vector3d right = basePos.add(Math.sin(yaw + Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw + Math.PI / 2) * balls * 0.9);
double offset = 0.1 + (balls * 0.5);
if (offset > 0.25) offset = 0.25;
if (offset < 0.1) offset = 0.1;
Vector3d start = basePos.add(forward.scale(offset)).add(0, balls * 0.15, 0);
        Vector3d tip = start.add(forward.scale(penisLen));
drawSphere(left, balls, gradation.get().intValue(), penisColor.get(), 0);
drawSphere(right, balls, gradation.get().intValue(), penisColor.get(), 0);
drawCylinder(start, tip, penisWidth, penisColor.get());
drawSphere(tip, balls * 0.8, gradation.get().intValue(), headColor.get(), 2);
    }


private void drawSphere(Vector3d pos, double radius, int grad, int color, int stage) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

for (float alpha = 0; alpha < Math.PI; alpha += Math.PI / grad) {
for (float beta = 0; beta < 2.0 * Math.PI; beta += Math.PI / grad) {
double x1 = pos.x + (radius * Math.cos(beta) * Math.sin(alpha));
double y1 = pos.y + (radius * Math.sin(beta) * Math.sin(alpha));
double z1 = pos.z + (radius * Math.cos(alpha));

double sin = Math.sin(alpha + Math.PI / grad);
double x2 = pos.x + (radius * Math.cos(beta) * sin);
double y2 = pos.y + (radius * Math.sin(beta) * sin);
double z2 = pos.z + (radius * Math.cos(alpha + Math.PI / grad));

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1, y1, z1);
GL11.glVertex3d(x2, y2, z2);
GL11.glEnd();
            }
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void drawCylinder(Vector3d start, Vector3d end, double radius, int color) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

int slices = 20;
for (int i = 0; i < 360; i += 360 / slices) {
double a1 = Math.toRadians(i);
double a2 = Math.toRadians(i + 360 / slices);

double x1s = start.x + radius * Math.cos(a1);
double z1s = start.z + radius * Math.sin(a1);
double x2s = start.x + radius * Math.cos(a2);
double z2s = start.z + radius * Math.sin(a2);

double x1e = end.x + radius * Math.cos(a1);
double z1e = end.z + radius * Math.sin(a1);
double x2e = end.x + radius * Math.cos(a2);
double z2e = end.z + radius * Math.sin(a2);

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x2s, start.y, z2s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x2e, end.y, z2e);
GL11.glEnd();
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void setColor(int color) {
float a = (ColorUtils.getAlpha(color) / 255f);
float r = (ColorUtils.getRed(color) / 255f);
float g = (ColorUtils.getGreen(color) / 255f);
float b = (ColorUtils.getBlue(color) / 255f);
GL11.glColor4f(r, g, b, a);
    }
}
НАКОНЕЦ Хоть кто то это сделал Ты лучший
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
+rep
:roflanEbalo:
 
Вы дождались этой легендарной функции..
я ее делал типо 3 месяца парни пж лайки моей любимой зайке.

ss -

PastaESP:
Expand Collapse Copy
package aurora.feature.impl.combat;

import aurora.events.WorldEvent;
import aurora.feature.helper.feature.Category;
import aurora.feature.helper.impl.CheckBoxSetting;
import aurora.feature.helper.impl.ColorSetting;
import aurora.feature.helper.impl.SliderSetting;
import aurora.feature.helper.main.Feature;
import aurora.feature.helper.main.FeatureAdd;
import aurora.util.visual.main.color.ColorUtils;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;

/**
make by me 12.10.2025
 */
@FeatureAdd(name = "PenisESP", type = Category.Render)
public class PenisESP extends Feature {

private final CheckBoxSetting onlyOwn = new CheckBoxSetting("Только свой", false);

private final SliderSetting penisLength = new SliderSetting("Длина", 1.5f, 0.1f, 3.0f, 0.1f);
private final SliderSetting penisThickness = new SliderSetting("Толщина", 0.07f, 0.01f, 0.3f, 0.01f);
private final SliderSetting ballSize = new SliderSetting("Размер яиц", 0.15f, 0.05f, 0.5f, 0.01f);
private final SliderSetting gradation = new SliderSetting("Градация (сглаженность)", 30f, 10f, 100f, 1f);

private final ColorSetting penisColor = new ColorSetting("Цвет", -1);
private final ColorSetting headColor = new ColorSetting("Цвет головки", -1);

public PenisESP() {
addSettings(onlyOwn, penisLength, penisThickness, ballSize, gradation, penisColor, headColor);
    }

@Subscribe
    public void onRenderWorldLast(WorldEvent e) {
        MatrixStack matrix = e.getMatrix();

for (PlayerEntity player : mc.world.getPlayers()) {
if (onlyOwn.get() && player != mc.player) continue;
            drawPenisESP(player);
        }
    }

private Vector3d interpolate(Entity entity) {
double x = entity.prevPosX + (entity.getPosX() - entity.prevPosX) * mc.getRenderPartialTicks();
double y = entity.prevPosY + (entity.getPosY() - entity.prevPosY) * mc.getRenderPartialTicks();
double z = entity.prevPosZ + (entity.getPosZ() - entity.prevPosZ) * mc.getRenderPartialTicks();
return new Vector3d(x, y, z);
    }

private void drawPenisESP(PlayerEntity player) {
EntityRendererManager rm = mc.getRenderManager();
Vector3d base = interpolate(player).subtract(rm.info.getProjectedView());

double yaw = Math.toRadians(-player.rotationYaw);
double penisLen = penisLength.get();
double penisWidth = penisThickness.get();
double balls = ballSize.get();
Vector3d basePos = base.add(0, player.getHeight() / 2.4, 0);
Vector3d forward = new Vector3d(Math.sin(yaw), 0, Math.cos(yaw));
Vector3d left = basePos.add(Math.sin(yaw - Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw - Math.PI / 2) * balls * 0.9);
Vector3d right = basePos.add(Math.sin(yaw + Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw + Math.PI / 2) * balls * 0.9);
double offset = 0.1 + (balls * 0.5);
if (offset > 0.25) offset = 0.25;
if (offset < 0.1) offset = 0.1;
Vector3d start = basePos.add(forward.scale(offset)).add(0, balls * 0.15, 0);
        Vector3d tip = start.add(forward.scale(penisLen));
drawSphere(left, balls, gradation.get().intValue(), penisColor.get(), 0);
drawSphere(right, balls, gradation.get().intValue(), penisColor.get(), 0);
drawCylinder(start, tip, penisWidth, penisColor.get());
drawSphere(tip, balls * 0.8, gradation.get().intValue(), headColor.get(), 2);
    }


private void drawSphere(Vector3d pos, double radius, int grad, int color, int stage) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

for (float alpha = 0; alpha < Math.PI; alpha += Math.PI / grad) {
for (float beta = 0; beta < 2.0 * Math.PI; beta += Math.PI / grad) {
double x1 = pos.x + (radius * Math.cos(beta) * Math.sin(alpha));
double y1 = pos.y + (radius * Math.sin(beta) * Math.sin(alpha));
double z1 = pos.z + (radius * Math.cos(alpha));

double sin = Math.sin(alpha + Math.PI / grad);
double x2 = pos.x + (radius * Math.cos(beta) * sin);
double y2 = pos.y + (radius * Math.sin(beta) * sin);
double z2 = pos.z + (radius * Math.cos(alpha + Math.PI / grad));

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1, y1, z1);
GL11.glVertex3d(x2, y2, z2);
GL11.glEnd();
            }
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void drawCylinder(Vector3d start, Vector3d end, double radius, int color) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

int slices = 20;
for (int i = 0; i < 360; i += 360 / slices) {
double a1 = Math.toRadians(i);
double a2 = Math.toRadians(i + 360 / slices);

double x1s = start.x + radius * Math.cos(a1);
double z1s = start.z + radius * Math.sin(a1);
double x2s = start.x + radius * Math.cos(a2);
double z2s = start.z + radius * Math.sin(a2);

double x1e = end.x + radius * Math.cos(a1);
double z1e = end.z + radius * Math.sin(a1);
double x2e = end.x + radius * Math.cos(a2);
double z2e = end.z + radius * Math.sin(a2);

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x2s, start.y, z2s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x2e, end.y, z2e);
GL11.glEnd();
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void setColor(int color) {
float a = (ColorUtils.getAlpha(color) / 255f);
float r = (ColorUtils.getRed(color) / 255f);
float g = (ColorUtils.getGreen(color) / 255f);
float b = (ColorUtils.getBlue(color) / 255f);
GL11.glColor4f(r, g, b, a);
    }
}
Спустя столько лет...
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
бог селфкода???
 
Вы дождались этой легендарной функции..
я ее делал типо 3 месяца парни пж лайки моей любимой зайке.

ss -

PastaESP:
Expand Collapse Copy
package aurora.feature.impl.combat;

import aurora.events.WorldEvent;
import aurora.feature.helper.feature.Category;
import aurora.feature.helper.impl.CheckBoxSetting;
import aurora.feature.helper.impl.ColorSetting;
import aurora.feature.helper.impl.SliderSetting;
import aurora.feature.helper.main.Feature;
import aurora.feature.helper.main.FeatureAdd;
import aurora.util.visual.main.color.ColorUtils;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;

/**
make by me 12.10.2025
 */
@FeatureAdd(name = "PenisESP", type = Category.Render)
public class PenisESP extends Feature {

private final CheckBoxSetting onlyOwn = new CheckBoxSetting("Только свой", false);

private final SliderSetting penisLength = new SliderSetting("Длина", 1.5f, 0.1f, 3.0f, 0.1f);
private final SliderSetting penisThickness = new SliderSetting("Толщина", 0.07f, 0.01f, 0.3f, 0.01f);
private final SliderSetting ballSize = new SliderSetting("Размер яиц", 0.15f, 0.05f, 0.5f, 0.01f);
private final SliderSetting gradation = new SliderSetting("Градация (сглаженность)", 30f, 10f, 100f, 1f);

private final ColorSetting penisColor = new ColorSetting("Цвет", -1);
private final ColorSetting headColor = new ColorSetting("Цвет головки", -1);

public PenisESP() {
addSettings(onlyOwn, penisLength, penisThickness, ballSize, gradation, penisColor, headColor);
    }

@Subscribe
    public void onRenderWorldLast(WorldEvent e) {
        MatrixStack matrix = e.getMatrix();

for (PlayerEntity player : mc.world.getPlayers()) {
if (onlyOwn.get() && player != mc.player) continue;
            drawPenisESP(player);
        }
    }

private Vector3d interpolate(Entity entity) {
double x = entity.prevPosX + (entity.getPosX() - entity.prevPosX) * mc.getRenderPartialTicks();
double y = entity.prevPosY + (entity.getPosY() - entity.prevPosY) * mc.getRenderPartialTicks();
double z = entity.prevPosZ + (entity.getPosZ() - entity.prevPosZ) * mc.getRenderPartialTicks();
return new Vector3d(x, y, z);
    }

private void drawPenisESP(PlayerEntity player) {
EntityRendererManager rm = mc.getRenderManager();
Vector3d base = interpolate(player).subtract(rm.info.getProjectedView());

double yaw = Math.toRadians(-player.rotationYaw);
double penisLen = penisLength.get();
double penisWidth = penisThickness.get();
double balls = ballSize.get();
Vector3d basePos = base.add(0, player.getHeight() / 2.4, 0);
Vector3d forward = new Vector3d(Math.sin(yaw), 0, Math.cos(yaw));
Vector3d left = basePos.add(Math.sin(yaw - Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw - Math.PI / 2) * balls * 0.9);
Vector3d right = basePos.add(Math.sin(yaw + Math.PI / 2) * balls * 0.9, -balls * 0.1, Math.cos(yaw + Math.PI / 2) * balls * 0.9);
double offset = 0.1 + (balls * 0.5);
if (offset > 0.25) offset = 0.25;
if (offset < 0.1) offset = 0.1;
Vector3d start = basePos.add(forward.scale(offset)).add(0, balls * 0.15, 0);
        Vector3d tip = start.add(forward.scale(penisLen));
drawSphere(left, balls, gradation.get().intValue(), penisColor.get(), 0);
drawSphere(right, balls, gradation.get().intValue(), penisColor.get(), 0);
drawCylinder(start, tip, penisWidth, penisColor.get());
drawSphere(tip, balls * 0.8, gradation.get().intValue(), headColor.get(), 2);
    }


private void drawSphere(Vector3d pos, double radius, int grad, int color, int stage) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

for (float alpha = 0; alpha < Math.PI; alpha += Math.PI / grad) {
for (float beta = 0; beta < 2.0 * Math.PI; beta += Math.PI / grad) {
double x1 = pos.x + (radius * Math.cos(beta) * Math.sin(alpha));
double y1 = pos.y + (radius * Math.sin(beta) * Math.sin(alpha));
double z1 = pos.z + (radius * Math.cos(alpha));

double sin = Math.sin(alpha + Math.PI / grad);
double x2 = pos.x + (radius * Math.cos(beta) * sin);
double y2 = pos.y + (radius * Math.sin(beta) * sin);
double z2 = pos.z + (radius * Math.cos(alpha + Math.PI / grad));

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1, y1, z1);
GL11.glVertex3d(x2, y2, z2);
GL11.glEnd();
            }
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void drawCylinder(Vector3d start, Vector3d end, double radius, int color) {
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
        setColor(color);

int slices = 20;
for (int i = 0; i < 360; i += 360 / slices) {
double a1 = Math.toRadians(i);
double a2 = Math.toRadians(i + 360 / slices);

double x1s = start.x + radius * Math.cos(a1);
double z1s = start.z + radius * Math.sin(a1);
double x2s = start.x + radius * Math.cos(a2);
double z2s = start.z + radius * Math.sin(a2);

double x1e = end.x + radius * Math.cos(a1);
double z1e = end.z + radius * Math.sin(a1);
double x2e = end.x + radius * Math.cos(a2);
double z2e = end.z + radius * Math.sin(a2);

GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x1s, start.y, z1s);
GL11.glVertex3d(x2s, start.y, z2s);
GL11.glVertex3d(x1e, end.y, z1e);
GL11.glVertex3d(x2e, end.y, z2e);
GL11.glEnd();
        }

GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
    }

private void setColor(int color) {
float a = (ColorUtils.getAlpha(color) / 255f);
float r = (ColorUtils.getRed(color) / 255f);
float g = (ColorUtils.getGreen(color) / 255f);
float b = (ColorUtils.getBlue(color) / 255f);
GL11.glColor4f(r, g, b, a);
    }
}
на экспу 3.1 перенесешь запащу, мне лень переносить
 

Похожие темы

Назад
Сверху Снизу