Fixed JEI hotkeys not working on fluid filter slots. Fixes #2211

This commit is contained in:
raoulvdberge
2019-07-20 18:14:03 +02:00
parent ba88ae038a
commit ab0f78016a
6 changed files with 62 additions and 35 deletions

View File

@@ -5,6 +5,7 @@
- Fixed oredict crafting patterns redefining recipes (Darkere) - Fixed oredict crafting patterns redefining recipes (Darkere)
- Fixed Portable Grids not keeping their enchantments when placed (Darkere) - Fixed Portable Grids not keeping their enchantments when placed (Darkere)
- Shortened crafting text for the Russion translation to fix Grid overlays (yaroslav4167) - 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 ### 1.6.14
- Fixed server crash (raoulvdberge) - Fixed server crash (raoulvdberge)

View File

@@ -81,6 +81,10 @@ public abstract class ContainerBase extends Container {
} }
} }
public List<SlotFilterFluid> getFluidSlots() {
return fluidSlots;
}
@Override @Override
public ItemStack slotClick(int id, int dragType, ClickType clickType, EntityPlayer player) { public ItemStack slotClick(int id, int dragType, ClickType clickType, EntityPlayer player) {
Slot slot = id >= 0 ? getSlot(id) : null; Slot slot = id >= 0 ? getSlot(id) : null;

View File

@@ -119,6 +119,10 @@ public abstract class GuiBase extends GuiContainer {
return scrollbar; return scrollbar;
} }
public boolean isMouseOverSlotPublic(Slot slot, int mx, int my) {
return this.isPointInRegion(slot.xPos, slot.yPos, 16, 16, mx, my);
}
@Override @Override
public void initGui() { public void initGui() {
if (initializing) { // Fix double initialize because of runRunnables if (initializing) { // Fix double initialize because of runRunnables

View File

@@ -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<GuiBase> {
@Override
public Class<GuiBase> getGuiContainerClass() {
return GuiBase.class;
}
@Nullable
@Override
public List<Rectangle> 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;
}
}

View File

@@ -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<GuiGrid> {
@Override
public Class<GuiGrid> getGuiContainerClass() {
return GuiGrid.class;
}
@Nullable
@Override
public List<Rectangle> 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;
}
}

View File

@@ -17,7 +17,7 @@ public class RSJEIPlugin implements IModPlugin {
registry.getRecipeTransferRegistry().addUniversalRecipeTransferHandler(new RecipeTransferHandlerGrid()); registry.getRecipeTransferRegistry().addUniversalRecipeTransferHandler(new RecipeTransferHandlerGrid());
registry.addAdvancedGuiHandlers(new AdvancedGuiHandlerGrid()); registry.addAdvancedGuiHandlers(new AdvancedGuiHandler());
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover()); registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover());
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover()); registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover());