CustomInventoryScreen.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package me.km.networking;
  2. import com.mojang.blaze3d.matrix.MatrixStack;
  3. import com.mojang.blaze3d.systems.RenderSystem;
  4. import me.km.KajetansMod;
  5. import me.km.inventory.CustomContainer;
  6. import me.km.inventory.ModInventory;
  7. import net.minecraft.client.gui.IHasContainer;
  8. import net.minecraft.client.gui.screen.inventory.ContainerScreen;
  9. import net.minecraft.entity.player.PlayerInventory;
  10. import net.minecraft.util.ResourceLocation;
  11. import net.minecraft.util.text.ITextComponent;
  12. import net.minecraftforge.api.distmarker.Dist;
  13. import net.minecraftforge.api.distmarker.OnlyIn;
  14. @OnlyIn(Dist.CLIENT)
  15. public class CustomInventoryScreen extends ContainerScreen<CustomContainer> implements IHasContainer<CustomContainer> {
  16. private static final ResourceLocation CHEST_GUI_TEXTURE = new ResourceLocation("textures/gui/container/generic_54.png");
  17. private static final ResourceLocation EMPTY_TILE = new ResourceLocation(KajetansMod.MODID, "textures/gui/container/empty_tile.png");
  18. private final int inventoryRows;
  19. public CustomInventoryScreen(CustomContainer cc, PlayerInventory pInv, ITextComponent title) {
  20. super(cc, pInv, title);
  21. passEvents = false;
  22. inventoryRows = cc.getInventoryBase().getRows();
  23. ySize = 114 + inventoryRows * 18;
  24. }
  25. @Override
  26. public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
  27. this.renderBackground(matrixStack);
  28. super.render(matrixStack, mouseX, mouseY, partialTicks);
  29. this.renderHoveredTooltip(matrixStack, mouseX, mouseY);
  30. }
  31. @Override
  32. protected void drawGuiContainerForegroundLayer(MatrixStack matrixStack, int x, int y) {
  33. this.font.drawString(matrixStack, title.getString(), 8.0f, 6.0f, 4210752);
  34. this.font.drawString(matrixStack, playerInventory.getDisplayName().getString(), 8.0f, ySize - 94, 4210752);
  35. }
  36. @Override
  37. protected void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, float partialTicks, int ix, int iy) {
  38. RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
  39. this.minecraft.getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
  40. int i = (width - xSize) / 2;
  41. int j = (height - ySize) / 2;
  42. blit(matrixStack, i, j, 0, 0, xSize, inventoryRows * 18 + 17);
  43. blit(matrixStack, i, j + inventoryRows * 18 + 17, 0, 126, xSize, 96);
  44. i += 7;
  45. j += 17;
  46. minecraft.getTextureManager().bindTexture(EMPTY_TILE);
  47. ModInventory base = this.getContainer().getInventoryBase();
  48. for(int x = 0; x < 9; x++) {
  49. for(int y = 0; y < inventoryRows; y++) {
  50. if(base.shouldRenderOverlay(x, y)) {
  51. blit(matrixStack, i + 18 * x, j + 18 * y, 0, 0, 18, 18, 64, 64);
  52. } else if(base.shouldRenderDarker(x, y)) {
  53. blit(matrixStack, i + 18 * x, j + 18 * y, 18, 0, 18, 18, 64, 64);
  54. }
  55. }
  56. }
  57. }
  58. /*public void blit(int startX, int startY, int tStartX, int tStartY, int width, int height)
  59. {
  60. blit(startX, startY, this.blitOffset, tStartX, tStartY, width, height, 256, 256);
  61. }
  62. public static void blit(int startX, int startY, int z, float tStartX, float tStartY, int width, int height, int rWidth, int rHeight)
  63. {
  64. innerBlit(startX, startX + width, startY, startY + height, z, width, height, tStartX, tStartY, rHeight, rWidth);
  65. }
  66. public static void blit(int minX, int minY, int width, int height, float tStartX, float tStartY, int tWidth, int tHeight, int rWidth, int rHeight)
  67. {
  68. innerBlit(minX, minX + width, minY, minY + height, 0, tWidth, tHeight, tStartX, tStartY, rWidth, rHeight);
  69. }
  70. public static void blit(int p_blit_0_, int p_blit_1_, float p_blit_2_, float p_blit_3_, int p_blit_4_, int p_blit_5_, int p_blit_6_, int p_blit_7_)
  71. {
  72. blit(p_blit_0_, p_blit_1_, p_blit_4_, p_blit_5_, p_blit_2_, p_blit_3_, p_blit_4_, p_blit_5_, p_blit_6_, p_blit_7_);
  73. }
  74. private static void innerBlit(int minX, int maxX, int minY, int maxY, int z, int tWidth, int tHight, float tStartX, float tStartY, int rWidth, int rHeight)
  75. {
  76. innerBlit(minX, maxX, minY, maxY, z,
  77. tStartX / rWidth, (tStartX + tWidth) / rWidth,
  78. tStartY / rHeight, (tStartY + tHight) / rHeight);
  79. }
  80. protected static void innerBlit(int minX, int maxX, int minY, int maxY, int z, float tMinX, float tMaxX, float tMinY, float tMaxY)
  81. {
  82. Tessellator tessellator = Tessellator.getInstance();
  83. BufferBuilder bufferbuilder = tessellator.getBuffer();
  84. bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
  85. bufferbuilder.pos(minX, maxY, z).tex(tMinX, tMaxY).endVertex();
  86. bufferbuilder.pos(maxX, maxY, z).tex(tMaxX, tMaxY).endVertex();
  87. bufferbuilder.pos(maxX, minY, z).tex(tMaxX, tMinY).endVertex();
  88. bufferbuilder.pos(minX, minY, z).tex(tMinX, tMinY).endVertex();
  89. tessellator.draw();
  90. }*/
  91. }