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

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Сен 2025
Сообщения
30
Реакции
1
Выберите загрузчик игры
  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);
    }
}
НАКОНЕЦ Хоть кто то это сделал Ты лучший
 
Вы дождались этой легендарной функции..
я ее делал типо 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 перенесешь запащу, мне лень переносить
 

Похожие темы

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