PlayerHeadGui.java 1.9 KB

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