Начинающий
- Статус
- Оффлайн
- Регистрация
- 17 Дек 2025
- Сообщения
- 54
- Реакции
- 1
- Выберите загрузчик игры
- Fabric
эти кристаллы @Sanch3zs у мя были 2 ошибки вот зафиксил мб кому надо будет возьмет первая тема
Код:
private void renderCrystals(EventRender3D event) {
float alpha = this.animationProgress;
if (alpha <= 0.0F) return;
LivingEntity entityToRender = this.target != null ? this.target : this.lastTarget;
if (entityToRender == null) return;
float easedAnim = easeOutCubic(alpha);
float tickDelta = mc.getRenderTickCounter().getTickDelta(true);
Camera camera = mc.getEntityRenderDispatcher().camera;
Vec3d targetPos = MathUtil.interpolate(entityToRender);
Vec3d cameraPos = camera.getPos();
Vec3d renderPos = targetPos.subtract(cameraPos);
float time = (mc.player.age + tickDelta) * 6.0f;
float entityHeight = entityToRender.getHeight();
float entityWidth = entityToRender.getWidth();
float halfWidth = entityWidth * 0.5f;
int baseColor = getThemeColor();
MatrixStack matrices = event.getMatrix();
matrices.push();
matrices.translate(renderPos.x, renderPos.y, renderPos.z);
RenderSystem.enableBlend();
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
RenderSystem.disableCull();
if (throughWalls.isEnabled()) {
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
} else {
RenderSystem.enableDepthTest();
RenderSystem.depthMask(false);
}
int crystalCount = 14;
for (int i = 0; i < crystalCount; i++) {
float seed1 = (float) Math.sin(i * 1.7f + 0.3f) * 0.5f + 0.5f;
float seed2 = (float) Math.cos(i * 2.3f + 0.7f) * 0.5f + 0.5f;
float seed3 = (float) Math.sin(i * 3.1f + 1.1f) * 0.5f + 0.5f;
float angleOffset = i * (360f / crystalCount) + seed1 * 12f;
float angle = time + angleOffset;
float radius = halfWidth + 0.25f + seed3 * 0.15f;
float x = radius * (float) Math.cos(Math.toRadians(angle));
float z = radius * (float) Math.sin(Math.toRadians(angle));
float y = seed2 * entityHeight;
float crystalScale = 0.18f * easedAnim;
drawCrystalB(matrices, camera, x, y, z, crystalScale * 3.6f, baseColor, alpha * 0.3f);
}
RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
RenderSystem.setShader(ShaderProgramKeys.POSITION_COLOR);
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder buffer = tessellator.begin(VertexFormat.DrawMode.TRIANGLES, VertexFormats.POSITION_COLOR);
for (int i = 0; i < crystalCount; i++) {
float seed1 = (float) Math.sin(i * 1.7f + 0.3f) * 0.5f + 0.5f;
float seed2 = (float) Math.cos(i * 2.3f + 0.7f) * 0.5f + 0.5f;
float seed3 = (float) Math.sin(i * 3.1f + 1.1f) * 0.5f + 0.5f;
float angleOffset = i * (360f / crystalCount) + seed1 * 12f;
float angle = time + angleOffset;
float radius = halfWidth + 0.25f + seed3 * 0.15f;
float x = radius * (float) Math.cos(Math.toRadians(angle));
float z = radius * (float) Math.sin(Math.toRadians(angle));
float y = seed2 * entityHeight;
float crystalScale = 0.18f * easedAnim;
float dirAngle = angle;
drawCrystalH(buffer, matrices, x, y, z, crystalScale, dirAngle, baseColor, alpha * 0.7f);
}
BufferRenderer.drawWithGlobalProgram(buffer.end());
matrices.pop();
RenderSystem.enableCull();
RenderSystem.depthMask(true);
RenderSystem.enableDepthTest();
RenderSystem.defaultBlendFunc();
RenderSystem.disableBlend();
}
Последнее редактирование:

