diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/widget')
7 files changed, 62 insertions, 240 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java index 96fbc54b3..eb6584798 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ButtonWidget.java @@ -16,32 +16,22 @@ import java.util.List; public abstract class ButtonWidget extends Drawable implements IWidget { protected static final Identifier WIDGET_TEX = new Identifier("textures/gui/widgets.png"); - public int x; - public int y; public String text; public boolean enabled; public boolean visible; - protected int width; - protected int height; protected boolean hovered; private boolean pressed; private Rectangle bounds; public ButtonWidget(Rectangle rectangle, String text) { - this(rectangle.x, rectangle.y, rectangle.width, rectangle.height, text); - } - - public ButtonWidget(int x, int y, int width, int height, String text) { - this.width = 200; - this.height = 20; + this.bounds = rectangle; this.enabled = true; this.visible = true; - this.x = x; - this.y = y; - this.width = width; - this.height = height; this.text = text; - this.bounds = new Rectangle(x, this.y, this.width, this.height); + } + + public ButtonWidget(int x, int y, int width, int height, String text) { + this(new Rectangle(x, y, width, height), text); } public Rectangle getBounds() { @@ -66,8 +56,8 @@ public abstract class ButtonWidget extends Drawable implements IWidget { @Override public void draw(int mouseX, int mouseY, float partialTicks) { - if (this.visible) { + int x = bounds.x, y = bounds.y, width = bounds.width, height = bounds.height; MinecraftClient minecraftClient_1 = MinecraftClient.getInstance(); FontRenderer fontRenderer_1 = minecraftClient_1.fontRenderer; minecraftClient_1.getTextureManager().bindTexture(WIDGET_TEX); @@ -78,18 +68,18 @@ public abstract class ButtonWidget extends Drawable implements IWidget { GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); //Four Corners - this.drawTexturedRect(this.x, this.y, 0, 46 + textureOffset * 20, 4, 4); - this.drawTexturedRect(this.x + this.width - 4, this.y, 196, 46 + textureOffset * 20, 4, 4); - this.drawTexturedRect(this.x, this.y + this.height - 4, 0, 62 + textureOffset * 20, 4, 4); - this.drawTexturedRect(this.x + this.width - 4, this.y + this.height - 4, 196, 62 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x, y, 0, 46 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x + width - 4, y, 196, 46 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x, y + height - 4, 0, 62 + textureOffset * 20, 4, 4); + this.drawTexturedRect(x + width - 4, y + height - 4, 196, 62 + textureOffset * 20, 4, 4); //Sides - this.drawTexturedRect(this.x + 4, this.y, 4, 46 + textureOffset * 20, this.width - 8, 4); - this.drawTexturedRect(this.x + 4, this.y + this.height - 4, 4, 62 + textureOffset * 20, this.width - 8, 4); + this.drawTexturedRect(x + 4, y, 4, 46 + textureOffset * 20, width - 8, 4); + this.drawTexturedRect(x + 4, y + height - 4, 4, 62 + textureOffset * 20, width - 8, 4); - for(int i = this.y + 4; i < this.y + this.height - 4; i += 4) { - this.drawTexturedRect(this.x, i, 0, 50 + textureOffset * 20, this.width / 2, MathHelper.clamp(this.y + this.height - 4 - i, 0, 4)); - this.drawTexturedRect(this.x + this.width / 2, i, 200 - this.width / 2, 50 + textureOffset * 20, this.width / 2, MathHelper.clamp(this.y + this.height - 4 - i, 0, 4)); + for(int i = y + 4; i < y + height - 4; i += 4) { + this.drawTexturedRect(x, i, 0, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); + this.drawTexturedRect(x + width / 2, i, 200 - width / 2, 50 + textureOffset * 20, width / 2, MathHelper.clamp(y + height - 4 - i, 0, 4)); } int colour = 14737632; @@ -99,7 +89,7 @@ public abstract class ButtonWidget extends Drawable implements IWidget { colour = 16777120; } - this.drawStringCentered(fontRenderer_1, this.text, this.x + this.width / 2, this.y + (this.height - 8) / 2, colour); + this.drawStringCentered(fontRenderer_1, this.text, x + width / 2, y + (height - 8) / 2, colour); } } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java deleted file mode 100644 index c43d4c12e..000000000 --- a/src/main/java/me/shedaniel/rei/gui/widget/ConfigWidget.java +++ /dev/null @@ -1,177 +0,0 @@ -package me.shedaniel.rei.gui.widget; - -import com.google.common.collect.Lists; -import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.client.REIItemListOrdering; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.GuiEventListener; -import net.minecraft.client.gui.Screen; -import net.minecraft.client.render.GuiLighting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.client.util.Window; - -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -public class ConfigWidget extends Screen { - - private List<IWidget> widgets; - private Screen parent; - - public ConfigWidget(Screen parent) { - this.parent = parent; - this.widgets = Lists.newArrayList(); - } - - @Override - public boolean keyPressed(int int_1, int int_2, int int_3) { - if (int_1 == 256 && this.doesEscapeKeyClose()) { - MinecraftClient.getInstance().openScreen(parent); - return true; - } else { - return super.keyPressed(int_1, int_2, int_3); - } - } - - @Override - protected void onInitialized() { - super.onInitialized(); - widgets.clear(); - Window window = MinecraftClient.getInstance().window; - widgets.add(new ButtonWidget(window.getScaledWidth() / 2 - 20, 30, 40, 20, "") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigHelper().setSideSearchField(!RoughlyEnoughItemsCore.getConfigHelper().sideSearchField()); - try { - RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - text = getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().sideSearchField()); - String t = I18n.translate("text.rei.side_searchbox"); - int width = fontRenderer.getStringWidth(t); - fontRenderer.drawWithShadow(t, this.x - width - 10, this.y + (this.height - 8) / 2, -1); - super.draw(mouseX, mouseY, partialTicks); - } - }); - widgets.add(new ButtonWidget(window.getScaledWidth() / 2 - 20, 60, 40, 20, "") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigHelper().setShowCraftableOnlyButton(!RoughlyEnoughItemsCore.getConfigHelper().showCraftableOnlyButton()); - try { - RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - text = getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().showCraftableOnlyButton()); - String t = I18n.translate("text.rei.enable_craftable_only"); - int width = fontRenderer.getStringWidth(t); - fontRenderer.drawWithShadow(t, this.x - width - 10, this.y + (this.height - 8) / 2, -1); - super.draw(mouseX, mouseY, partialTicks); - } - }); - widgets.add(new ButtonWidget(window.getScaledWidth() / 2 - 90, 90, 150, 20, "") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - int index = Arrays.asList(REIItemListOrdering.values()).indexOf(RoughlyEnoughItemsCore.getConfigHelper().getItemListOrdering()) + 1; - if (index >= REIItemListOrdering.values().length) { - index = 0; - RoughlyEnoughItemsCore.getConfigHelper().setAscending(!RoughlyEnoughItemsCore.getConfigHelper().isAscending()); - } - RoughlyEnoughItemsCore.getConfigHelper().setItemListOrdering(REIItemListOrdering.values()[index]); - try { - RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void draw(int int_1, int int_2, float float_1) { - GuiLighting.disable(); - this.text = I18n.translate("text.rei.list_ordering_button", I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().getItemListOrdering().getNameTranslationKey()), I18n.translate(RoughlyEnoughItemsCore.getConfigHelper().isAscending() ? "ordering.rei.ascending" : "ordering.rei.descending")); - String t = I18n.translate("text.rei.list_ordering") + ": "; - drawString(MinecraftClient.getInstance().fontRenderer, t, parent.width / 2 - 95 - MinecraftClient.getInstance().fontRenderer.getStringWidth(t), 90 + 6, -1); - super.draw(int_1, int_2, float_1); - } - }); - widgets.add(new ButtonWidget(window.getScaledWidth() / 2 - 20, 120, 40, 20, "") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigHelper().setMirrorItemPanel(!RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel()); - try { - RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - text = getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().isMirrorItemPanel()); - String t = I18n.translate("text.rei.mirror_rei"); - int width = fontRenderer.getStringWidth(t); - fontRenderer.drawWithShadow(t, this.x - width - 10, this.y + (this.height - 8) / 2, -1); - super.draw(mouseX, mouseY, partialTicks); - } - }); - widgets.add(new ButtonWidget(window.getScaledWidth() / 2 - 20, 150, 40, 20, "") { - @Override - public void onPressed(int button, double mouseX, double mouseY) { - if (button == 0) - RoughlyEnoughItemsCore.getConfigHelper().setCheckUpdates(!RoughlyEnoughItemsCore.getConfigHelper().checkUpdates()); - try { - RoughlyEnoughItemsCore.getConfigHelper().saveConfig(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void draw(int mouseX, int mouseY, float partialTicks) { - text = getTrueFalseText(RoughlyEnoughItemsCore.getConfigHelper().checkUpdates()); - String t = I18n.translate("text.rei.check_updates"); - int width = fontRenderer.getStringWidth(t); - fontRenderer.drawWithShadow(t, this.x - width - 10, this.y + (this.height - 8) / 2, -1); - super.draw(mouseX, mouseY, partialTicks); - } - }); - } - - private String getTrueFalseText(boolean showCraftableOnlyButton) { - return String.format("%s%b", showCraftableOnlyButton ? "§a" : "§c", showCraftableOnlyButton); - } - - @Override - public void draw(int int_1, int int_2, float float_1) { - drawBackground(0); - super.draw(int_1, int_2, float_1); - widgets.forEach(widget -> { - GuiLighting.disable(); - widget.draw(int_1, int_2, float_1); - }); - } - - @Override - public boolean isPauseScreen() { - return false; - } - - @Override - public List<? extends GuiEventListener> getEntries() { - return widgets; - } - -} diff --git a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java index 9e11bcee3..211f8a7f0 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/CraftableToggleButtonWidget.java @@ -21,13 +21,12 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { private ItemRenderer itemRenderer; public CraftableToggleButtonWidget(Rectangle rectangle) { - this(rectangle.x, rectangle.y, rectangle.width, rectangle.height); + super(rectangle, ""); this.itemRenderer = MinecraftClient.getInstance().getItemRenderer(); } public CraftableToggleButtonWidget(int x, int y, int width, int height) { - super(x, y, width, height, ""); - this.itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + this(new Rectangle(x, y, width, height)); } @Override @@ -36,13 +35,13 @@ public abstract class CraftableToggleButtonWidget extends ButtonWidget { GuiLighting.enableForItems(); this.itemRenderer.zOffset = 0.0F; - this.itemRenderer.renderGuiItem(new ItemStack(Blocks.CRAFTING_TABLE), x + 2, y + 2); + this.itemRenderer.renderGuiItem(new ItemStack(Blocks.CRAFTING_TABLE), getBounds().x + 2, getBounds().y + 2); this.itemRenderer.zOffset = 0.0F; GuiLighting.disable(); MinecraftClient.getInstance().getTextureManager().bindTexture(CHEST_GUI_TEXTURE); GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); this.zOffset = 100f; - this.drawTexturedRect(x, y, (56 + (RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() ? 0 : 20)), 202, 20, 20); + this.drawTexturedRect(getBounds().x, getBounds().y, (56 + (RoughlyEnoughItemsCore.getConfigHelper().craftableOnly() ? 0 : 20)), 202, 20, 20); this.zOffset = 0f; if (getBounds().contains(mouseX, mouseY)) drawTooltip(); diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java index b0de4d5f1..cb38c6941 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java @@ -20,7 +20,7 @@ import java.util.stream.Stream; public class ItemListOverlay extends Drawable implements IWidget { - private List<IWidget> widgets = new ArrayList<>(); + private List<IWidget> widgets; private int width, height, page; private Rectangle rectangle, listArea; private List<ItemStack> currentDisplayed; @@ -44,16 +44,10 @@ public class ItemListOverlay extends Drawable implements IWidget { GuiHelper.getLastOverlay().addTooltip(new QueuedTooltip(ClientHelper.getMouseLocation(), Arrays.asList(I18n.translate("text.rei.delete_items")))); } - public void updateList(int page, String searchTerm) { - updateList(rectangle, page, searchTerm); - } - public void updateList(Rectangle bounds, int page, String searchTerm) { this.rectangle = bounds; - if (ClientHelper.getItemList().isEmpty()) - RoughlyEnoughItemsCore.getClientHelper().clientLoaded(); - currentDisplayed = processSearchTerm(searchTerm, ClientHelper.getItemList(), GuiHelper.inventoryStacks); - this.widgets.clear(); + this.widgets = Lists.newLinkedList(); + currentDisplayed = processSearchTerm(searchTerm, RoughlyEnoughItemsCore.getItemRegisterer().getItemList(), GuiHelper.inventoryStacks); this.page = page; calculateListSize(rectangle); double startX = rectangle.getCenterX() - width * 9; @@ -88,7 +82,7 @@ public class ItemListOverlay extends Drawable implements IWidget { return false; } }; - if (this.rectangle.contains(slotWidget.getBounds())) + if (true || this.rectangle.contains(slotWidget.getBounds())) widgets.add(slotWidget); } } @@ -182,8 +176,8 @@ public class ItemListOverlay extends Drawable implements IWidget { private void calculateListSize(Rectangle rect) { int xOffset = 0, yOffset = 0; - this.width = 0; - this.height = 0; + width = 0; + height = 0; while (true) { xOffset += 18; if (height == 0) @@ -200,19 +194,18 @@ public class ItemListOverlay extends Drawable implements IWidget { @Override public boolean mouseClicked(double double_1, double double_2, int int_1) { - ClientPlayerEntity player = MinecraftClient.getInstance().player; - if (rectangle.contains(double_1, double_2)) + if (rectangle.contains(double_1, double_2)) { + ClientPlayerEntity player = MinecraftClient.getInstance().player; if (ClientHelper.isCheating() && !player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) { ClientHelper.sendDeletePacket(); return true; } - if (!player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) - return false; - if (onMouseClick(int_1, double_1, double_2)) - return true; - for(IWidget widget : getListeners()) - if (widget.mouseClicked(double_1, double_2, int_1)) - return true; + if (!player.inventory.getCursorStack().isEmpty() && MinecraftClient.getInstance().isInSingleplayer()) + return false; + for(IWidget widget : getListeners()) + if (widget.mouseClicked(double_1, double_2, int_1)) + return true; + } return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java index 96682565b..b747559d4 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java @@ -1,6 +1,7 @@ package me.shedaniel.rei.gui.widget; import com.google.common.collect.Lists; +import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.client.ClientHelper; import me.shedaniel.rei.client.GuiHelper; import net.minecraft.client.MinecraftClient; @@ -23,7 +24,7 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget { private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png"); private List<ItemStack> itemList = new LinkedList<>(); - private boolean drawBackground, showToolTips, clickToMoreRecipes; + private boolean drawBackground, showToolTips, clickToMoreRecipes, drawHighlightedBackground; private int x, y; public ItemSlotWidget(int x, int y, ItemStack itemStack, boolean drawBackground, boolean showToolTips) { @@ -37,6 +38,11 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget { this.x = x; this.y = y; this.clickToMoreRecipes = false; + this.drawHighlightedBackground = true; + } + + public void setDrawHighlightedBackground(boolean drawHighlightedBackground) { + this.drawHighlightedBackground = drawHighlightedBackground; } public ItemSlotWidget(int x, int y, List<ItemStack> itemList, boolean drawBackground, boolean showToolTips, boolean clickToMoreRecipes) { @@ -60,15 +66,24 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget { MinecraftClient.getInstance().getTextureManager().bindTexture(RECIPE_GUI); drawTexturedRect(this.x - 1, this.y - 1, 0, 222, 18, 18); } - if (itemStack.isEmpty()) - return; - GuiLighting.enableForItems(); - ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); - itemRenderer.zOffset = 200.0F; - itemRenderer.renderGuiItem(itemStack, x, y); - itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().fontRenderer, itemStack, x, y, getItemCountOverlay(itemStack)); - itemRenderer.zOffset = 0.0F; - if (isHighlighted(mouseX, mouseY) && showToolTips) + if (drawHighlightedBackground && isHighlighted(mouseX, mouseY)) { + GlStateManager.disableLighting(); + GlStateManager.disableDepthTest(); + GlStateManager.colorMask(true, true, true, false); + drawGradientRect(x, y, x + 16, y + 16, -2130706433, -2130706433); + GlStateManager.colorMask(true, true, true, true); + GlStateManager.enableLighting(); + GlStateManager.enableDepthTest(); + } + if (!itemStack.isEmpty()) { + GuiLighting.enableForItems(); + ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer(); + itemRenderer.zOffset = 200.0F; + itemRenderer.renderGuiItem(itemStack, x, y); + itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().fontRenderer, itemStack, x, y, getItemCountOverlay(itemStack)); + itemRenderer.zOffset = 0.0F; + } + if (!itemStack.isEmpty() && isHighlighted(mouseX, mouseY) && showToolTips) drawToolTip(itemStack); } diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidgetScreen.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidgetScreen.java index f65bfe763..d560c21ed 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidgetScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidgetScreen.java @@ -70,6 +70,7 @@ public class RecipeViewingWidgetScreen extends Screen { public boolean keyPressed(int int_1, int int_2, int int_3) { if ((int_1 == 256 || this.client.options.keyInventory.matchesKey(int_1, int_2)) && this.doesEscapeKeyClose()) { MinecraftClient.getInstance().openScreen(GuiHelper.getLastContainerScreen()); + GuiHelper.getLastOverlay().onInitialized(); return true; } for(GuiEventListener listener : listeners) @@ -230,7 +231,7 @@ public class RecipeViewingWidgetScreen extends Screen { GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F); GuiLighting.disable(); tabs.stream().filter(TabWidget::isSelected).forEach(tabWidget -> tabWidget.draw(mouseX, mouseY, partialTicks)); - GuiHelper.getLastOverlay().render(mouseX, mouseY, partialTicks); + GuiHelper.getLastOverlay().drawOverlay(mouseX, mouseY, partialTicks); } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java index 0460857cb..93690c67d 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SpeedCraftingButtonWidget.java @@ -25,6 +25,7 @@ public class SpeedCraftingButtonWidget extends ButtonWidget { @Override public void onPressed(int button, double mouseX, double mouseY) { MinecraftClient.getInstance().openScreen(GuiHelper.getLastContainerScreen()); + GuiHelper.getLastOverlay().onInitialized(); functional.performAutoCraft(GuiHelper.getLastContainerScreen(), displaySupplier.get()); } |
