Re-add JEI sync in Grid + JEI ingredient under mouse handler
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
*/
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
*/
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
*/
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user