Unknown 6 年之前
父节点
当前提交
2241134523

+ 3 - 1
CHANGELOG.md

@@ -1,7 +1,9 @@
 # v2.4.0
 - Config with comments
-- Fix creative even more
+- Fix creative inventory even more
 - No longer uses Fabric internals
 - Config to disable Recipe Book
+- Fixes [Issue #27: Second page react as first page recipes](https://github.com/shedaniel/RoughlyEnoughItems/issues/27)
+
 # v2.3.2.56
 - Removed Plugin Update Checker

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-modVersion=2.4.0.59
+modVersion=2.4.0.60
 minecraftVersion=19w09a
 yarnVersion=19w09a.4
 fabricVersion=0.2.3.108

+ 0 - 1
src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java

@@ -72,7 +72,6 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer, ModInitiali
         return Optional.empty();
     }
     
-    @SuppressWarnings("deprecation")
     @Override
     public void onInitializeClient() {
         configManager = new ConfigManager();

+ 0 - 1
src/main/java/me/shedaniel/rei/client/ClientHelper.java

@@ -6,7 +6,6 @@ import me.shedaniel.rei.RoughlyEnoughItemsCore;
 import me.shedaniel.rei.api.RecipeCategory;
 import me.shedaniel.rei.api.RecipeDisplay;
 import me.shedaniel.rei.api.RecipeHelper;
-import me.shedaniel.rei.gui.ContainerScreenOverlay;
 import me.shedaniel.rei.gui.RecipeViewingScreen;
 import me.shedaniel.rei.gui.config.ConfigScreen;
 import net.fabricmc.api.ClientModInitializer;

+ 2 - 15
src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java

@@ -395,21 +395,8 @@ public class ContainerScreenOverlay extends ScreenComponent {
             return false;
         Point point = ClientHelper.getMouseLocation();
         ItemStack itemStack = null;
-        for(IWidget widget : itemListOverlay.getListeners())
-            if (widget instanceof ItemSlotWidget && ((ItemSlotWidget) widget).isHighlighted(point.x, point.y)) {
-                itemStack = ((ItemSlotWidget) widget).getCurrentStack();
-                break;
-            }
-        if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof RecipeViewingScreen) {
-            RecipeViewingScreen recipeViewingWidget = (RecipeViewingScreen) MinecraftClient.getInstance().currentScreen;
-            for(IWidget widget : recipeViewingWidget.getWidgets())
-                if (widget instanceof ItemSlotWidget && ((HighlightableWidget) widget).isHighlighted(point.x, point.y)) {
-                    itemStack = ((ItemSlotWidget) widget).getCurrentStack();
-                    break;
-                }
-        }
-        if (itemStack == null && MinecraftClient.getInstance().currentScreen instanceof ContainerScreen)
-            if (ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot() != null)
+        if (MinecraftClient.getInstance().currentScreen instanceof ContainerScreen)
+            if (ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot() != null && !ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot().getStack().isEmpty())
                 itemStack = ScreenHelper.getLastContainerScreenHooks().rei_getHoveredSlot().getStack();
         if (itemStack != null && !itemStack.isEmpty()) {
             if (ClientHelper.RECIPE.matchesKey(int_1, int_2))

+ 7 - 7
src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java

@@ -32,18 +32,18 @@ public class RecipeViewingScreen extends Screen {
     public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
     public static final Color SUB_COLOR = new Color(159, 159, 159);
     private static final Identifier CREATIVE_INVENTORY_TABS = new Identifier("textures/gui/container/creative_inventory/tabs.png");
+    private final List<IWidget> widgets;
+    private final List<TabWidget> tabs;
+    private final Map<RecipeCategory, List<RecipeDisplay>> categoriesMap;
+    private final List<RecipeCategory> categories;
     public int guiWidth;
     public int guiHeight;
     public int page, categoryPages;
     public int largestWidth, largestHeight;
     public boolean choosePageActivated;
     public RecipeChoosePageWidget recipeChoosePageWidget;
-    private List<IWidget> widgets;
-    private List<TabWidget> tabs;
     private Window window;
     private Rectangle bounds;
-    private Map<RecipeCategory, List<RecipeDisplay>> categoriesMap;
-    private List<RecipeCategory> categories;
     private RecipeCategory selectedCategory;
     private ButtonWidget recipeBack, recipeNext, categoryBack, categoryNext;
     
@@ -102,8 +102,9 @@ public class RecipeViewingScreen extends Screen {
     @Override
     public void onInitialized() {
         super.onInitialized();
+        this.listeners.clear();
         this.tabs.clear();
-        this.widgets = Lists.newLinkedList();
+        this.widgets.clear();
         this.largestWidth = window.getScaledWidth() - 100;
         this.largestHeight = window.getScaledHeight() - 40;
         this.guiWidth = MathHelper.clamp(getCurrentDisplayed().stream().map(display -> selectedCategory.getDisplayWidth(display)).max(Integer::compareTo).orElse(150) + 30, 0, largestWidth);
@@ -232,9 +233,8 @@ public class RecipeViewingScreen extends Screen {
         else
             recipeChoosePageWidget = null;
         
-        ScreenHelper.getLastOverlay().onInitialized();
         listeners.addAll(tabs);
-        listeners.add(ScreenHelper.getLastOverlay());
+        listeners.add(ScreenHelper.getLastOverlay(true));
         listeners.addAll(widgets);
     }
     

+ 13 - 3
src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java

@@ -130,13 +130,23 @@ public class ItemSlotWidget extends DrawableHelper implements HighlightableWidge
     public boolean onMouseClick(int button, double mouseX, double mouseY) {
         if (!clickToMoreRecipes)
             return false;
-        if (getBounds().contains(mouseX, mouseY)) {
-            System.out.println(ItemListOverlay.tryGetItemStackName(getCurrentStack()));
+        if (getBounds().contains(mouseX, mouseY))
             if (button == 0)
                 return ClientHelper.executeRecipeKeyBind(getCurrentStack().copy());
             else if (button == 1)
                 return ClientHelper.executeUsageKeyBind(getCurrentStack().copy());
-        }
+        return false;
+    }
+    
+    @Override
+    public boolean keyPressed(int int_1, int int_2, int int_3) {
+        if (!clickToMoreRecipes)
+            return false;
+        if (getBounds().contains(ClientHelper.getMouseLocation()))
+            if (ClientHelper.RECIPE.matchesKey(int_1, int_2))
+                return ClientHelper.executeRecipeKeyBind(getCurrentStack().copy());
+            else if (ClientHelper.USAGE.matchesKey(int_1, int_2))
+                return ClientHelper.executeUsageKeyBind(getCurrentStack());
         return false;
     }