diff --git a/common b/common index ca42b00..2b61942 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit ca42b0006766f5a0919dba141b2a4516d546d870 +Subproject commit 2b6194223afa1de47c79b50c9fca301739d701ff 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 6e414e5..e9fb196 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 @@ -3,6 +3,7 @@ package org.saturnclient.impl.cosmetics; import java.util.Arrays; import org.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.common.ref.asset.IdentifierRef; import org.saturnclient.config.Config; import org.saturnclient.cosmetics.Cloaks; import org.saturnclient.impl.cosmetics.utils.ShaderUtils; @@ -23,7 +24,6 @@ import net.minecraft.component.type.EquippableComponent; import net.minecraft.item.ItemStack; import net.minecraft.item.equipment.EquipmentAsset; import net.minecraft.registry.RegistryKey; -import net.minecraft.util.Identifier; import net.minecraft.util.math.RotationAxis; import net.minecraft.util.math.Vec3d; @@ -283,7 +283,7 @@ public class CloakFeatureRenderer extends FeatureRenderer - SaturnClient.client.getTextureManager().registerTexture(identifier, texture) - ); + SaturnClient.client.execute(() -> { + NativeImageBackedTexture texture = new NativeImageBackedTexture(nativeImage); + SaturnClient.client.getTextureManager().registerTexture(identifier, texture); + }); } catch (Exception e) { SaturnClient.LOGGER.error("Failed to register texture: {}", identifierRef, e); @@ -62,9 +61,8 @@ public class IdentifierUtils { long end = System.currentTimeMillis(); SaturnClient.LOGGER.info( - "Registered {} textures in {}ms", - textures.size(), - (end - start) - ); + "Registered {} textures in {}ms", + textures.size(), + (end - start)); } } \ No newline at end of file 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 index 1375ae3..0cb9ba9 100644 --- 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 @@ -1,5 +1,8 @@ package org.saturnclient.impl.cosmetics.utils; +import org.saturnclient.common.ref.asset.IdentifierRef; +import org.saturnclient.cosmetics.utils.GifUtils; + import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderPhase; import net.minecraft.client.render.VertexFormat.DrawMode; @@ -10,7 +13,7 @@ import net.minecraft.util.Identifier; public class ShaderUtils { public static final RenderLayer END_GATEWAY = RenderLayer.of( - "end_gateway_no_cull", + "end_gateway", VertexFormats.POSITION, DrawMode.QUADS, 1536, @@ -25,11 +28,14 @@ public class ShaderUtils { .cull(RenderPhase.DISABLE_CULLING) .build(false)); - public static RenderLayer getRenderLayer(Identifier texture) { - if (texture.getPath().endsWith("end.png")) { + public static RenderLayer getRenderLayer(IdentifierRef texture) { + String path = texture.toString(); + if (path.endsWith(".gif")) { + return RenderLayer.getEntityAlpha((Identifier) (Object) GifUtils.get(texture)); + } else if (path.endsWith("end.png")) { return END_GATEWAY; } else { - return RenderLayer.getEntityAlpha(texture); + return RenderLayer.getEntityAlpha((Identifier) (Object) texture); } } } diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java index f06d9e9..54ce803 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/CloakFeatureRenderer.java @@ -3,6 +3,7 @@ package org.saturnclient.impl.cosmetics; import java.util.Arrays; import org.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.common.ref.asset.IdentifierRef; import org.saturnclient.config.Config; import org.saturnclient.cosmetics.Cloaks; import org.saturnclient.impl.cosmetics.utils.ShaderUtils; @@ -23,7 +24,6 @@ import net.minecraft.component.type.EquippableComponent; import net.minecraft.item.ItemStack; import net.minecraft.item.equipment.EquipmentAsset; import net.minecraft.registry.RegistryKey; -import net.minecraft.util.Identifier; import net.minecraft.util.math.RotationAxis; import net.minecraft.util.math.Vec3d; @@ -283,7 +283,7 @@ public class CloakFeatureRenderer extends FeatureRenderer identifier.toString(), nativeImage); - - SaturnClient.client.execute(() -> - SaturnClient.client.getTextureManager().registerTexture(identifier, texture) - ); + SaturnClient.client.execute(() -> { + NativeImageBackedTexture texture = new NativeImageBackedTexture( + () -> identifier.toString(), + nativeImage); + + SaturnClient.client.getTextureManager().registerTexture(identifier, texture); + }); } catch (Exception e) { SaturnClient.LOGGER.error("Failed to register texture: {}", identifierRef, e); @@ -62,9 +64,8 @@ public class IdentifierUtils { long end = System.currentTimeMillis(); SaturnClient.LOGGER.info( - "Registered {} textures in {}ms", - textures.size(), - (end - start) - ); + "Registered {} textures in {}ms", + textures.size(), + (end - start)); } } \ No newline at end of file diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java index 8bc2414..9adf50d 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/cosmetics/utils/ShaderUtils.java @@ -1,14 +1,39 @@ package org.saturnclient.impl.cosmetics.utils; +import org.saturnclient.common.ref.asset.IdentifierRef; +import org.saturnclient.cosmetics.utils.GifUtils; + +import com.mojang.blaze3d.pipeline.RenderPipeline; + +import net.minecraft.client.gl.RenderPipelines; import net.minecraft.client.render.RenderLayer; +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 RenderLayer getRenderLayer(Identifier texture) { - if (texture.getPath().endsWith("end.png")) { - return RenderLayer.getEndGateway(); + public static final RenderPipeline END_GATEWAY_PIPELINE = RenderPipelines.register( + RenderPipeline.builder(new RenderPipeline.Snippet[] { RenderPipelines.RENDERTYPE_END_PORTAL_SNIPPET }) + .withLocation("pipeline/end_gateway") + .withShaderDefine("PORTAL_LAYERS", 16) + .withCull(false) + .build()); + + public static final RenderLayer END_GATEWAY = RenderLayer.of("end_gateway", 1536, false, false, + END_GATEWAY_PIPELINE, + RenderLayer.MultiPhaseParameters.builder() + .texture(Textures.create().add(EndPortalBlockEntityRenderer.SKY_TEXTURE, false, false) + .add(EndPortalBlockEntityRenderer.PORTAL_TEXTURE, false, false).build()) + .build(false)); + + public static RenderLayer getRenderLayer(IdentifierRef texture) { + String path = texture.toString(); + if (path.endsWith(".gif")) { + return RenderLayer.getEntityAlpha((Identifier) (Object) GifUtils.get(texture)); + } else if (path.endsWith("end.png")) { + return END_GATEWAY; } else { - return RenderLayer.getEntityAlpha(texture); + return RenderLayer.getEntityAlpha((Identifier) (Object) texture); } } } \ No newline at end of file diff --git a/versions/1.21.5/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java b/versions/1.21.5/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java index 5ae8f85..2823f6a 100644 --- a/versions/1.21.5/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java +++ b/versions/1.21.5/src/main/java/org/saturnclient/impl/mixins/MatrixStackMixin.java @@ -1,5 +1,4 @@ package org.saturnclient.impl.mixins; -import org.joml.Quaternionf; import org.joml.Quaternionfc; import org.saturnclient.common.ref.render.MatrixStackRef; import org.saturnclient.common.ref.render.QuaternionfRef;