/* * Copyright (C) 2014 - 2020 | Alexander01998 | All rights reserved. * * This source code is subject to the terms of the GNU General Public * License, version 3. If a copy of the GPL was not distributed with this * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt */ package net.wurstclient.altmanager; import java.io.IOException; import java.util.HashSet; import org.lwjgl.opengl.GL11; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.network.AbstractClientPlayerEntity; import net.minecraft.client.texture.PlayerSkinTexture; import net.minecraft.client.util.DefaultSkinHelper; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.Identifier; import net.wurstclient.WurstClient; public final class AltRenderer { private static final MinecraftClient mc = WurstClient.MC; private static final HashSet<String> loadedSkins = new HashSet<>(); private static void bindSkinTexture(String name) { Identifier location = AbstractClientPlayerEntity.getSkinId(name); if(loadedSkins.contains(name)) { mc.getTextureManager().bindTexture(location); return; } try { PlayerSkinTexture img = AbstractClientPlayerEntity.loadSkin(location, name); img.load(mc.getResourceManager()); }catch(IOException e) { e.printStackTrace(); } mc.getTextureManager().bindTexture(location); loadedSkins.add(name); } public static void drawAltFace(MatrixStack matrixStack, String name, int x, int y, int w, int h, boolean selected) { try { bindSkinTexture(name); GL11.glEnable(GL11.GL_BLEND); if(selected) GL11.glColor4f(1, 1, 1, 1); else GL11.glColor4f(0.9F, 0.9F, 0.9F, 1); // Face int fw = 192; int fh = 192; float u = 24; float v = 24; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Hat fw = 192; fh = 192; u = 120; v = 24; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); GL11.glDisable(GL11.GL_BLEND); }catch(Exception e) { e.printStackTrace(); } } public static void drawAltBody(MatrixStack matrixStack, String name, int x, int y, int width, int height) { try { bindSkinTexture(name); boolean slim = DefaultSkinHelper .getModel(PlayerEntity.getOfflinePlayerUuid(name)) .equals("slim"); GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(1, 1, 1, 1); // Face x = x + width / 4; y = y + 0; int w = width / 2; int h = height / 4; int fw = height * 2; int fh = height * 2; float u = height / 4; float v = height / 4; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Hat x = x + 0; y = y + 0; w = width / 2; h = height / 4; u = height / 4 * 5; v = height / 4; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Chest x = x + 0; y = y + height / 4; w = width / 2; h = height / 8 * 3; u = height / 4 * 2.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Jacket x = x + 0; y = y + 0; w = width / 2; h = height / 8 * 3; u = height / 4 * 2.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Arm x = x - width / 16 * (slim ? 3 : 4); y = y + (slim ? height / 32 : 0); w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * 5.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Sleeve x = x + 0; y = y + 0; w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * 5.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Arm x = x + width / 16 * (slim ? 11 : 12); y = y + 0; w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * 5.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Sleeve x = x + 0; y = y + 0; w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * 5.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Leg x = x - width / 2; y = y + height / 32 * (slim ? 11 : 12); w = width / 4; h = height / 8 * 3; u = height / 4 * 0.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Pants x = x + 0; y = y + 0; w = width / 4; h = height / 8 * 3; u = height / 4 * 0.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Leg x = x + width / 4; y = y + 0; w = width / 4; h = height / 8 * 3; u = height / 4 * 0.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Pants x = x + 0; y = y + 0; w = width / 4; h = height / 8 * 3; u = height / 4 * 0.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); GL11.glDisable(GL11.GL_BLEND); }catch(Exception e) { e.printStackTrace(); } } public static void drawAltBack(MatrixStack matrixStack, String name, int x, int y, int width, int height) { try { bindSkinTexture(name); boolean slim = DefaultSkinHelper .getModel(PlayerEntity.getOfflinePlayerUuid(name)) .equals("slim"); GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(1, 1, 1, 1); // Face x = x + width / 4; y = y + 0; int w = width / 2; int h = height / 4; int fw = height * 2; int fh = height * 2; float u = height / 4 * 3; float v = height / 4; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Hat x = x + 0; y = y + 0; w = width / 2; h = height / 4; u = height / 4 * 7; v = height / 4; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Chest x = x + 0; y = y + height / 4; w = width / 2; h = height / 8 * 3; u = height / 4 * 4; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Jacket x = x + 0; y = y + 0; w = width / 2; h = height / 8 * 3; u = height / 4 * 4; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Arm x = x - width / 16 * (slim ? 3 : 4); y = y + (slim ? height / 32 : 0); w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * (slim ? 6.375F : 6.5F); v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Sleeve x = x + 0; y = y + 0; w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * (slim ? 6.375F : 6.5F); v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Arm x = x + width / 16 * (slim ? 11 : 12); y = y + 0; w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * (slim ? 6.375F : 6.5F); v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Sleeve x = x + 0; y = y + 0; w = width / 16 * (slim ? 3 : 4); h = height / 8 * 3; u = height / 4 * (slim ? 6.375F : 6.5F); v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Leg x = x - width / 2; y = y + height / 32 * (slim ? 11 : 12); w = width / 4; h = height / 8 * 3; u = height / 4 * 1.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Left Pants x = x + 0; y = y + 0; w = width / 4; h = height / 8 * 3; u = height / 4 * 1.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Leg x = x + width / 4; y = y + 0; w = width / 4; h = height / 8 * 3; u = height / 4 * 1.5F; v = height / 4 * 2.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); // Right Pants x = x + 0; y = y + 0; w = width / 4; h = height / 8 * 3; u = height / 4 * 1.5F; v = height / 4 * 4.5F; DrawableHelper.drawTexture(matrixStack, x, y, u, v, w, h, fw, fh); GL11.glDisable(GL11.GL_BLEND); }catch(Exception e) { e.printStackTrace(); } } }