diff --git a/common b/common index 2969a83..9064238 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 2969a8340aa4fd893c5c751509a822fea57cf4f3 +Subproject commit 9064238c3a421ef11bd5045e98502c9a63aea484 diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java index 86cfd8b..cbe509f 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java @@ -5,9 +5,9 @@ import java.util.Arrays; import org.saturnclient.client.player.SaturnPlayer; import org.saturnclient.config.Config; import org.saturnclient.cosmetics.Cloaks; +import org.saturnclient.impl.cosmetics.utils.ShaderUtils; import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.equipment.EquipmentModel; @@ -283,7 +283,7 @@ public class CloakFeatureRenderer extends FeatureRenderer= 20) { - float velX = Math.min(1.0f, playerEntityRenderState.field_53537 / 108.0f); + float velX = Math.min(0.6f, playerEntityRenderState.field_53537 / 108.0f); float rawVelY = playerEntityRenderState.field_53536; - float velY = (rawVelY > 4.0f ? rawVelY : 0.0f) / 16; + float velY = (rawVelY > 3.4f ? rawVelY : 0.0f) / 16; float value = playerEntityRenderState.isSwimming ? 0.0f : velX + velY; if (Config.cloakPhysics.value) { - updateSegmentValues(value); + updateSegmentValues(segmentValues[0] + (value - segmentValues[0]) * 0.3f); } else { - float last = segmentValues[0]; - float maxStep = 0.02f; - float next = value; - - if (next > last) - next = Math.min(next, last + maxStep); - else if (next < last) - next = Math.max(next, last - maxStep); - - Arrays.fill(segmentValues, next); + Arrays.fill(segmentValues, segmentValues[0] + (value - segmentValues[0]) * 0.05f); } lastUpdate = now; } diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/obj/ObjRenderer.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/obj/ObjRenderer.java index 27635a2..896910d 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/obj/ObjRenderer.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/obj/ObjRenderer.java @@ -4,16 +4,18 @@ import java.io.IOException; import java.io.InputStream; import java.util.Map; +import org.saturnclient.impl.cosmetics.utils.ShaderUtils; + import de.javagl.obj.*; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; public class ObjRenderer { + public static Obj loadObj(Identifier objId) throws IOException { try (InputStream is = MinecraftClient.getInstance().getResourceManager() .getResource(objId).get().getInputStream()) { @@ -39,8 +41,6 @@ public class ObjRenderer { if (mtl != null) { String mapKd = mtl.getMapKd(); if (mapKd != null) { - // "#key" references are not resolvable at runtime without a texture map, - // so we only support direct resource location strings here if (!mapKd.startsWith("#")) { texture = Identifier.of(mapKd); } @@ -58,7 +58,7 @@ public class ObjRenderer { } } - VertexConsumer consumer = vertexConsumers.getBuffer(RenderLayer.getEntityAlpha(texture)); + VertexConsumer consumer = vertexConsumers.getBuffer(ShaderUtils.getRenderLayer(texture)); int faces = groupObj.getNumFaces(); final float fr = r, fg = g, fb = b; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java b/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java new file mode 100644 index 0000000..1375ae3 --- /dev/null +++ b/versions/1.21.4/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java @@ -0,0 +1,35 @@ +package org.saturnclient.impl.cosmetics.utils; + +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.RenderPhase; +import net.minecraft.client.render.VertexFormat.DrawMode; +import net.minecraft.client.render.VertexFormats; +import net.minecraft.client.render.RenderPhase.Textures; +import net.minecraft.client.render.block.entity.EndPortalBlockEntityRenderer; +import net.minecraft.util.Identifier; + +public class ShaderUtils { + public static final RenderLayer END_GATEWAY = RenderLayer.of( + "end_gateway_no_cull", + VertexFormats.POSITION, + DrawMode.QUADS, + 1536, + false, + false, + RenderLayer.MultiPhaseParameters.builder() + .program(RenderLayer.END_GATEWAY_PROGRAM) + .texture(Textures.create() + .add(EndPortalBlockEntityRenderer.SKY_TEXTURE, false, false) + .add(EndPortalBlockEntityRenderer.PORTAL_TEXTURE, false, false) + .build()) + .cull(RenderPhase.DISABLE_CULLING) + .build(false)); + + public static RenderLayer getRenderLayer(Identifier texture) { + if (texture.getPath().endsWith("end.png")) { + return END_GATEWAY; + } else { + return RenderLayer.getEntityAlpha(texture); + } + } +}