diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 1b5cfc51a..213c08166 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -19,6 +19,7 @@ package appeng.client.gui; +import java.awt.*; import java.io.IOException; import java.text.DecimalFormat; import java.text.ParseException; @@ -31,15 +32,13 @@ import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; -import appeng.tile.inventory.AppEngInternalInventory; import com.google.common.base.Joiner; import com.google.common.base.Stopwatch; import com.google.common.collect.Lists; -import mezz.jei.api.JEIPlugin; import mezz.jei.api.gui.IGhostIngredientHandler; +import net.minecraft.client.gui.Gui; import net.minecraftforge.fml.common.Optional; -import net.minecraftforge.items.IItemHandler; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; @@ -94,6 +93,7 @@ import appeng.fluids.container.slots.IMEFluidSlot; import appeng.helpers.InventoryAction; import yalter.mousetweaks.api.IMTModGuiContainer2; +import static appeng.integration.modules.jei.JEIPlugin.aeGuiHandler; import static appeng.integration.modules.jei.JEIPlugin.runtime; @@ -110,7 +110,6 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain private Stopwatch dbl_clickTimer = Stopwatch.createStarted(); private ItemStack dbl_whichItem = ItemStack.EMPTY; private Slot bl_clicked; - private final AEGuiHandler aeGuiHandler = new AEGuiHandler(); public List getGuiSlots() { @@ -199,14 +198,35 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain this.drawTooltip( (ITooltip) c, mouseX, mouseY ); } } - + /* if ( isPointInRegion( -guiLeft,-guiTop, mc.displayWidth, mc.displayHeight, mouseX,mouseY)){ Object o = runtime.getBookmarkOverlay().getIngredientUnderMouse(); if (o != null) { - aeGuiHandler.getTargets( this,o,true ); + List> hoveredIngredientTargets = aeGuiHandler.getTargets( this, o, false ); + if (hoveredIngredientTargets.size() > 0 ) + { + GlStateManager.disableLighting(); + GlStateManager.disableDepth(); + for( IGhostIngredientHandler.Target target : hoveredIngredientTargets ) + { + Rectangle area = target.getArea(); + Color color; + if( area.contains( mouseX, mouseY ) ) + { + color = new Color( 76, 201, 25, 128 ); + } + else + { + color = new Color( 19, 201, 10, 64 ); + } + Gui.drawRect( area.x, area.y, area.x + area.width, area.y + area.height, color.getRGB() ); + } + GlStateManager.color( 1f, 1f, 1f, 1f ); + aeGuiHandler.getTargets( this, o, true ); + } } } - + */ } protected void drawGuiSlot( GuiCustomSlot slot, int mouseX, int mouseY, float partialTicks ) diff --git a/src/main/java/appeng/client/gui/AEGuiHandler.java b/src/main/java/appeng/client/gui/AEGuiHandler.java index fe571d76b..431211abb 100644 --- a/src/main/java/appeng/client/gui/AEGuiHandler.java +++ b/src/main/java/appeng/client/gui/AEGuiHandler.java @@ -8,13 +8,9 @@ import appeng.container.slot.SlotFake; import appeng.fluids.client.gui.widgets.GuiFluidSlot; import mezz.jei.api.gui.IAdvancedGuiHandler; import mezz.jei.api.gui.IGhostIngredientHandler; -import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.item.ItemStack; -import org.lwjgl.input.Mouse; import java.awt.*; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -40,7 +36,7 @@ public class AEGuiHandler implements IAdvancedGuiHandler, IGhostIngre public Object getIngredientUnderMouse( AEBaseGui guiContainer, int mouseX, int mouseY ) { List visual; - int guiSlotIdx = 0; + int guiSlotIdx; Object result = null; if( guiContainer instanceof GuiCraftConfirm ) { @@ -105,48 +101,27 @@ public class AEGuiHandler implements IAdvancedGuiHandler, IGhostIngre List> phantomTargets = g.getPhantomTargets( ingredient ); targets.addAll( (List>) (Object) phantomTargets ); } - if( doStart ) + if( doStart && GuiScreen.isShiftKeyDown() ) { - if( GuiScreen.isShiftKeyDown() && Mouse.isButtonDown( 0 ) ) + if( gui instanceof GuiUpgradeable || gui instanceof GuiPatternTerm ) { - if( gui instanceof GuiUpgradeable || gui instanceof GuiPatternTerm ) + IJEIGhostIngredients ghostGui = ( (IJEIGhostIngredients) gui ); + for( Target target : targets ) { - IJEIGhostIngredients ghostGui = ( (IJEIGhostIngredients) gui ); - for( Target target : targets ) + if( ghostGui.getFakeSlotTargetMap().get( target ) instanceof SlotFake ) { - if( ghostGui.getFakeSlotTargetMap().get( target ) instanceof SlotFake ) + if( ( (SlotFake) ghostGui.getFakeSlotTargetMap().get( target ) ).getStack().isEmpty() ) { - if( ( (SlotFake) ghostGui.getFakeSlotTargetMap().get( target ) ).getStack().isEmpty() ) - { - Minecraft.getMinecraft().player.inventory.setItemStack( ItemStack.EMPTY ); - target.accept( ingredient ); - try - { - gui.handleMouseInput(); - } - catch( IOException e ) - { - e.printStackTrace(); - } - break; - } + target.accept( ingredient ); + break; } - else if( ghostGui.getFakeSlotTargetMap().get( target ) instanceof GuiFluidSlot ) + } + else if( ghostGui.getFakeSlotTargetMap().get( target ) instanceof GuiFluidSlot ) + { + if( ( (GuiFluidSlot) ghostGui.getFakeSlotTargetMap().get( target ) ).getFluidStack() == null ) { - if( ( (GuiFluidSlot) ghostGui.getFakeSlotTargetMap().get( target ) ).getFluidStack() == null ) - { - Minecraft.getMinecraft().player.inventory.setItemStack( ItemStack.EMPTY ); - target.accept( ingredient ); - try - { - gui.handleMouseInput(); - } - catch( IOException e ) - { - e.printStackTrace(); - } - break; - } + target.accept( ingredient ); + break; } } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java b/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java index 67b65c33d..f371d896a 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java +++ b/src/main/java/appeng/client/gui/implementations/GuiUpgradeable.java @@ -246,7 +246,7 @@ public class GuiUpgradeable extends AEBaseGui implements IJEIGhostIngredients { for( Slot slot : this.inventorySlots.inventorySlots ) { - if( slot instanceof SlotFake && ( !itemStack.isEmpty() || this instanceof GuiCellWorkbench && fluidStack != null && !( (AppEngSlot) slot ).isItemValid( itemStack ) ) ) + if( slot instanceof SlotFake && ( !itemStack.isEmpty() || this instanceof GuiCellWorkbench && fluidStack != null ) ) { slots.add( (IJEITargetSlot) slot ); } diff --git a/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java b/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java index 1ebad5fc2..4c9a73dd5 100644 --- a/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java +++ b/src/main/java/appeng/core/sync/packets/PacketInventoryAction.java @@ -112,10 +112,6 @@ public class PacketInventoryAction extends AppEngPacket public PacketInventoryAction(final InventoryAction action, final IJEITargetSlot slot, final IAEItemStack slotItem ) throws IOException { - if( action != InventoryAction.PLACE_JEI_GHOST_ITEM ) - { - throw new IllegalStateException( "invalid packet, client cannot post inv actions with stacks." ); - } this.action = action; if (slot instanceof SlotFake) diff --git a/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java b/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java index f21b1a443..3c0f97c3c 100644 --- a/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java +++ b/src/main/java/appeng/core/sync/packets/PacketJEIRecipe.java @@ -303,7 +303,7 @@ public class PacketJEIRecipe extends AppEngPacket { for( ItemStack option : this.recipe[slot] ) { - if( is.isItemEqual( option ) ) + if( ItemStack.areItemStacksEqual( is, option ) ) { return is; } diff --git a/src/main/java/appeng/integration/modules/jei/JEIPlugin.java b/src/main/java/appeng/integration/modules/jei/JEIPlugin.java index 2ce53fa69..9a65009d4 100644 --- a/src/main/java/appeng/integration/modules/jei/JEIPlugin.java +++ b/src/main/java/appeng/integration/modules/jei/JEIPlugin.java @@ -54,9 +54,10 @@ import appeng.items.parts.ItemFacade; @mezz.jei.api.JEIPlugin -public class JEIPlugin implements IModPlugin, IBookmarkOverlay +public class JEIPlugin implements IModPlugin { public static IJeiRuntime runtime; + public static AEGuiHandler aeGuiHandler; @Override public void registerItemSubtypes( ISubtypeRegistry subtypeRegistry ) @@ -96,7 +97,7 @@ public class JEIPlugin implements IModPlugin, IBookmarkOverlay .addRecipeTransferHandler( new RecipeTransferHandler<>( ContainerPatternTerm.class ), Constants.UNIVERSAL_RECIPE_TRANSFER_UID ); - AEGuiHandler aeGuiHandler = new AEGuiHandler(); + aeGuiHandler = new AEGuiHandler(); registry.addAdvancedGuiHandlers(aeGuiHandler); registry.addGhostIngredientHandler( aeGuiHandler.getGuiContainerClass(), aeGuiHandler); } @@ -223,11 +224,4 @@ public class JEIPlugin implements IModPlugin, IBookmarkOverlay jeiModule.setJei( new JeiRuntimeAdapter( jeiRuntime ) ); runtime = jeiRuntime; } - - @Nullable - @Override - public Object getIngredientUnderMouse() - { - return runtime.getBookmarkOverlay().getIngredientUnderMouse(); - } }