CraftableToggleButtonWidget.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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.systems.RenderSystem;
  7. import me.shedaniel.math.api.Rectangle;
  8. import me.shedaniel.rei.api.ConfigManager;
  9. import net.minecraft.block.Blocks;
  10. import net.minecraft.client.MinecraftClient;
  11. import net.minecraft.client.render.item.ItemRenderer;
  12. import net.minecraft.client.resource.language.I18n;
  13. import net.minecraft.item.ItemStack;
  14. import net.minecraft.util.Identifier;
  15. import org.jetbrains.annotations.ApiStatus;
  16. import java.util.Optional;
  17. @ApiStatus.Internal
  18. public abstract class CraftableToggleButtonWidget extends ButtonWidget {
  19. public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
  20. private ItemRenderer itemRenderer;
  21. public CraftableToggleButtonWidget(Rectangle rectangle) {
  22. super(rectangle, "");
  23. this.itemRenderer = minecraft.getItemRenderer();
  24. }
  25. public CraftableToggleButtonWidget(int x, int y, int width, int height) {
  26. this(new Rectangle(x, y, width, height));
  27. }
  28. public void lateRender(int mouseX, int mouseY, float delta) {
  29. super.render(mouseX, mouseY, delta);
  30. this.itemRenderer.zOffset = getBlitOffset();
  31. Rectangle bounds = getBounds();
  32. this.itemRenderer.renderGuiItem(new ItemStack(Blocks.CRAFTING_TABLE), bounds.x + 2, bounds.y + 2);
  33. this.itemRenderer.zOffset = 0.0F;
  34. MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
  35. RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
  36. int color = ConfigManager.getInstance().isCraftableOnlyEnabled() ? 939579655 : 956235776;
  37. setBlitOffset(getBlitOffset() + 10);
  38. this.fillGradient(bounds.x + 1, bounds.y + 1, bounds.getMaxX() - 1, bounds.getMaxY() - 1, color, color);
  39. setBlitOffset(0);
  40. }
  41. @Override
  42. public void render(int mouseX, int mouseY, float delta) {
  43. }
  44. @Override
  45. public boolean changeFocus(boolean boolean_1) {
  46. return false;
  47. }
  48. @Override
  49. public Optional<String> getTooltips() {
  50. return Optional.ofNullable(I18n.translate(ConfigManager.getInstance().isCraftableOnlyEnabled() ? "text.rei.showing_craftable" : "text.rei.showing_all"));
  51. }
  52. }