From 7703819d0b252f9d209d378176a225f561c1f90b Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 14 Apr 2019 01:17:20 +0800 Subject: Fix #58 + Bump Version --- .../me/shedaniel/rei/RoughlyEnoughItemsCore.java | 9 ++--- .../shedaniel/rei/gui/ContainerScreenOverlay.java | 38 ++++++++-------------- .../me/shedaniel/rei/gui/RecipeViewingScreen.java | 10 ++---- .../rei/gui/widget/ClickableLabelWidget.java | 30 ++++++++++------- 4 files changed, 39 insertions(+), 48 deletions(-) (limited to 'src/main/java/me') diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 1a30a8ba7..46d14625a 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -6,7 +6,6 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.cloth.hooks.ClothClientHooks; -import me.shedaniel.cloth.hooks.ScreenHooks; import me.shedaniel.rei.api.*; import me.shedaniel.rei.client.ConfigManager; import me.shedaniel.rei.client.*; @@ -213,11 +212,9 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer { ScreenHelper.getLastOverlay().lateRender(i, i1, v); }); ClothClientHooks.SCREEN_KEY_PRESSED.register((minecraftClient, screen, i, i1, i2) -> { - if (screen instanceof CreativePlayerInventoryScreen && screen.getFocused() != null && screen.getFocused() instanceof TextFieldWidget && ((CreativePlayerInventoryScreenHooks) screen).rei_getSelectedTab() == ItemGroup.SEARCH.getIndex()) - for(Element element : ((ScreenHooks) screen).cloth_getInputListeners()) - if (element instanceof TextFieldWidget) - if (screen.getFocused() == element && ((TextFieldWidget) element).isFocused()) - return ActionResult.PASS; + if (screen instanceof CreativePlayerInventoryScreen && ((CreativePlayerInventoryScreenHooks) screen).rei_getSelectedTab() == ItemGroup.SEARCH.getIndex()) + if (screen.getFocused() != null && screen.getFocused() instanceof TextFieldWidget && ((TextFieldWidget) screen.getFocused()).isFocused()) + return ActionResult.PASS; if (screen instanceof ContainerScreen) if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2)) return ActionResult.SUCCESS; diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java index e3a71b4ae..22b3a5dba 100644 --- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java +++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java @@ -25,8 +25,10 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.world.GameMode; import java.awt.*; -import java.util.*; +import java.util.LinkedList; import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; public class ContainerScreenOverlay extends AbstractParentElement implements Drawable { @@ -98,10 +100,10 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra return false; } }); - + if (setPage) page = MathHelper.clamp(page, 0, getTotalPage()); - + widgets.add(new ButtonWidget(RoughlyEnoughItemsCore.getConfigManager().getConfig().mirrorItemPanel ? window.getScaledWidth() - 30 : 10, 10, 20, 20, "") { @Override public void onPressed() { @@ -188,7 +190,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } }); } - widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "") { + widgets.add(new ClickableLabelWidget(rectangle.x + (rectangle.width / 2), rectangle.y + 10, "", getTotalPage() > 0) { @Override public void render(int mouseX, int mouseY, float delta) { page = MathHelper.clamp(page, 0, getTotalPage()); @@ -213,6 +215,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra return false; } }); + buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; if (ScreenHelper.searchField == null) ScreenHelper.searchField = new SearchFieldWidget(0, 0, 0, 0); ScreenHelper.searchField.setChangedListener(s -> { @@ -342,7 +345,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra GuiLighting.disable(); GlStateManager.disableLighting(); int int_3 = 0; - for (String string_1 : list_1) { + for(String string_1 : list_1) { int int_4 = font.getStringWidth(string_1); if (int_4 > int_3) int_3 = int_4; @@ -384,21 +387,10 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra } private boolean hasSameListContent(List list1, List list2) { - list1.sort((itemStack, t1) -> - ItemListOverlay.tryGetItemStackName(itemStack).compareToIgnoreCase(ItemListOverlay.tryGetItemStackName(t1)) - ); - - list2.sort((itemStack, t1) -> - ItemListOverlay.tryGetItemStackName(itemStack).compareToIgnoreCase(ItemListOverlay.tryGetItemStackName(t1)) - ); - - String lastString = list1.stream().map( - ItemListOverlay::tryGetItemStackName - ).collect(Collectors.joining("")), currentString = list2.stream().map( - ItemListOverlay::tryGetItemStackName - ).collect(Collectors.joining("")); - - return lastString.equals(currentString); + list1.sort((itemStack, t1) -> ItemListOverlay.tryGetItemStackName(itemStack).compareToIgnoreCase(ItemListOverlay.tryGetItemStackName(t1))); + list2.sort((itemStack, t1) -> ItemListOverlay.tryGetItemStackName(itemStack).compareToIgnoreCase(ItemListOverlay.tryGetItemStackName(t1))); + + return list1.stream().map(ItemListOverlay::tryGetItemStackName).collect(Collectors.joining("")).equals(list2.stream().map(ItemListOverlay::tryGetItemStackName).collect(Collectors.joining(""))); } public void addTooltip(QueuedTooltip queuedTooltip) { @@ -408,8 +400,7 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra public void renderWidgets(int int_1, int int_2, float float_1) { if (!ScreenHelper.isOverlayVisible()) return; - buttonLeft.enabled = itemListOverlay.children().size() > 0; - buttonRight.enabled = itemListOverlay.children().size() > 0; + buttonLeft.enabled = buttonRight.enabled = getTotalPage() > 0; widgets.forEach(widget -> { GuiLighting.disable(); widget.render(int_1, int_2, float_1); @@ -496,14 +487,13 @@ public class ContainerScreenOverlay extends AbstractParentElement implements Dra public boolean mouseClicked(double double_1, double double_2, int int_1) { if (!ScreenHelper.isOverlayVisible()) return false; - for(Element element : widgets) { + for(Element element : widgets) if (element.mouseClicked(double_1, double_2, int_1)) { this.setFocused(element); if (int_1 == 0) this.setDragging(true); return true; } - } return false; } diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 1bb10b0a4..5b8c319b9 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -189,7 +189,7 @@ public class RecipeViewingScreen extends Screen { return Optional.ofNullable(I18n.translate("text.rei.previous_page")); } }); - widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 23, "") { + widgets.add(new ClickableLabelWidget((int) bounds.getCenterX(), (int) bounds.getY() + 23, "", categoriesMap.get(selectedCategory).size() > getRecipesPerPageByHeight()) { @Override public void render(int mouseX, int mouseY, float delta) { this.text = String.format("%d/%d", page + 1, getTotalPages(selectedCategory)); @@ -222,9 +222,7 @@ public class RecipeViewingScreen extends Screen { return Optional.ofNullable(I18n.translate("text.rei.next_page")); } }); - int recipesPerPageByHeight = getRecipesPerPageByHeight(); - recipeBack.enabled = recipeNext.enabled = categoriesMap.get(selectedCategory).size() > recipesPerPageByHeight; - + recipeBack.enabled = recipeNext.enabled = categoriesMap.get(selectedCategory).size() > getRecipesPerPageByHeight(); for(int i = 0; i < 6; i++) { int j = i + categoryPages * 6; if (categories.size() > j) { @@ -317,9 +315,7 @@ public class RecipeViewingScreen extends Screen { fill(bounds.x + 17, bounds.y + 5, bounds.x + bounds.width - 17, bounds.y + 17, SUB_COLOR.getRGB()); fill(bounds.x + 17, bounds.y + 21, bounds.x + bounds.width - 17, bounds.y + 33, SUB_COLOR.getRGB()); } - tabs.stream().filter(tabWidget -> - !tabWidget.isSelected() - ).forEach(tabWidget -> tabWidget.render(mouseX, mouseY, delta)); + tabs.stream().filter(tabWidget -> !tabWidget.isSelected()).forEach(tabWidget -> tabWidget.render(mouseX, mouseY, delta)); GuiLighting.disable(); super.render(mouseX, mouseY, delta); widgets.forEach(widget -> { diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java index 910f4b759..4f2656557 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/ClickableLabelWidget.java @@ -9,18 +9,24 @@ public abstract class ClickableLabelWidget extends LabelWidget { public static final int hoveredColor = (new Color(102, 255, 204)).getRGB(); public boolean focused; - - public ClickableLabelWidget(int x, int y, String text) { + public boolean clickable; + + public ClickableLabelWidget(int x, int y, String text, boolean clickable) { super(x, y, text); + this.clickable = clickable; + } + + public ClickableLabelWidget(int x, int y, String text) { + this(x, y, text, true); } @Override public void render(int mouseX, int mouseY, float delta) { int colour = -1; - if (isHovered(mouseX, mouseY)) + if (clickable && isHovered(mouseX, mouseY)) colour = hoveredColor; drawCenteredString(font, (isHovered(mouseX, mouseY) ? "§n" : "") + text, x, y, colour); - if (getTooltips().isPresent()) + if (clickable && getTooltips().isPresent()) if (!focused && isHighlighted(mouseX, mouseY)) ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltips().get().split("\n"))); else if (focused) @@ -29,7 +35,7 @@ public abstract class ClickableLabelWidget extends LabelWidget { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (button == 0 && isHighlighted(mouseX, mouseY)) { + if (button == 0 && clickable && isHighlighted(mouseX, mouseY)) { onLabelClicked(); return true; } @@ -42,22 +48,24 @@ public abstract class ClickableLabelWidget extends LabelWidget { @Override public boolean keyPressed(int int_1, int int_2, int int_3) { - if (int_1 != 257 && int_1 != 32 && int_1 != 335) { + if (!clickable) return false; - } else { - this.onLabelClicked(); - return true; - } + if (int_1 != 257 && int_1 != 32 && int_1 != 335) + return false; + this.onLabelClicked(); + return true; } @Override public boolean changeFocus(boolean boolean_1) { + if (!clickable) + return false; this.focused = !this.focused; return true; } public boolean isHovered(int mouseX, int mouseY) { - return isHighlighted(mouseX, mouseY) || focused; + return clickable && (isHighlighted(mouseX, mouseY) || focused); } public abstract void onLabelClicked(); -- cgit