PlayerHeadGui.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package me.km.networking;
  2. import com.mojang.blaze3d.matrix.MatrixStack;
  3. import com.mojang.blaze3d.systems.RenderSystem;
  4. import java.util.TreeMap;
  5. import net.minecraft.client.Minecraft;
  6. import net.minecraft.client.gui.AbstractGui;
  7. import net.minecraft.client.network.play.NetworkPlayerInfo;
  8. import net.minecraft.util.ResourceLocation;
  9. import net.minecraftforge.api.distmarker.Dist;
  10. import net.minecraftforge.api.distmarker.OnlyIn;
  11. @OnlyIn(Dist.CLIENT)
  12. public class PlayerHeadGui extends AbstractGui {
  13. public final static PlayerHeadGui INSTANCE = new PlayerHeadGui(Minecraft.getInstance());
  14. private class HeadData {
  15. private final int x;
  16. private final int y;
  17. private final int scale;
  18. private final ResourceLocation rl;
  19. public HeadData(int x, int y, int scale, ResourceLocation rl) {
  20. this.x = x;
  21. this.y = y;
  22. this.scale = scale;
  23. this.rl = rl;
  24. }
  25. @SuppressWarnings("deprecation")
  26. public void paint(Minecraft mc, MatrixStack matrixStack) {
  27. RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
  28. mc.getTextureManager().bindTexture(rl);
  29. AbstractGui.blit(matrixStack, x, y, 8 * scale, 8 * scale, 8.0f, 8.0f, 8, 8, 64, 64);
  30. AbstractGui.blit(matrixStack, x, y, 8 * scale, 8 * scale, 40.0f, 8.0f, 8, 8, 64, 64);
  31. }
  32. }
  33. private final TreeMap<Integer, HeadData> data;
  34. private final Minecraft mc;
  35. public PlayerHeadGui(Minecraft mc) {
  36. this.mc = mc;
  37. this.data = new TreeMap<>();
  38. }
  39. public void add(int i, int x, int y, int scale, String name) {
  40. NetworkPlayerInfo info = this.mc.player.connection.getPlayerInfo(name);
  41. if(info != null) {
  42. data.put(i, new HeadData(x, y, scale, info.getLocationSkin()));
  43. }
  44. }
  45. public void remove(int i) {
  46. data.remove(i);
  47. }
  48. public void clear() {
  49. data.clear();
  50. }
  51. public void paint(MatrixStack matrixStack) {
  52. data.values().forEach(head -> head.paint(mc, matrixStack));
  53. }
  54. }