PlayerHeadGui.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package me.km.networking;
  2. import java.util.TreeMap;
  3. import net.minecraft.client.Minecraft;
  4. import net.minecraft.client.gui.Gui;
  5. import net.minecraft.client.network.NetworkPlayerInfo;
  6. import net.minecraft.util.ResourceLocation;
  7. import net.minecraftforge.fml.relauncher.Side;
  8. import net.minecraftforge.fml.relauncher.SideOnly;
  9. @SideOnly(Side.CLIENT)
  10. public class PlayerHeadGui extends Gui
  11. {
  12. public final static PlayerHeadGui INSTANCE = new PlayerHeadGui(Minecraft.getMinecraft());
  13. private class HeadData
  14. {
  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. {
  21. this.x = x;
  22. this.y = y;
  23. this.scale = scale;
  24. this.rl = rl;
  25. }
  26. public void paint(Minecraft mc)
  27. {
  28. mc.getTextureManager().bindTexture(rl);
  29. Gui.drawScaledCustomSizeModalRect(x, y, 8, 8, 8, 8, 8 * scale, 8 * scale, 64.0F, 64.0F);
  30. Gui.drawScaledCustomSizeModalRect(x, y, 40, 8, 8, 8, 8 * scale, 8 * scale, 64.0F, 64.0F);
  31. }
  32. }
  33. private final TreeMap<Integer, HeadData> data;
  34. private final Minecraft mc;
  35. public PlayerHeadGui(Minecraft mc)
  36. {
  37. this.mc = mc;
  38. this.data = new TreeMap<>();
  39. }
  40. public void add(int i, int x, int y, int scale, String name)
  41. {
  42. NetworkPlayerInfo info = this.mc.player.connection.getPlayerInfo(name);
  43. if(info != null)
  44. {
  45. data.put(i, new HeadData(x, y, scale, info.getLocationSkin()));
  46. }
  47. }
  48. public void remove(int i)
  49. {
  50. data.remove(i);
  51. }
  52. public void clear()
  53. {
  54. data.clear();
  55. }
  56. public void paint()
  57. {
  58. data.values().forEach(head -> head.paint(mc));
  59. }
  60. }