diff --git a/src/main/java/serverutils/client/tab/ModernTabRenderer.java b/src/main/java/serverutils/client/tab/ModernTabRenderer.java index 78caddef..0e255e29 100644 --- a/src/main/java/serverutils/client/tab/ModernTabRenderer.java +++ b/src/main/java/serverutils/client/tab/ModernTabRenderer.java @@ -197,8 +197,13 @@ public void render(ScaledResolution resolution) { ResourceLocation skinLoc = TabSkinCache.INSTANCE.getOrLoadSkin(player.name); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(skinLoc); - Gui.func_152125_a(x, y, 8.0F, 8.0F, 8, 8, HEAD_SIZE, HEAD_SIZE, 64.0F, 32.0F); - Gui.func_152125_a(x, y, 40.0F, 8.0F, 8, 8, HEAD_SIZE, HEAD_SIZE, 64.0F, 32.0F); + // SimpleSkinBackport uploads 64x64; steve fallback is still 64x32 + int texW = GL11.glGetTexLevelParameteri(GL11.GL_TEXTURE_2D, 0, GL11.GL_TEXTURE_WIDTH); + int texH = GL11.glGetTexLevelParameteri(GL11.GL_TEXTURE_2D, 0, GL11.GL_TEXTURE_HEIGHT); + float tileW = texW >= 64 ? texW : 64.0F; + float tileH = texH >= 32 ? texH : 32.0F; + Gui.func_152125_a(x, y, 8.0F, 8.0F, 8, 8, HEAD_SIZE, HEAD_SIZE, tileW, tileH); + Gui.func_152125_a(x, y, 40.0F, 8.0F, 8, 8, HEAD_SIZE, HEAD_SIZE, tileW, tileH); textX += HEAD_PADDING; } diff --git a/src/main/java/serverutils/client/tab/TabSkinCache.java b/src/main/java/serverutils/client/tab/TabSkinCache.java index da360b91..02fab130 100644 --- a/src/main/java/serverutils/client/tab/TabSkinCache.java +++ b/src/main/java/serverutils/client/tab/TabSkinCache.java @@ -5,7 +5,9 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ResourceLocation; public class TabSkinCache { @@ -17,6 +19,18 @@ public class TabSkinCache { private TabSkinCache() {} public ResourceLocation getOrLoadSkin(String playerName) { + Minecraft mc = Minecraft.getMinecraft(); + if (mc.theWorld != null) { + EntityPlayer entity = mc.theWorld.getPlayerEntityByName(playerName); + if (entity instanceof AbstractClientPlayer acp) { + ResourceLocation live = acp.getLocationSkin(); + if (live != null) { + cache.put(playerName, live); + return live; + } + } + } + ResourceLocation loc = cache.get(playerName); if (loc == null) { loc = AbstractClientPlayer.getLocationSkin(playerName);