Начинающий
- Статус
- Оффлайн
- Регистрация
- 9 Май 2023
- Сообщения
- 193
- Реакции
- 2
- Выберите загрузчик игры
- Fabric
Сливаю вам скид кольца из рокстара/эксселента
До этого не хотел сливать, но сейчас оно мне банально уже не нравится ну и его оптимизация я бы сказал хромает
Думаю кому-то будет полезно
Мб на реке чуууть-чууть по другому выглядит, но не сильно
До этого не хотел сливать, но сейчас оно мне банально уже не нравится ну и его оптимизация я бы сказал хромает
Думаю кому-то будет полезно
Мб на реке чуууть-чууть по другому выглядит, но не сильно
Пожалуйста, авторизуйтесь для просмотра ссылки.
Кольцо + Покраснение при дамаге:
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;
}
Последнее редактирование:

