ItemStackDisplayGui.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package me.km.networking;
  2. import com.mojang.blaze3d.matrix.MatrixStack;
  3. import com.mojang.blaze3d.systems.RenderSystem;
  4. import me.km.utils.ClientReflectionUtils;
  5. import me.km.utils.Mapper;
  6. import net.minecraft.client.Minecraft;
  7. import net.minecraft.client.gui.AbstractGui;
  8. import net.minecraft.client.renderer.ItemRenderer;
  9. import net.minecraft.item.Item;
  10. import net.minecraft.item.ItemStack;
  11. import net.minecraft.util.ResourceLocation;
  12. import net.minecraftforge.api.distmarker.Dist;
  13. import net.minecraftforge.api.distmarker.OnlyIn;
  14. @OnlyIn(Dist.CLIENT)
  15. public class ItemStackDisplayGui extends AbstractGui {
  16. private static final ResourceLocation WIDGETS_TEX_PATH = new ResourceLocation("textures/gui/widgets.png");
  17. public final static ItemStackDisplayGui INSTANCE = new ItemStackDisplayGui(Minecraft.getInstance());
  18. private final Minecraft mc;
  19. private final ItemStack[] icons = new ItemStack[9];
  20. private boolean inactive = true;
  21. public ItemStackDisplayGui(Minecraft mc) {
  22. this.mc = mc;
  23. for(int i = 0; i < icons.length; i++) {
  24. icons[i] = ItemStack.EMPTY;
  25. }
  26. }
  27. public void setActive(boolean active) {
  28. this.inactive = !active;
  29. }
  30. public void setIcon(int index, String name) {
  31. if(index >= 0 && index < 9) {
  32. Item item = Mapper.getItem(name);
  33. if(item != null) {
  34. icons[index] = new ItemStack(item);
  35. }
  36. }
  37. }
  38. public final void clear() {
  39. for(int i = 0; i < icons.length; i++) {
  40. icons[i] = ItemStack.EMPTY;
  41. }
  42. }
  43. public void paint(MatrixStack matrixStack, KeyManager km) {
  44. if(inactive) {
  45. return;
  46. }
  47. int screenWidth = (mc.getMainWindow().getScaledWidth() >> 1) - 91;
  48. int y = 0;
  49. if(ClientReflectionUtils.isRenderingBossBar()) {
  50. y += 20;
  51. }
  52. RenderSystem.enableBlend();
  53. RenderSystem.color4f(1.0f, 1.0f, 1.0f, 1.0f);
  54. mc.getTextureManager().bindTexture(WIDGETS_TEX_PATH);
  55. int oldBlitOffset = this.getBlitOffset();
  56. setBlitOffset(-90);
  57. blit(matrixStack, screenWidth, y, 0, 0, 182, 22);
  58. setBlitOffset(oldBlitOffset);
  59. y += 3;
  60. ItemRenderer ir = mc.getItemRenderer();
  61. int i = 0;
  62. for(int x = 3; x < 164; x += 20) {
  63. if(!icons[i].isEmpty()) {
  64. ir.renderItemAndEffectIntoGUI(mc.player, icons[i], screenWidth + x, y);
  65. ir.renderItemOverlayIntoGUI(this.mc.fontRenderer, icons[i], screenWidth + x, y, km.getKeyDescription(i));
  66. }
  67. i++;
  68. }
  69. RenderSystem.disableBlend();
  70. }
  71. }