From 75a5d7f52a47ad175355723fc664a22bfe5f3137 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Wed, 8 Apr 2026 08:40:33 +0200 Subject: [PATCH] 1.21.9: Fix cloaks --- .../impl/cosmetics/CloakFeatureRenderer.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/versions/1.21.9/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java b/versions/1.21.9/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java index aea5585..62f89b6 100644 --- a/versions/1.21.9/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java +++ b/versions/1.21.9/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java @@ -337,6 +337,65 @@ public class CloakFeatureRenderer extends FeatureRenderer> 4) & 0xF; + int skyLight = (light >> 20) & 0xF; + blockLight = Math.max(blockLight, minBrightness); + skyLight = Math.max(skyLight, minBrightness); + light = (skyLight << 20) | (blockLight << 4); + + matrices.push(); + + matrices.translate(0.0f, 0.0f, 0.12f); + + if (this.hasCustomModelForLayer(state.equippedChestStack, LayerType.HUMANOID)) { + matrices.translate(0.0F, -0.053125F, 0.06875F); + } + + if (state.isInSneakingPose) { + matrices.translate(0, 0.16f, 0.0f); + matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(29.0f)); + } + + long now = System.currentTimeMillis(); + if (now - lastUpdate >= 20) { + float velX = Math.min(0.6f, state.field_53537 / 108.0f); + float rawVelY = state.field_53536; + float velY = (rawVelY > 3.4f ? rawVelY : rawVelY < -3.4f ? rawVelY : 0.0f) / 16; + + float value = Math.max(0.0f, Math.min(2.0f, state.isSwimming ? 0.0f : velX + velY)); + + if (Config.cloakPhysics.value) { + updateSegmentValues(segmentValues[0] + (value - segmentValues[0]) * 0.3f); + } else { + Arrays.fill(segmentValues, segmentValues[0] + (value - segmentValues[0]) * 0.05f); + } + lastUpdate = now; + } + + final int l = light; + + queue.submitCustom(matrices, ShaderUtils.getRenderLayer(customCape), (entry, vertexConsumer) -> { + renderCape(matrices, vertexConsumer, state, l, OverlayTexture.DEFAULT_UV); + }); + + matrices.pop(); } }