Re-add JEI sync in Grid + JEI ingredient under mouse handler

This commit is contained in:
raoulvdberge
2019-10-15 18:46:53 +02:00
parent 7859ca41a2
commit f46ac1e7f0
10 changed files with 109 additions and 112 deletions

View File

@@ -1,53 +0,0 @@
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

@@ -0,0 +1,40 @@
package com.raoulvdberge.refinedstorage.integration.jei;
import com.raoulvdberge.refinedstorage.container.BaseContainer;
import com.raoulvdberge.refinedstorage.container.slot.filter.FluidFilterSlot;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import mezz.jei.api.gui.handlers.IGuiContainerHandler;
import net.minecraftforge.fluids.FluidStack;
import javax.annotation.Nullable;
public class GuiContainerHandler implements IGuiContainerHandler<BaseScreen> {
@Nullable
@Override
public Object getIngredientUnderMouse(BaseScreen screen, double mouseX, double mouseY) {
mouseX -= screen.getGuiLeft();
mouseY -= screen.getGuiTop();
if (screen instanceof GridScreen) {
GridScreen grid = (GridScreen) screen;
if (!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 (screen.getContainer() instanceof BaseContainer) {
for (FluidFilterSlot slot : ((BaseContainer) screen.getContainer()).getFluidSlots()) {
FluidStack fluidInSlot = slot.getFluidInventory().getFluid(slot.getSlotIndex());
if (!fluidInSlot.isEmpty() && RenderUtils.inBounds(slot.xPos, slot.yPos, 18, 18, mouseX, mouseY)) {
return fluidInSlot;
}
}
}
return null;
}
}

View File

@@ -1,10 +0,0 @@
package com.raoulvdberge.refinedstorage.integration.jei;
/*
import net.minecraftforge.fml.common.Loader;
public final class IntegrationJEI {
public static boolean isLoaded() {
return Loader.isModLoaded("jei");
}
}
*/

View File

@@ -0,0 +1,10 @@
package com.raoulvdberge.refinedstorage.integration.jei;
import net.minecraftforge.fml.ModList;
public final class JeiIntegration {
public static boolean isLoaded() {
return ModList.get().isLoaded("jei");
}
}

View File

@@ -1,38 +0,0 @@
package com.raoulvdberge.refinedstorage.integration.jei;
/*
import mezz.jei.api.IJeiRuntime;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.IModRegistry;
import mezz.jei.api.JEIPlugin;
@JEIPlugin
public class RSJEIPlugin implements IModPlugin {
public static RSJEIPlugin INSTANCE;
private IJeiRuntime runtime;
@Override
public void register(IModRegistry registry) {
INSTANCE = this;
registry.getRecipeTransferRegistry().addUniversalRecipeTransferHandler(new RecipeTransferHandlerGrid());
registry.addAdvancedGuiHandlers(new AdvancedGuiHandler());
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover());
registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover());
// TODO: https://github.com/mezz/JustEnoughItems/issues/1307
// registry.addGhostIngredientHandler(GuiBase.class, new GhostIngredientHandler());
}
@Override
public void onRuntimeAvailable(IJeiRuntime runtime) {
this.runtime = runtime;
}
public IJeiRuntime getRuntime() {
return runtime;
}
}
*/

View File

@@ -0,0 +1,39 @@
package com.raoulvdberge.refinedstorage.integration.jei;
import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.registration.IGuiHandlerRegistration;
import mezz.jei.api.runtime.IJeiRuntime;
import net.minecraft.util.ResourceLocation;
@JeiPlugin
public class RSJeiPlugin implements IModPlugin {
private static final ResourceLocation ID = new ResourceLocation(RS.ID, "plugin");
public static IJeiRuntime RUNTIME;
// TODO registry.getRecipeTransferRegistry().addUniversalRecipeTransferHandler(new RecipeTransferHandlerGrid());
// TODO registry.addRecipeRegistryPlugin(new RecipeRegistryPluginCover());
// TODO registry.addRecipeRegistryPlugin(new RecipeRegistryPluginHollowCover());
// TODO: https://github.com/mezz/JustEnoughItems/issues/1307
// registry.addGhostIngredientHandler(GuiBase.class, new GhostIngredientHandler());
@Override
public ResourceLocation getPluginUid() {
return ID;
}
@Override
public void registerGuiHandlers(IGuiHandlerRegistration registration) {
registration.addGuiContainerHandler(BaseScreen.class, new GuiContainerHandler());
}
@Override
public void onRuntimeAvailable(IJeiRuntime runtime) {
RUNTIME = runtime;
}
}

View File

@@ -115,7 +115,11 @@ public class GuiCrafterManager extends BaseScreen<CrafterManagerContainer> imple
if (searchField == null) {
searchField = new SearchWidget(font, sx, sy, 88 - 6);
searchField.func_212954_a(value -> container.initSlots(null));
searchField.func_212954_a(value -> {
searchField.updateJei();
container.initSlots(null);
});
searchField.setMode(crafterManager.getSearchBoxMode());
} else {
searchField.x = sx;

View File

@@ -104,7 +104,9 @@ public class GridScreen extends BaseScreen<GridContainer> implements IScreenInfo
if (searchField == null) {
searchField = new SearchWidget(font, sx, sy, 88 - 6);
searchField.func_212954_a(value -> {
this.getView().sort(); // Use getter since this view can be replaced.
searchField.updateJei();
getView().sort(); // Use getter since this view can be replaced.
});
searchField.setMode(grid.getSearchBoxMode());
} else {

View File

@@ -2,6 +2,8 @@ package com.raoulvdberge.refinedstorage.screen.widget;
import com.raoulvdberge.refinedstorage.RSKeyBindings;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.integration.jei.JeiIntegration;
import com.raoulvdberge.refinedstorage.integration.jei.RSJeiPlugin;
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.widget.TextFieldWidget;
@@ -22,12 +24,12 @@ public class SearchWidget extends TextFieldWidget {
this.setEnableBackgroundDrawing(false);
this.setVisible(true);
this.setTextColor(16777215);
}
/* TODO this.listeners.add(() -> {
if (IntegrationJEI.isLoaded() && (mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED || mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED)) {
RSJEIPlugin.INSTANCE.getRuntime().getIngredientFilter().setFilterText(getText());
}
});*/
public void updateJei() {
if (JeiIntegration.isLoaded() && (mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED || mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED)) {
RSJeiPlugin.RUNTIME.getIngredientFilter().setFilterText(getText());
}
}
@Override

View File

@@ -1,6 +1,7 @@
package com.raoulvdberge.refinedstorage.screen.widget.sidebutton;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.integration.jei.JeiIntegration;
import com.raoulvdberge.refinedstorage.screen.grid.GridScreen;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.TextFormatting;
@@ -29,11 +30,11 @@ public class GridSearchBoxModeSideButton extends SideButton {
if (mode == IGrid.SEARCH_BOX_MODE_NORMAL) {
mode = IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED;
} else if (mode == IGrid.SEARCH_BOX_MODE_NORMAL_AUTOSELECTED) {
//TODO if (IntegrationJEI.isLoaded()) {
// mode = IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED;
//} else {
if (JeiIntegration.isLoaded()) {
mode = IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED;
} else {
mode = IGrid.SEARCH_BOX_MODE_NORMAL;
//}
}
} else if (mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED) {
mode = IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED;
} else if (mode == IGrid.SEARCH_BOX_MODE_JEI_SYNCHRONIZED_AUTOSELECTED) {