made jei recipe transfer more strict when keeping items on the table
few cleanup
This commit is contained in:
@@ -19,6 +19,7 @@
|
|||||||
package appeng.client.gui;
|
package appeng.client.gui;
|
||||||
|
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
@@ -31,15 +32,13 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import appeng.tile.inventory.AppEngInternalInventory;
|
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import com.google.common.base.Stopwatch;
|
import com.google.common.base.Stopwatch;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import mezz.jei.api.JEIPlugin;
|
|
||||||
import mezz.jei.api.gui.IGhostIngredientHandler;
|
import mezz.jei.api.gui.IGhostIngredientHandler;
|
||||||
|
import net.minecraft.client.gui.Gui;
|
||||||
import net.minecraftforge.fml.common.Optional;
|
import net.minecraftforge.fml.common.Optional;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
import org.lwjgl.input.Mouse;
|
import org.lwjgl.input.Mouse;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
@@ -94,6 +93,7 @@ import appeng.fluids.container.slots.IMEFluidSlot;
|
|||||||
import appeng.helpers.InventoryAction;
|
import appeng.helpers.InventoryAction;
|
||||||
import yalter.mousetweaks.api.IMTModGuiContainer2;
|
import yalter.mousetweaks.api.IMTModGuiContainer2;
|
||||||
|
|
||||||
|
import static appeng.integration.modules.jei.JEIPlugin.aeGuiHandler;
|
||||||
import static appeng.integration.modules.jei.JEIPlugin.runtime;
|
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 Stopwatch dbl_clickTimer = Stopwatch.createStarted();
|
||||||
private ItemStack dbl_whichItem = ItemStack.EMPTY;
|
private ItemStack dbl_whichItem = ItemStack.EMPTY;
|
||||||
private Slot bl_clicked;
|
private Slot bl_clicked;
|
||||||
private final AEGuiHandler aeGuiHandler = new AEGuiHandler();
|
|
||||||
|
|
||||||
public List<GuiCustomSlot> getGuiSlots()
|
public List<GuiCustomSlot> getGuiSlots()
|
||||||
{
|
{
|
||||||
@@ -199,14 +198,35 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain
|
|||||||
this.drawTooltip( (ITooltip) c, mouseX, mouseY );
|
this.drawTooltip( (ITooltip) c, mouseX, mouseY );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if ( isPointInRegion( -guiLeft,-guiTop, mc.displayWidth, mc.displayHeight, mouseX,mouseY)){
|
if ( isPointInRegion( -guiLeft,-guiTop, mc.displayWidth, mc.displayHeight, mouseX,mouseY)){
|
||||||
Object o = runtime.getBookmarkOverlay().getIngredientUnderMouse();
|
Object o = runtime.getBookmarkOverlay().getIngredientUnderMouse();
|
||||||
if (o != null) {
|
if (o != null) {
|
||||||
aeGuiHandler.getTargets( this,o,true );
|
List<IGhostIngredientHandler.Target<Object>> 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 )
|
protected void drawGuiSlot( GuiCustomSlot slot, int mouseX, int mouseY, float partialTicks )
|
||||||
|
|||||||
@@ -8,13 +8,9 @@ import appeng.container.slot.SlotFake;
|
|||||||
import appeng.fluids.client.gui.widgets.GuiFluidSlot;
|
import appeng.fluids.client.gui.widgets.GuiFluidSlot;
|
||||||
import mezz.jei.api.gui.IAdvancedGuiHandler;
|
import mezz.jei.api.gui.IAdvancedGuiHandler;
|
||||||
import mezz.jei.api.gui.IGhostIngredientHandler;
|
import mezz.jei.api.gui.IGhostIngredientHandler;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import org.lwjgl.input.Mouse;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -40,7 +36,7 @@ public class AEGuiHandler implements IAdvancedGuiHandler<AEBaseGui>, IGhostIngre
|
|||||||
public Object getIngredientUnderMouse( AEBaseGui guiContainer, int mouseX, int mouseY )
|
public Object getIngredientUnderMouse( AEBaseGui guiContainer, int mouseX, int mouseY )
|
||||||
{
|
{
|
||||||
List<IAEItemStack> visual;
|
List<IAEItemStack> visual;
|
||||||
int guiSlotIdx = 0;
|
int guiSlotIdx;
|
||||||
Object result = null;
|
Object result = null;
|
||||||
if( guiContainer instanceof GuiCraftConfirm )
|
if( guiContainer instanceof GuiCraftConfirm )
|
||||||
{
|
{
|
||||||
@@ -105,48 +101,27 @@ public class AEGuiHandler implements IAdvancedGuiHandler<AEBaseGui>, IGhostIngre
|
|||||||
List<Target<?>> phantomTargets = g.getPhantomTargets( ingredient );
|
List<Target<?>> phantomTargets = g.getPhantomTargets( ingredient );
|
||||||
targets.addAll( (List<Target<I>>) (Object) phantomTargets );
|
targets.addAll( (List<Target<I>>) (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<I> target : targets )
|
||||||
{
|
{
|
||||||
IJEIGhostIngredients ghostGui = ( (IJEIGhostIngredients) gui );
|
if( ghostGui.getFakeSlotTargetMap().get( target ) instanceof SlotFake )
|
||||||
for( Target<I> target : targets )
|
|
||||||
{
|
{
|
||||||
if( ghostGui.getFakeSlotTargetMap().get( target ) instanceof SlotFake )
|
if( ( (SlotFake) ghostGui.getFakeSlotTargetMap().get( target ) ).getStack().isEmpty() )
|
||||||
{
|
{
|
||||||
if( ( (SlotFake) ghostGui.getFakeSlotTargetMap().get( target ) ).getStack().isEmpty() )
|
target.accept( ingredient );
|
||||||
{
|
break;
|
||||||
Minecraft.getMinecraft().player.inventory.setItemStack( ItemStack.EMPTY );
|
|
||||||
target.accept( ingredient );
|
|
||||||
try
|
|
||||||
{
|
|
||||||
gui.handleMouseInput();
|
|
||||||
}
|
|
||||||
catch( IOException e )
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
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 )
|
target.accept( ingredient );
|
||||||
{
|
break;
|
||||||
Minecraft.getMinecraft().player.inventory.setItemStack( ItemStack.EMPTY );
|
|
||||||
target.accept( ingredient );
|
|
||||||
try
|
|
||||||
{
|
|
||||||
gui.handleMouseInput();
|
|
||||||
}
|
|
||||||
catch( IOException e )
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ public class GuiUpgradeable extends AEBaseGui implements IJEIGhostIngredients
|
|||||||
{
|
{
|
||||||
for( Slot slot : this.inventorySlots.inventorySlots )
|
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 );
|
slots.add( (IJEITargetSlot) slot );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,10 +112,6 @@ public class PacketInventoryAction extends AppEngPacket
|
|||||||
|
|
||||||
public PacketInventoryAction(final InventoryAction action, final IJEITargetSlot slot, final IAEItemStack slotItem ) throws IOException
|
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;
|
this.action = action;
|
||||||
if (slot instanceof SlotFake)
|
if (slot instanceof SlotFake)
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ public class PacketJEIRecipe extends AppEngPacket
|
|||||||
{
|
{
|
||||||
for( ItemStack option : this.recipe[slot] )
|
for( ItemStack option : this.recipe[slot] )
|
||||||
{
|
{
|
||||||
if( is.isItemEqual( option ) )
|
if( ItemStack.areItemStacksEqual( is, option ) )
|
||||||
{
|
{
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,9 +54,10 @@ import appeng.items.parts.ItemFacade;
|
|||||||
|
|
||||||
|
|
||||||
@mezz.jei.api.JEIPlugin
|
@mezz.jei.api.JEIPlugin
|
||||||
public class JEIPlugin implements IModPlugin, IBookmarkOverlay
|
public class JEIPlugin implements IModPlugin
|
||||||
{
|
{
|
||||||
public static IJeiRuntime runtime;
|
public static IJeiRuntime runtime;
|
||||||
|
public static AEGuiHandler aeGuiHandler;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerItemSubtypes( ISubtypeRegistry subtypeRegistry )
|
public void registerItemSubtypes( ISubtypeRegistry subtypeRegistry )
|
||||||
@@ -96,7 +97,7 @@ public class JEIPlugin implements IModPlugin, IBookmarkOverlay
|
|||||||
.addRecipeTransferHandler( new RecipeTransferHandler<>( ContainerPatternTerm.class ),
|
.addRecipeTransferHandler( new RecipeTransferHandler<>( ContainerPatternTerm.class ),
|
||||||
Constants.UNIVERSAL_RECIPE_TRANSFER_UID );
|
Constants.UNIVERSAL_RECIPE_TRANSFER_UID );
|
||||||
|
|
||||||
AEGuiHandler aeGuiHandler = new AEGuiHandler();
|
aeGuiHandler = new AEGuiHandler();
|
||||||
registry.addAdvancedGuiHandlers(aeGuiHandler);
|
registry.addAdvancedGuiHandlers(aeGuiHandler);
|
||||||
registry.addGhostIngredientHandler( aeGuiHandler.getGuiContainerClass(), aeGuiHandler);
|
registry.addGhostIngredientHandler( aeGuiHandler.getGuiContainerClass(), aeGuiHandler);
|
||||||
}
|
}
|
||||||
@@ -223,11 +224,4 @@ public class JEIPlugin implements IModPlugin, IBookmarkOverlay
|
|||||||
jeiModule.setJei( new JeiRuntimeAdapter( jeiRuntime ) );
|
jeiModule.setJei( new JeiRuntimeAdapter( jeiRuntime ) );
|
||||||
runtime = jeiRuntime;
|
runtime = jeiRuntime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public Object getIngredientUnderMouse()
|
|
||||||
{
|
|
||||||
return runtime.getBookmarkOverlay().getIngredientUnderMouse();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user