From 02f6cf7d71dffdb2af79887e1664f62e1dda04db Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 27 Sep 2026 19:01:42 +0200 Subject: [PATCH] Give common the player's skin texture SaturnProvider.getPlayerSkin returns the signed-in player's skin texture, or the default skin until it loads, for the title screen's player chip. 1.21.9 moved SkinTextures and renamed the skin provider's lookup, so each side has its own version. Co-Authored-By: Claude Opus 5.5 --- .../impl/provider/SaturnProviderImpl.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java b/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java index 87dd445..fb9b976 100644 --- a/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java +++ b/src/main/java/org/saturnclient/impl/provider/SaturnProviderImpl.java @@ -2,11 +2,17 @@ package org.saturnclient.impl.provider; import java.awt.image.BufferedImage; import java.util.UUID; +import java.util.function.Supplier; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; import net.minecraft.client.toast.SystemToast; +//? if >=1.21.9 { +import net.minecraft.entity.player.SkinTextures; +//?} else +//import net.minecraft.client.util.SkinTextures; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import org.saturnclient.common.provider.SaturnProvider; import org.saturnclient.common.ref.asset.IdentifierRef; @@ -16,6 +22,9 @@ import org.saturnclient.impl.cosmetics.utils.IdentifierUtils; import org.saturnclient.saturnclient.SaturnClient; public class SaturnProviderImpl implements SaturnProvider { + /** Looks up the signed-in player's skin; made once, since the skin provider caches it */ + private Supplier playerSkin; + @Override public MinecraftClientRef getClient() { return (MinecraftClientRef) SaturnClient.client; @@ -50,6 +59,23 @@ public class SaturnProviderImpl implements SaturnProvider { /** Shown longer than the vanilla default, since these ask the player to act. */ private static final SystemToast.Type WARNING_TOAST = new SystemToast.Type(15_000L); + @Override + public IdentifierRef getPlayerSkin() { + if (playerSkin == null) { + MinecraftClient client = MinecraftClient.getInstance(); + // 1.21.9 moved SkinTextures and renamed the skin provider's lookup. + //? if >=1.21.9 { + Supplier textures = client.getSkinProvider().supplySkinTextures(client.getGameProfile(), false); + playerSkin = () -> textures.get().body().texturePath(); + //?} else { + /*Supplier textures = client.getSkinProvider().getSkinTexturesSupplier(client.getGameProfile()); + playerSkin = () -> textures.get().texture(); + *///?} + } + + return (IdentifierRef) (Object) playerSkin.get(); + } + @Override public String getModVersion() { return FabricLoader.getInstance().getModContainer(SaturnClient.MOD_ID)