TabWidget.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * Roughly Enough Items by Danielshe.
  3. * Licensed under the MIT License.
  4. */
  5. package me.shedaniel.rei.gui.widget;
  6. import com.mojang.blaze3d.platform.GlStateManager;
  7. import me.shedaniel.rei.api.ClientHelper;
  8. import me.shedaniel.rei.api.RecipeCategory;
  9. import me.shedaniel.rei.api.Renderer;
  10. import me.shedaniel.rei.client.ScreenHelper;
  11. import me.shedaniel.rei.gui.RecipeViewingScreen;
  12. import net.minecraft.client.render.GuiLighting;
  13. import net.minecraft.util.Identifier;
  14. import java.awt.*;
  15. import java.util.Collections;
  16. import java.util.List;
  17. public class TabWidget extends HighlightableWidget {
  18. public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
  19. public boolean shown = false, selected = false;
  20. public Renderer renderer;
  21. public int id;
  22. public String categoryName;
  23. public Rectangle bounds;
  24. public RecipeCategory category;
  25. public TabWidget(int id, Rectangle bounds) {
  26. this.id = id;
  27. this.bounds = bounds;
  28. }
  29. public void setRenderer(RecipeCategory category, Renderer renderable, String categoryName, boolean selected) {
  30. if (renderable == null) {
  31. shown = false;
  32. this.renderer = null;
  33. } else {
  34. shown = true;
  35. this.renderer = renderable;
  36. }
  37. this.category = category;
  38. this.selected = selected;
  39. this.categoryName = categoryName;
  40. }
  41. public boolean isSelected() {
  42. return selected;
  43. }
  44. public int getId() {
  45. return id;
  46. }
  47. public boolean isShown() {
  48. return shown;
  49. }
  50. public Renderer getRenderer() {
  51. return renderer;
  52. }
  53. @Override
  54. public List<Widget> children() {
  55. return Collections.emptyList();
  56. }
  57. @Override
  58. public void render(int mouseX, int mouseY, float delta) {
  59. if (shown) {
  60. GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
  61. GuiLighting.disable();
  62. minecraft.getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
  63. this.blit(bounds.x, bounds.y + 2, selected ? 28 : 0, 192, 28, (selected ? 30 : 27));
  64. renderer.setBlitOffset(100);
  65. renderer.render((int) bounds.getCenterX(), (int) bounds.getCenterY(), mouseX, mouseY, delta);
  66. if (isHighlighted(mouseX, mouseY))
  67. drawTooltip();
  68. }
  69. }
  70. private void drawTooltip() {
  71. if (this.minecraft.options.advancedItemTooltips)
  72. ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(categoryName, "§8" + category.getIdentifier().toString(), ClientHelper.getInstance().getFormattedModFromIdentifier(category.getIdentifier())));
  73. else
  74. ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(categoryName, ClientHelper.getInstance().getFormattedModFromIdentifier(category.getIdentifier())));
  75. }
  76. @Override
  77. public Rectangle getBounds() {
  78. return bounds;
  79. }
  80. }