diff --git a/CHANGELOG.md b/CHANGELOG.md index 8939ac478..23bc0b024 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Fixed oredict crafting patterns redefining recipes (Darkere) - Fixed Portable Grids not keeping their enchantments when placed (Darkere) - Shortened crafting text for the Russion translation to fix Grid overlays (yaroslav4167) +- Fixed JEI hotkeys not working on fluid filter slots (raoulvdberge) ### 1.6.14 - Fixed server crash (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java index 35e3403ec..4055c37f4 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java @@ -81,6 +81,10 @@ public abstract class ContainerBase extends Container { } } + public List getFluidSlots() { + return fluidSlots; + } + @Override public ItemStack slotClick(int id, int dragType, ClickType clickType, EntityPlayer player) { Slot slot = id >= 0 ? getSlot(id) : null; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java index 9dbde8cb2..9d4f247ce 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/gui/GuiBase.java @@ -119,6 +119,10 @@ public abstract class GuiBase extends GuiContainer { return scrollbar; } + public boolean isMouseOverSlotPublic(Slot slot, int mx, int my) { + return this.isPointInRegion(slot.xPos, slot.yPos, 16, 16, mx, my); + } + @Override public void initGui() { if (initializing) { // Fix double initialize because of runRunnables diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/AdvancedGuiHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/AdvancedGuiHandler.java new file mode 100644 index 000000000..1ebbe00bc --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/AdvancedGuiHandler.java @@ -0,0 +1,52 @@ +package com.raoulvdberge.refinedstorage.integration.jei; + +import com.raoulvdberge.refinedstorage.container.ContainerBase; +import com.raoulvdberge.refinedstorage.container.slot.filter.SlotFilterFluid; +import com.raoulvdberge.refinedstorage.gui.GuiBase; +import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; +import mezz.jei.api.gui.IAdvancedGuiHandler; +import net.minecraftforge.fluids.FluidStack; + +import javax.annotation.Nullable; +import java.awt.*; +import java.util.List; + +public class AdvancedGuiHandler implements IAdvancedGuiHandler { + @Override + public Class getGuiContainerClass() { + return GuiBase.class; + } + + @Nullable + @Override + public List getGuiExtraAreas(GuiBase gui) { + return null; + } + + @Nullable + @Override + public Object getIngredientUnderMouse(GuiBase gui, int mouseX, int mouseY) { + mouseX -= gui.getGuiLeft(); + mouseY -= gui.getGuiTop(); + + if (gui instanceof GuiGrid) { + GuiGrid grid = (GuiGrid) gui; + + if (grid.getScrollbar() != null && !grid.getSearchField().isFocused() && grid.isOverSlotArea(mouseX, mouseY)) { + return grid.getSlotNumber() >= 0 && grid.getSlotNumber() < grid.getView().getStacks().size() ? grid.getView().getStacks().get(grid.getSlotNumber()).getIngredient() : null; + } + } + + if (gui.inventorySlots instanceof ContainerBase) { + for (SlotFilterFluid slot : ((ContainerBase) gui.inventorySlots).getFluidSlots()) { + FluidStack fluidInSlot = slot.getFluidInventory().getFluid(slot.getSlotIndex()); + + if (fluidInSlot != null && gui.isMouseOverSlotPublic(slot, mouseX + gui.getGuiLeft(), mouseY + gui.getGuiTop())) { + return fluidInSlot; + } + } + } + + return null; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/AdvancedGuiHandlerGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/AdvancedGuiHandlerGrid.java deleted file mode 100644 index addc557c5..000000000 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/AdvancedGuiHandlerGrid.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.raoulvdberge.refinedstorage.integration.jei; - -import com.raoulvdberge.refinedstorage.gui.grid.GuiGrid; -import mezz.jei.api.gui.IAdvancedGuiHandler; - -import javax.annotation.Nullable; -import java.awt.*; -import java.util.List; - -public class AdvancedGuiHandlerGrid implements IAdvancedGuiHandler { - @Override - public Class getGuiContainerClass() { - return GuiGrid.class; - } - - @Nullable - @Override - public List getGuiExtraAreas(GuiGrid gui) { - return null; - } - - @Nullable - @Override - public Object getIngredientUnderMouse(GuiGrid gui, int mouseX, int mouseY) { - mouseX -= gui.getGuiLeft(); - mouseY -= gui.getGuiTop(); - - if (gui.getScrollbar() != null && !gui.getSearchField().isFocused() && gui.isOverSlotArea(mouseX, mouseY)) { - return gui.getSlotNumber() >= 0 && gui.getSlotNumber() < gui.getView().getStacks().size() ? gui.getView().getStacks().get(gui.getSlotNumber()).getIngredient() : null; - } - - return null; - } -} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/RSJEIPlugin.java b/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/RSJEIPlugin.java index f124331c5..a6ac4edfd 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/RSJEIPlugin.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/integration/jei/RSJEIPlugin.java @@ -17,7 +17,7 @@ public class RSJEIPlugin implements IModPlugin { registry.getRecipeTransferRegistry().addUniversalRecipeTransferHandler(new RecipeTransferHandlerGrid()); - registry.addAdvancedGuiHandlers(new AdvancedGuiHandlerGrid()); + registry.addAdvancedGuiHandlers(new AdvancedGuiHandler()); registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover()); registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover());