Fixed Interface Crash.
This commit is contained in:
@@ -79,7 +79,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack itemstack)
|
public boolean isItemValid(ItemStack itemstack)
|
||||||
{
|
{
|
||||||
return itemstack != null && itemstack.getItem() instanceof ItemEncodedPattern;
|
return itemstack != null && itemstack.getItem() instanceof ItemEncodedPattern;
|
||||||
}
|
}
|
||||||
@@ -98,8 +98,7 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
|
|||||||
InventoryAdaptor playerHand = new AdaptorPlayerHand( player );
|
InventoryAdaptor playerHand = new AdaptorPlayerHand( player );
|
||||||
|
|
||||||
WrapperInvSlot slotInv = new PatternInvSlot( inv.server );
|
WrapperInvSlot slotInv = new PatternInvSlot( inv.server );
|
||||||
slotInv.setSlot( slot );
|
InventoryAdaptor interfaceSlot = new AdaptorIInventory( slotInv.getWrapper( slot ) );
|
||||||
InventoryAdaptor interfaceSlot = new AdaptorIInventory( slotInv );
|
|
||||||
|
|
||||||
switch (action)
|
switch (action)
|
||||||
{
|
{
|
||||||
@@ -111,7 +110,8 @@ public class ContainerInterfaceTerminal extends AEBaseContainer
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
slotInv.setInventorySlotContents( 0, playerHand.addItems( slotInv.getStackInSlot( 0 ) ) );
|
IInventory mySlot = slotInv.getWrapper( slot );
|
||||||
|
mySlot.setInventorySlotContents( 0, playerHand.addItems( mySlot.getStackInSlot( 0 ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -298,7 +298,11 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
|
|||||||
AppEngInternalInventory patterns = new AppEngInternalInventory( this, 9 );
|
AppEngInternalInventory patterns = new AppEngInternalInventory( this, 9 );
|
||||||
|
|
||||||
WrapperInvSlot slotInv = new WrapperInvSlot( storage );
|
WrapperInvSlot slotInv = new WrapperInvSlot( storage );
|
||||||
InventoryAdaptor adaptor = new AdaptorIInventory( slotInv );
|
|
||||||
|
private InventoryAdaptor getAdaptor(int slot)
|
||||||
|
{
|
||||||
|
return new AdaptorIInventory( slotInv.getWrapper( slot ) );
|
||||||
|
}
|
||||||
|
|
||||||
IMEInventory<IAEItemStack> destination;
|
IMEInventory<IAEItemStack> destination;
|
||||||
private boolean isWorking = false;
|
private boolean isWorking = false;
|
||||||
@@ -395,7 +399,7 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
|
|||||||
private boolean usePlan(int x, IAEItemStack itemStack)
|
private boolean usePlan(int x, IAEItemStack itemStack)
|
||||||
{
|
{
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
slotInv.setSlot( x );
|
InventoryAdaptor adaptor = getAdaptor( x );
|
||||||
interfaceRequest = isWorking = true;
|
interfaceRequest = isWorking = true;
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -918,18 +922,18 @@ public class DualityInterface implements IGridTickable, ISegmentedInventory, ISt
|
|||||||
|
|
||||||
public IAEItemStack injectCratedItems(ICraftingLink link, IAEItemStack aquired, Actionable mode)
|
public IAEItemStack injectCratedItems(ICraftingLink link, IAEItemStack aquired, Actionable mode)
|
||||||
{
|
{
|
||||||
int x = craftingTracker.getSlot( link );
|
int slot = craftingTracker.getSlot( link );
|
||||||
|
|
||||||
if ( aquired != null && x >= 0 && x <= requireWork.length )
|
if ( aquired != null && slot >= 0 && slot <= requireWork.length )
|
||||||
{
|
{
|
||||||
slotInv.setSlot( x );
|
InventoryAdaptor adaptor = getAdaptor( slot );
|
||||||
|
|
||||||
if ( mode == Actionable.SIMULATE )
|
if ( mode == Actionable.SIMULATE )
|
||||||
return AEItemStack.create( adaptor.simulateAdd( aquired.getItemStack() ) );
|
return AEItemStack.create( adaptor.simulateAdd( aquired.getItemStack() ) );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IAEItemStack is = AEItemStack.create( adaptor.addItems( aquired.getItemStack() ) );
|
IAEItemStack is = AEItemStack.create( adaptor.addItems( aquired.getItemStack() ) );
|
||||||
updatePlan( x );
|
updatePlan( slot );
|
||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,97 +4,114 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class WrapperInvSlot implements IInventory
|
public class WrapperInvSlot
|
||||||
{
|
{
|
||||||
|
|
||||||
private final IInventory inv;
|
class InternalInterfaceWrapper implements IInventory
|
||||||
private int slot = 0;
|
{
|
||||||
|
|
||||||
|
private final IInventory inv;
|
||||||
|
private final int slot;
|
||||||
|
|
||||||
|
public InternalInterfaceWrapper(IInventory target, int slot) {
|
||||||
|
this.inv = target;
|
||||||
|
this.slot = slot;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSizeInventory()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getStackInSlot(int i)
|
||||||
|
{
|
||||||
|
return inv.getStackInSlot( slot );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack decrStackSize(int i, int num)
|
||||||
|
{
|
||||||
|
return inv.decrStackSize( slot, num );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getStackInSlotOnClosing(int i)
|
||||||
|
{
|
||||||
|
return inv.getStackInSlotOnClosing( slot );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInventorySlotContents(int i, ItemStack itemstack)
|
||||||
|
{
|
||||||
|
inv.setInventorySlotContents( slot, itemstack );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInventoryName()
|
||||||
|
{
|
||||||
|
return inv.getInventoryName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasCustomInventoryName()
|
||||||
|
{
|
||||||
|
return inv.hasCustomInventoryName();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInventoryStackLimit()
|
||||||
|
{
|
||||||
|
return inv.getInventoryStackLimit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void markDirty()
|
||||||
|
{
|
||||||
|
inv.markDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUseableByPlayer(EntityPlayer entityplayer)
|
||||||
|
{
|
||||||
|
return inv.isUseableByPlayer( entityplayer );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openInventory()
|
||||||
|
{
|
||||||
|
inv.openInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeInventory()
|
||||||
|
{
|
||||||
|
inv.closeInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValidForSlot(int i, ItemStack itemstack)
|
||||||
|
{
|
||||||
|
return isItemValid( itemstack ) && inv.isItemValidForSlot( slot, itemstack );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private IInventory inv;
|
||||||
|
|
||||||
public WrapperInvSlot(IInventory inv) {
|
public WrapperInvSlot(IInventory inv) {
|
||||||
this.inv = inv;
|
this.inv = inv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSlot(int slot)
|
public IInventory getWrapper(int slot)
|
||||||
{
|
{
|
||||||
this.slot = slot;
|
InternalInterfaceWrapper wrapper = new InternalInterfaceWrapper( inv, slot );
|
||||||
|
return wrapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
protected boolean isItemValid(ItemStack itemstack)
|
||||||
public int getSizeInventory()
|
|
||||||
{
|
{
|
||||||
return 1;
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i)
|
|
||||||
{
|
|
||||||
return inv.getStackInSlot( slot );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int num)
|
|
||||||
{
|
|
||||||
return inv.decrStackSize( slot, num );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlotOnClosing(int i)
|
|
||||||
{
|
|
||||||
return inv.getStackInSlotOnClosing( slot );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack itemstack)
|
|
||||||
{
|
|
||||||
inv.setInventorySlotContents( slot, itemstack );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getInventoryName()
|
|
||||||
{
|
|
||||||
return inv.getInventoryName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCustomInventoryName()
|
|
||||||
{
|
|
||||||
return inv.hasCustomInventoryName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit()
|
|
||||||
{
|
|
||||||
return inv.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void markDirty()
|
|
||||||
{
|
|
||||||
inv.markDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUseableByPlayer(EntityPlayer entityplayer)
|
|
||||||
{
|
|
||||||
return inv.isUseableByPlayer( entityplayer );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openInventory()
|
|
||||||
{
|
|
||||||
inv.openInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeInventory()
|
|
||||||
{
|
|
||||||
inv.closeInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int i, ItemStack itemstack)
|
|
||||||
{
|
|
||||||
return inv.isItemValidForSlot( slot, itemstack );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user