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

Визуальная часть Кольцо Rockstar Skid | Zenith Recode

Сливаю вам скид кольца из рокстара/эксселента
До этого не хотел сливать, но сейчас оно мне банально уже не нравится ну и его оптимизация я бы сказал хромает
Думаю кому-то будет полезно
Мб на реке чуууть-чууть по другому выглядит, но не сильно
Пожалуйста, авторизуйтесь для просмотра ссылки.

Кольцо + Покраснение при дамаге:
Expand Collapse Copy
private void renderKolco2(EventRender3D event, float interpolatedAlpha) {
        float alpha = Math.max(this.animationProgress, interpolatedAlpha);
        if (alpha <= 0.0F) return;

        LivingEntity targetEntity = this.target != null ? this.target : this.lastTarget;
        if (targetEntity == null) return;

        Camera camera = mc.getEntityRenderDispatcher().camera;
        Vec3d renderPos = MathUtil.interpolate(targetEntity).subtract(camera.getPos());

        float entityWidth = targetEntity.getWidth() * 0.9f;
        float entityHeight = targetEntity.getHeight();
        float animationAlpha = easeOutCubic(interpolatedAlpha);

        boolean canSee = Objects.requireNonNull(mc.player).canSee(targetEntity);
        boolean useDepth = !throughWalls.isEnabled() && canSee;

        if (!throughWalls.isEnabled() && !canSee) return;

        MatrixStack matrices = event.getMatrix();

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.disableCull();

        if (useDepth) {
            RenderSystem.enableDepthTest();
            RenderSystem.depthMask(false);
        } else {
            RenderSystem.disableDepthTest();
        }

        double currentStep = MathUtil.interpolate(kolcoStep - ring2Speed, kolcoStep);
      
        double golovkaY = MathUtil.absSinAnimation(currentStep) * entityHeight;
        double tailBaseY = MathUtil.absSinAnimation(currentStep - 0.4) * entityHeight;

        float golovkaSize = 0.12f;
        float tailSize = 0.08f;

        int totalPoints = 138;
        int tailSegments = 16;
      
        long currentTime = System.currentTimeMillis();

        for (int i = 0; i < totalPoints; i++) {
            double angleRadians = 2 * Math.PI * i / totalPoints;
          
            float xOffset = (float) (Math.cos(angleRadians) * entityWidth);
            float zOffset = (float) (Math.sin(angleRadians) * entityWidth);

            int baseColor = getThemeColorAngle(i * (360 / totalPoints), currentTime);

            matrices.push();
            matrices.translate(renderPos.x + xOffset, renderPos.y + golovkaY, renderPos.z + zOffset);
            matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw()));
            matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));

            MatrixStack.Entry golovkaEntry = matrices.peek().copy();

            int coreColor = ColorUtil.multAlpha(baseColor, animationAlpha * 0.9f);
            Vector4i coreVec = new Vector4i(coreColor, coreColor, coreColor, coreColor);
            Render3DUtil.drawGlowTexture(golovkaEntry, glowTexture, -golovkaSize / 2, -golovkaSize / 2, golovkaSize, golovkaSize, coreVec, useDepth);

            matrices.pop();

            for (int t = 1; t <= tailSegments; t++) {
                float tailProgress = (float) t / (tailSegments + 1);
              
                double currentTailY = golovkaY + (tailBaseY - golovkaY) * tailProgress;
                float currentTailAlpha = animationAlpha * (1f - tailProgress) * 0.6f;

                matrices.push();
                matrices.translate(renderPos.x + xOffset, renderPos.y + currentTailY, renderPos.z + zOffset);
                matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw()));
                matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));

                MatrixStack.Entry tailEntry = matrices.peek().copy();

                int tailCoreColor = ColorUtil.multAlpha(baseColor, currentTailAlpha);
                Vector4i tailCoreVec = new Vector4i(tailCoreColor, tailCoreColor, tailCoreColor, tailCoreColor);
                Render3DUtil.drawGlowTexture(tailEntry, glowTexture, -tailSize / 2, -tailSize / 2, tailSize, tailSize, tailCoreVec, useDepth);

                matrices.pop();
            }
        }

        if (useDepth) RenderSystem.depthMask(true);
        RenderSystem.enableDepthTest();
        RenderSystem.enableCull();
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableBlend();
    }

    private int getThemeColorAngle(int offsetAngle, long currentTime) {
        int color;
        try {
            float timeFactor = (currentTime % 3000) / 3000.0f;
            int colorAngle = (int) (timeFactor * 360) + offsetAngle;
            color = Zenith.getInstance().getThemeManager().getClientColor(colorAngle % 360).getRGB();
        } catch (Exception e) {
            color = 0xFF42A5F5;
        }
        return applyDamageFlash(color);
    }

    private int applyDamageFlash(int color) {
        if (!damageRed.isEnabled()) return color;

        float targetIntensity = 0f;
        long timeSinceDamage = System.currentTimeMillis() - lastDamageTime;
      
        if (timeSinceDamage < DAMAGE_FLASH_DURATION) {
            float progress = (float) timeSinceDamage / DAMAGE_FLASH_DURATION;
            targetIntensity = 1.0f - easeOutCubic(progress);
        }

        damageFlashIntensity = MathHelper.lerp(1f, damageFlashIntensity, targetIntensity);
      
        if (damageFlashIntensity < 0.05f) return color;

        int alpha = (color >> 24) & 0xFF;
        int red = (color >> 16) & 0xFF;
        int green = (color >> 8) & 0xFF;
        int blue = color & 0xFF;

        int finalRed = (int) MathHelper.lerp(damageFlashIntensity, red, 255);
        int finalGreen = (int) MathHelper.lerp(damageFlashIntensity, green, 50);
        int finalBlue = (int) MathHelper.lerp(damageFlashIntensity, blue, 50);

        return (alpha << 24) | (finalRed << 16) | (finalGreen << 8) | finalBlue;
    }
на какой базе делаешь?
 
Сливаю вам скид кольца из рокстара/эксселента
До этого не хотел сливать, но сейчас оно мне банально уже не нравится ну и его оптимизация я бы сказал хромает
Думаю кому-то будет полезно
Мб на реке чуууть-чууть по другому выглядит, но не сильно
Пожалуйста, авторизуйтесь для просмотра ссылки.

Кольцо + Покраснение при дамаге:
Expand Collapse Copy
private void renderKolco2(EventRender3D event, float interpolatedAlpha) {
        float alpha = Math.max(this.animationProgress, interpolatedAlpha);
        if (alpha <= 0.0F) return;

        LivingEntity targetEntity = this.target != null ? this.target : this.lastTarget;
        if (targetEntity == null) return;

        Camera camera = mc.getEntityRenderDispatcher().camera;
        Vec3d renderPos = MathUtil.interpolate(targetEntity).subtract(camera.getPos());

        float entityWidth = targetEntity.getWidth() * 0.9f;
        float entityHeight = targetEntity.getHeight();
        float animationAlpha = easeOutCubic(interpolatedAlpha);

        boolean canSee = Objects.requireNonNull(mc.player).canSee(targetEntity);
        boolean useDepth = !throughWalls.isEnabled() && canSee;

        if (!throughWalls.isEnabled() && !canSee) return;

        MatrixStack matrices = event.getMatrix();

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.disableCull();

        if (useDepth) {
            RenderSystem.enableDepthTest();
            RenderSystem.depthMask(false);
        } else {
            RenderSystem.disableDepthTest();
        }

        double currentStep = MathUtil.interpolate(kolcoStep - ring2Speed, kolcoStep);
      
        double golovkaY = MathUtil.absSinAnimation(currentStep) * entityHeight;
        double tailBaseY = MathUtil.absSinAnimation(currentStep - 0.4) * entityHeight;

        float golovkaSize = 0.12f;
        float tailSize = 0.08f;

        int totalPoints = 138;
        int tailSegments = 16;
      
        long currentTime = System.currentTimeMillis();

        for (int i = 0; i < totalPoints; i++) {
            double angleRadians = 2 * Math.PI * i / totalPoints;
          
            float xOffset = (float) (Math.cos(angleRadians) * entityWidth);
            float zOffset = (float) (Math.sin(angleRadians) * entityWidth);

            int baseColor = getThemeColorAngle(i * (360 / totalPoints), currentTime);

            matrices.push();
            matrices.translate(renderPos.x + xOffset, renderPos.y + golovkaY, renderPos.z + zOffset);
            matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw()));
            matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));

            MatrixStack.Entry golovkaEntry = matrices.peek().copy();

            int coreColor = ColorUtil.multAlpha(baseColor, animationAlpha * 0.9f);
            Vector4i coreVec = new Vector4i(coreColor, coreColor, coreColor, coreColor);
            Render3DUtil.drawGlowTexture(golovkaEntry, glowTexture, -golovkaSize / 2, -golovkaSize / 2, golovkaSize, golovkaSize, coreVec, useDepth);

            matrices.pop();

            for (int t = 1; t <= tailSegments; t++) {
                float tailProgress = (float) t / (tailSegments + 1);
              
                double currentTailY = golovkaY + (tailBaseY - golovkaY) * tailProgress;
                float currentTailAlpha = animationAlpha * (1f - tailProgress) * 0.6f;

                matrices.push();
                matrices.translate(renderPos.x + xOffset, renderPos.y + currentTailY, renderPos.z + zOffset);
                matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw()));
                matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));

                MatrixStack.Entry tailEntry = matrices.peek().copy();

                int tailCoreColor = ColorUtil.multAlpha(baseColor, currentTailAlpha);
                Vector4i tailCoreVec = new Vector4i(tailCoreColor, tailCoreColor, tailCoreColor, tailCoreColor);
                Render3DUtil.drawGlowTexture(tailEntry, glowTexture, -tailSize / 2, -tailSize / 2, tailSize, tailSize, tailCoreVec, useDepth);

                matrices.pop();
            }
        }

        if (useDepth) RenderSystem.depthMask(true);
        RenderSystem.enableDepthTest();
        RenderSystem.enableCull();
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableBlend();
    }

    private int getThemeColorAngle(int offsetAngle, long currentTime) {
        int color;
        try {
            float timeFactor = (currentTime % 3000) / 3000.0f;
            int colorAngle = (int) (timeFactor * 360) + offsetAngle;
            color = Zenith.getInstance().getThemeManager().getClientColor(colorAngle % 360).getRGB();
        } catch (Exception e) {
            color = 0xFF42A5F5;
        }
        return applyDamageFlash(color);
    }

    private int applyDamageFlash(int color) {
        if (!damageRed.isEnabled()) return color;

        float targetIntensity = 0f;
        long timeSinceDamage = System.currentTimeMillis() - lastDamageTime;
      
        if (timeSinceDamage < DAMAGE_FLASH_DURATION) {
            float progress = (float) timeSinceDamage / DAMAGE_FLASH_DURATION;
            targetIntensity = 1.0f - easeOutCubic(progress);
        }

        damageFlashIntensity = MathHelper.lerp(1f, damageFlashIntensity, targetIntensity);
      
        if (damageFlashIntensity < 0.05f) return color;

        int alpha = (color >> 24) & 0xFF;
        int red = (color >> 16) & 0xFF;
        int green = (color >> 8) & 0xFF;
        int blue = color & 0xFF;

        int finalRed = (int) MathHelper.lerp(damageFlashIntensity, red, 255);
        int finalGreen = (int) MathHelper.lerp(damageFlashIntensity, green, 50);
        int finalBlue = (int) MathHelper.lerp(damageFlashIntensity, blue, 50);

        return (alpha << 24) | (finalRed << 16) | (finalGreen << 8) | finalBlue;
    }
Тупо спастил со слитого алека (старого зенита) и перенес на новый зенит
 
Сливаю вам скид кольца из рокстара/эксселента
До этого не хотел сливать, но сейчас оно мне банально уже не нравится ну и его оптимизация я бы сказал хромает
Думаю кому-то будет полезно
Мб на реке чуууть-чууть по другому выглядит, но не сильно
Пожалуйста, авторизуйтесь для просмотра ссылки.

Кольцо + Покраснение при дамаге:
Expand Collapse Copy
private void renderKolco2(EventRender3D event, float interpolatedAlpha) {
        float alpha = Math.max(this.animationProgress, interpolatedAlpha);
        if (alpha <= 0.0F) return;

        LivingEntity targetEntity = this.target != null ? this.target : this.lastTarget;
        if (targetEntity == null) return;

        Camera camera = mc.getEntityRenderDispatcher().camera;
        Vec3d renderPos = MathUtil.interpolate(targetEntity).subtract(camera.getPos());

        float entityWidth = targetEntity.getWidth() * 0.9f;
        float entityHeight = targetEntity.getHeight();
        float animationAlpha = easeOutCubic(interpolatedAlpha);

        boolean canSee = Objects.requireNonNull(mc.player).canSee(targetEntity);
        boolean useDepth = !throughWalls.isEnabled() && canSee;

        if (!throughWalls.isEnabled() && !canSee) return;

        MatrixStack matrices = event.getMatrix();

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.disableCull();

        if (useDepth) {
            RenderSystem.enableDepthTest();
            RenderSystem.depthMask(false);
        } else {
            RenderSystem.disableDepthTest();
        }

        double currentStep = MathUtil.interpolate(kolcoStep - ring2Speed, kolcoStep);
      
        double golovkaY = MathUtil.absSinAnimation(currentStep) * entityHeight;
        double tailBaseY = MathUtil.absSinAnimation(currentStep - 0.4) * entityHeight;

        float golovkaSize = 0.12f;
        float tailSize = 0.08f;

        int totalPoints = 138;
        int tailSegments = 16;
      
        long currentTime = System.currentTimeMillis();

        for (int i = 0; i < totalPoints; i++) {
            double angleRadians = 2 * Math.PI * i / totalPoints;
          
            float xOffset = (float) (Math.cos(angleRadians) * entityWidth);
            float zOffset = (float) (Math.sin(angleRadians) * entityWidth);

            int baseColor = getThemeColorAngle(i * (360 / totalPoints), currentTime);

            matrices.push();
            matrices.translate(renderPos.x + xOffset, renderPos.y + golovkaY, renderPos.z + zOffset);
            matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw()));
            matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));

            MatrixStack.Entry golovkaEntry = matrices.peek().copy();

            int coreColor = ColorUtil.multAlpha(baseColor, animationAlpha * 0.9f);
            Vector4i coreVec = new Vector4i(coreColor, coreColor, coreColor, coreColor);
            Render3DUtil.drawGlowTexture(golovkaEntry, glowTexture, -golovkaSize / 2, -golovkaSize / 2, golovkaSize, golovkaSize, coreVec, useDepth);

            matrices.pop();

            for (int t = 1; t <= tailSegments; t++) {
                float tailProgress = (float) t / (tailSegments + 1);
              
                double currentTailY = golovkaY + (tailBaseY - golovkaY) * tailProgress;
                float currentTailAlpha = animationAlpha * (1f - tailProgress) * 0.6f;

                matrices.push();
                matrices.translate(renderPos.x + xOffset, renderPos.y + currentTailY, renderPos.z + zOffset);
                matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-camera.getYaw()));
                matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));

                MatrixStack.Entry tailEntry = matrices.peek().copy();

                int tailCoreColor = ColorUtil.multAlpha(baseColor, currentTailAlpha);
                Vector4i tailCoreVec = new Vector4i(tailCoreColor, tailCoreColor, tailCoreColor, tailCoreColor);
                Render3DUtil.drawGlowTexture(tailEntry, glowTexture, -tailSize / 2, -tailSize / 2, tailSize, tailSize, tailCoreVec, useDepth);

                matrices.pop();
            }
        }

        if (useDepth) RenderSystem.depthMask(true);
        RenderSystem.enableDepthTest();
        RenderSystem.enableCull();
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableBlend();
    }

    private int getThemeColorAngle(int offsetAngle, long currentTime) {
        int color;
        try {
            float timeFactor = (currentTime % 3000) / 3000.0f;
            int colorAngle = (int) (timeFactor * 360) + offsetAngle;
            color = Zenith.getInstance().getThemeManager().getClientColor(colorAngle % 360).getRGB();
        } catch (Exception e) {
            color = 0xFF42A5F5;
        }
        return applyDamageFlash(color);
    }

    private int applyDamageFlash(int color) {
        if (!damageRed.isEnabled()) return color;

        float targetIntensity = 0f;
        long timeSinceDamage = System.currentTimeMillis() - lastDamageTime;
      
        if (timeSinceDamage < DAMAGE_FLASH_DURATION) {
            float progress = (float) timeSinceDamage / DAMAGE_FLASH_DURATION;
            targetIntensity = 1.0f - easeOutCubic(progress);
        }

        damageFlashIntensity = MathHelper.lerp(1f, damageFlashIntensity, targetIntensity);
      
        if (damageFlashIntensity < 0.05f) return color;

        int alpha = (color >> 24) & 0xFF;
        int red = (color >> 16) & 0xFF;
        int green = (color >> 8) & 0xFF;
        int blue = color & 0xFF;

        int finalRed = (int) MathHelper.lerp(damageFlashIntensity, red, 255);
        int finalGreen = (int) MathHelper.lerp(damageFlashIntensity, green, 50);
        int finalBlue = (int) MathHelper.lerp(damageFlashIntensity, blue, 50);

        return (alpha << 24) | (finalRed << 16) | (finalGreen << 8) | finalBlue;
    }
это круто
 
Назад
Сверху Снизу