Browse Source

Bug fixes

Unknown 6 years ago
parent
commit
344c863c38

+ 3 - 0
CHANGELOG.md

@@ -1,3 +1,6 @@
+## v2.7.3.87
+- Fixed: Credits button not working
+- Fixed: Keybinds (e.g. O, R, U) working even creative search field is focused
 ## v2.7.3.86
 - Fixed [#56](https://github.com/shedaniel/RoughlyEnoughItems/issues/56): Even tho I don't know how I fixed it
 - Added: Credits button in Config Screen

+ 1 - 1
build.gradle

@@ -11,7 +11,7 @@ targetCompatibility = 1.8
 archivesBaseName = "RoughlyEnoughItems"
 version = project.mod_version
 
-def includeDep = true
+def includeDep = false
 
 minecraft {
 }

+ 1 - 1
gradle.properties

@@ -1,4 +1,4 @@
-mod_version=2.7.3+build.86
+mod_version=2.7.3+build.87
 minecraft_version=1.14 Pre-Release 1
 yarn_version=1.14 Pre-Release 1+build.3
 fabric_version=0.2.7+build.122

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

@@ -6,10 +6,12 @@ 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.*;
 import me.shedaniel.rei.client.ConfigManager;
+import me.shedaniel.rei.client.*;
 import me.shedaniel.rei.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks;
 import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.loader.api.FabricLoader;
 import net.fabricmc.loader.api.ModContainer;
@@ -20,6 +22,8 @@ import net.minecraft.client.gui.Element;
 import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
 import net.minecraft.client.gui.ingame.PlayerInventoryScreen;
 import net.minecraft.client.gui.widget.RecipeBookButtonWidget;
+import net.minecraft.client.gui.widget.TextFieldWidget;
+import net.minecraft.item.ItemGroup;
 import net.minecraft.util.ActionResult;
 import net.minecraft.util.Identifier;
 import net.minecraft.util.Pair;
@@ -182,8 +186,12 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
         });
         ClothClientHooks.SCREEN_MOUSE_CLICKED.register((minecraftClient, screen, v, v1, i) -> {
             if (screen instanceof CreativePlayerInventoryScreen)
-                if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().mouseClicked(v, v1, i))
+                if (ScreenHelper.isOverlayVisible() && ScreenHelper.getLastOverlay().mouseClicked(v, v1, i)) {
+                    screen.setFocused(ScreenHelper.getLastOverlay());
+                    if (i == 0)
+                        screen.setDragging(true);
                     return ActionResult.SUCCESS;
+                }
             return ActionResult.PASS;
         });
         ClothClientHooks.SCREEN_MOUSE_SCROLLED.register((minecraftClient, screen, v, v1, v2) -> {
@@ -205,6 +213,11 @@ 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 ContainerScreen)
                 if (ScreenHelper.getLastOverlay().keyPressed(i, i1, i2))
                     return ActionResult.SUCCESS;

+ 5 - 0
src/main/java/me/shedaniel/rei/listeners/CreativePlayerInventoryScreenHooks.java

@@ -0,0 +1,5 @@
+package me.shedaniel.rei.listeners;
+
+public interface CreativePlayerInventoryScreenHooks {
+    int rei_getSelectedTab();
+}

+ 17 - 0
src/main/java/me/shedaniel/rei/mixin/MixinCreativePlayerInventoryScreen.java

@@ -0,0 +1,17 @@
+package me.shedaniel.rei.mixin;
+
+import me.shedaniel.rei.listeners.CreativePlayerInventoryScreenHooks;
+import net.minecraft.client.gui.ingame.CreativePlayerInventoryScreen;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+
+@Mixin(CreativePlayerInventoryScreen.class)
+public class MixinCreativePlayerInventoryScreen implements CreativePlayerInventoryScreenHooks {
+    @Shadow
+    private static int selectedTab;
+    
+    @Override
+    public int rei_getSelectedTab() {
+        return selectedTab;
+    }
+}

+ 3 - 2
src/main/java/me/shedaniel/rei/utils/ClothScreenRegistry.java

@@ -22,7 +22,6 @@ import java.util.Map;
 public class ClothScreenRegistry {
     
     public static void openConfigScreen(Screen parent) {
-        //        ConfigScreenBuilder builder = ConfigScreenBuilder.create(parent, "text.rei.config.title", savedConfig -> {
         ConfigScreenBuilder builder = new ClothConfigScreen.Builder(parent, "text.rei.config.title", savedConfig -> {
             try {
                 RoughlyEnoughItemsCore.getConfigManager().saveConfig();
@@ -41,8 +40,10 @@ public class ClothScreenRegistry {
                     
                     @Override
                     protected void init() {
-                        addButton(new ButtonWidget(6, 6, 60, 20, I18n.translate("text.rei.credits"), widget -> MinecraftClient.getInstance().openScreen(new CreditsScreen(MinecraftClient.getInstance().currentScreen))));
                         super.init();
+                        ButtonWidget w;
+                        buttons.add(0, w = new ButtonWidget(6, 6, 60, 20, I18n.translate("text.rei.credits"), widget -> MinecraftClient.getInstance().openScreen(new CreditsScreen(MinecraftClient.getInstance().currentScreen))));
+                        children.add(0, w);
                     }
                 };
             }

+ 2 - 1
src/main/resources/roughlyenoughitems.mixins.json

@@ -7,7 +7,8 @@
   "client": [
     "MixinContainerScreen",
     "MixinBrewingRecipeRegistry",
-    "MixinRecipeBookGui"
+    "MixinRecipeBookGui",
+    "MixinCreativePlayerInventoryScreen"
   ],
   "injectors": {
     "defaultRequire": 1