even more JEI integration
get ingredient from the crafting calculation GUIs
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
package appeng.client.gui;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.client.gui.implementations.GuiCraftAmount;
|
||||
import appeng.client.gui.implementations.GuiCraftConfirm;
|
||||
import appeng.client.gui.implementations.GuiCraftingCPU;
|
||||
import appeng.client.gui.widgets.GuiCustomSlot;
|
||||
import appeng.container.implementations.ContainerCraftAmount;
|
||||
import mezz.jei.api.gui.IAdvancedGuiHandler;
|
||||
import net.minecraft.client.renderer.RenderItem;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class AEGuiHandler implements IAdvancedGuiHandler<AEBaseGui>
|
||||
{
|
||||
|
||||
@Override
|
||||
public Class<AEBaseGui> getGuiContainerClass()
|
||||
{
|
||||
return AEBaseGui.class;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<Rectangle> getGuiExtraAreas( AEBaseGui guiContainer )
|
||||
{
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Object getIngredientUnderMouse( AEBaseGui guiContainer, int mouseX, int mouseY )
|
||||
{
|
||||
List<IAEItemStack> visual = new ArrayList<>();
|
||||
int guiSlotIdx = 0;
|
||||
Object result = null;
|
||||
if( guiContainer instanceof GuiCraftConfirm )
|
||||
{
|
||||
guiSlotIdx = getSlotidx( guiContainer, mouseX, mouseY, ( (GuiCraftConfirm) guiContainer ).getDisplayedRows() );
|
||||
visual = ( (GuiCraftConfirm) guiContainer ).getVisual();
|
||||
if( guiSlotIdx < visual.size() && guiSlotIdx != -1 )
|
||||
{
|
||||
result = visual.get( guiSlotIdx ).getDefinition();
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if( guiContainer instanceof GuiCraftingCPU )
|
||||
{
|
||||
guiSlotIdx = getSlotidx( guiContainer, mouseX, mouseY, ( (GuiCraftingCPU) guiContainer ).getDisplayedRows() );
|
||||
visual = ( (GuiCraftingCPU) guiContainer ).getVisual();
|
||||
if( guiSlotIdx < visual.size() && guiSlotIdx != -1 )
|
||||
{
|
||||
result = visual.get( guiSlotIdx ).getDefinition();
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if( guiContainer instanceof GuiCraftAmount )
|
||||
{
|
||||
if( guiContainer.getSlotUnderMouse() != null )
|
||||
{
|
||||
result = guiContainer.getSlotUnderMouse().getStack();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private int getSlotidx(AEBaseGui guiContainer, int mouseX, int mouseY, int rows)
|
||||
{
|
||||
int guileft = guiContainer.getGuiLeft();
|
||||
int guitop = guiContainer.getGuiTop();
|
||||
int currentScroll = guiContainer.getScrollBar().getCurrentScroll();
|
||||
final int xo = 9;
|
||||
final int yo = 19;
|
||||
|
||||
int guiSlotx = ( mouseX - guileft - xo ) / 67;
|
||||
if( guiSlotx > 2 || mouseX < guileft + xo ) return -1;
|
||||
int guiSloty = ( mouseY - guitop - yo ) / 23;
|
||||
if( guiSloty > ( rows - 1 ) || mouseY < guitop + yo ) return -1;
|
||||
return ( guiSloty * 3 ) + guiSlotx + ( currentScroll * 3 );
|
||||
}
|
||||
}
|
||||
@@ -582,4 +582,14 @@ public class GuiCraftConfirm extends AEBaseGui
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<IAEItemStack> getVisual()
|
||||
{
|
||||
return visual;
|
||||
}
|
||||
|
||||
public int getDisplayedRows()
|
||||
{
|
||||
return this.rows;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -493,4 +493,14 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource
|
||||
{
|
||||
return ViewItems.ALL;
|
||||
}
|
||||
|
||||
public List<IAEItemStack> getVisual()
|
||||
{
|
||||
return visual;
|
||||
}
|
||||
|
||||
public int getDisplayedRows()
|
||||
{
|
||||
return DISPLAYED_ROWS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,12 @@ public class ContainerCraftAmount extends AEBaseContainer
|
||||
this.addSlotToContainer( this.getCraftingItem() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public Slot getSlot( int slotId )
|
||||
{
|
||||
return super.getSlot( 0 );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detectAndSendChanges()
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import appeng.client.gui.AEGuiHandler;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@@ -93,6 +94,9 @@ public class JEIPlugin implements IModPlugin
|
||||
registry.getRecipeTransferRegistry()
|
||||
.addRecipeTransferHandler( new RecipeTransferHandler<>( ContainerPatternTerm.class ),
|
||||
Constants.UNIVERSAL_RECIPE_TRANSFER_UID );
|
||||
|
||||
AEGuiHandler aeGuiHandler = new AEGuiHandler();
|
||||
registry.addAdvancedGuiHandlers(aeGuiHandler);
|
||||
}
|
||||
|
||||
private void registerDescriptions( IDefinitions definitions, IModRegistry registry )
|
||||
|
||||
Reference in New Issue
Block a user