From da91585d696c6a3be80b5e7400d3cbab97c08819 Mon Sep 17 00:00:00 2001 From: thatsIch Date: Sun, 22 Mar 2015 11:07:25 +0100 Subject: [PATCH] Fixes #822 Automation of IO Port works as inteded again Top and bottom can insert into input slots 0 - 5 on the left Sides can extract from output slots 6 - 11 on the eight --- .../implementations/ContainerIOPort.java | 57 ++-- src/main/java/appeng/tile/AEBaseInvTile.java | 6 +- .../tile/crafting/TileMolecularAssembler.java | 4 +- .../appeng/tile/grindstone/TileGrinder.java | 10 +- .../java/appeng/tile/misc/TileCharger.java | 10 +- .../java/appeng/tile/misc/TileCondenser.java | 8 +- .../java/appeng/tile/misc/TileInscriber.java | 4 +- .../tile/misc/TileVibrationChamber.java | 2 +- .../tile/spatial/TileSpatialIOPort.java | 8 +- .../java/appeng/tile/storage/TileChest.java | 14 +- .../java/appeng/tile/storage/TileIOPort.java | 292 ++++++++++-------- 11 files changed, 228 insertions(+), 187 deletions(-) diff --git a/src/main/java/appeng/container/implementations/ContainerIOPort.java b/src/main/java/appeng/container/implementations/ContainerIOPort.java index d6d7f2db4..78b6f0ee4 100644 --- a/src/main/java/appeng/container/implementations/ContainerIOPort.java +++ b/src/main/java/appeng/container/implementations/ContainerIOPort.java @@ -33,21 +33,47 @@ import appeng.container.slot.SlotRestrictedInput; import appeng.tile.storage.TileIOPort; import appeng.util.Platform; + public class ContainerIOPort extends ContainerUpgradeable { final TileIOPort ioPort; - @GuiSync(2) + @GuiSync( 2 ) public FullnessMode fMode = FullnessMode.EMPTY; - @GuiSync(3) + @GuiSync( 3 ) public OperationMode opMode = OperationMode.EMPTY; - public ContainerIOPort(InventoryPlayer ip, TileIOPort te) { + public ContainerIOPort( InventoryPlayer ip, TileIOPort te ) + { super( ip, te ); this.ioPort = te; } + @Override + protected void setupConfig() + { + int offX = 19; + int offY = 17; + + IInventory cells = this.upgradeable.getInventoryByName( "cells" ); + + for ( int y = 0; y < 3; y++ ) + for ( int x = 0; x < 2; x++ ) + this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.STORAGE_CELLS, cells, x + y * 2, offX + x * 18, offY + y * 18, this.invPlayer ) ); + + offX = 122; + offY = 17; + for ( int y = 0; y < 3; y++ ) + for ( int x = 0; x < 2; x++ ) + this.addSlotToContainer( new SlotOutput( cells, 6 + x + y * 2, offX + x * 18, offY + y * 18, SlotRestrictedInput.PlacableItemType.STORAGE_CELLS.IIcon ) ); + + IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" ); + this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer ) ).setNotDraggable() ); + this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer ) ).setNotDraggable() ); + this.addSlotToContainer( ( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer ) ).setNotDraggable() ); + } + @Override protected int getHeight() { @@ -66,30 +92,6 @@ public class ContainerIOPort extends ContainerUpgradeable return false; } - @Override - protected void setupConfig() - { - int offX = 19; - int offY = 17; - - IInventory cells = this.upgradeable.getInventoryByName( "cells" ); - - for (int y = 0; y < 3; y++) - for (int x = 0; x < 2; x++) - this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.STORAGE_CELLS, cells, x + y * 2, offX + x * 18, offY + y * 18, this.invPlayer ) ); - - offX = 122; - offY = 17; - for (int y = 0; y < 3; y++) - for (int x = 0; x < 2; x++) - this.addSlotToContainer( new SlotOutput( cells, 6 + x + y * 2, offX + x * 18, offY + y * 18, SlotRestrictedInput.PlacableItemType.STORAGE_CELLS.IIcon ) ); - - IInventory upgrades = this.upgradeable.getInventoryByName( "upgrades" ); - this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 0, 187, 8, this.invPlayer )).setNotDraggable() ); - this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 1, 187, 8 + 18, this.invPlayer )).setNotDraggable() ); - this.addSlotToContainer( (new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2, this.invPlayer )).setNotDraggable() ); - } - @Override public void detectAndSendChanges() { @@ -104,5 +106,4 @@ public class ContainerIOPort extends ContainerUpgradeable this.standardDetectAndSendChanges(); } - } diff --git a/src/main/java/appeng/tile/AEBaseInvTile.java b/src/main/java/appeng/tile/AEBaseInvTile.java index 26925d2ed..84d094ecb 100644 --- a/src/main/java/appeng/tile/AEBaseInvTile.java +++ b/src/main/java/appeng/tile/AEBaseInvTile.java @@ -124,13 +124,13 @@ public abstract class AEBaseInvTile extends AEBaseTile implements ISidedInventor } @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) + public boolean canInsertItem(int slotIndex, ItemStack insertingItem, int side) { - return this.isItemValidForSlot( i, itemstack ); + return this.isItemValidForSlot( slotIndex, insertingItem ); } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side) { return true; } diff --git a/src/main/java/appeng/tile/crafting/TileMolecularAssembler.java b/src/main/java/appeng/tile/crafting/TileMolecularAssembler.java index 225b57f57..0d6a822bf 100644 --- a/src/main/java/appeng/tile/crafting/TileMolecularAssembler.java +++ b/src/main/java/appeng/tile/crafting/TileMolecularAssembler.java @@ -285,9 +285,9 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IUpgrade } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { - return i == 9; + return slotIndex == 9; } @Override diff --git a/src/main/java/appeng/tile/grindstone/TileGrinder.java b/src/main/java/appeng/tile/grindstone/TileGrinder.java index 00b470224..bfe2caaea 100644 --- a/src/main/java/appeng/tile/grindstone/TileGrinder.java +++ b/src/main/java/appeng/tile/grindstone/TileGrinder.java @@ -72,18 +72,18 @@ public class TileGrinder extends AEBaseInvTile implements ICrankable } @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) + public boolean canInsertItem(int slotIndex, ItemStack insertingItem, int side ) { - if ( AEApi.instance().registries().grinder().getRecipeForInput( itemstack ) == null ) + if ( AEApi.instance().registries().grinder().getRecipeForInput( insertingItem ) == null ) return false; - return i >= 0 && i <= 2; + return slotIndex >= 0 && slotIndex <= 2; } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { - return i >= 3 && i <= 5; + return slotIndex >= 3 && slotIndex <= 5; } @Override diff --git a/src/main/java/appeng/tile/misc/TileCharger.java b/src/main/java/appeng/tile/misc/TileCharger.java index 2d858f389..54b184cce 100644 --- a/src/main/java/appeng/tile/misc/TileCharger.java +++ b/src/main/java/appeng/tile/misc/TileCharger.java @@ -219,16 +219,16 @@ public class TileCharger extends AENetworkPowerTile implements ICrankable } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { - if ( Platform.isChargeable( itemstack ) ) + if ( Platform.isChargeable( extractedItem ) ) { - IAEItemPowerStorage ips = (IAEItemPowerStorage) itemstack.getItem(); - if ( ips.getAECurrentPower( itemstack ) >= ips.getAEMaxPower( itemstack ) ) + IAEItemPowerStorage ips = (IAEItemPowerStorage) extractedItem.getItem(); + if ( ips.getAECurrentPower( extractedItem ) >= ips.getAEMaxPower( extractedItem ) ) return true; } - return AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAsStack( itemstack ); + return AEApi.instance().materials().materialCertusQuartzCrystalCharged.sameAsStack( extractedItem ); } public void activate(EntityPlayer player) diff --git a/src/main/java/appeng/tile/misc/TileCondenser.java b/src/main/java/appeng/tile/misc/TileCondenser.java index 9fe45278d..bf57095f0 100644 --- a/src/main/java/appeng/tile/misc/TileCondenser.java +++ b/src/main/java/appeng/tile/misc/TileCondenser.java @@ -168,15 +168,15 @@ public class TileCondenser extends AEBaseInvTile implements IFluidHandler, IConf } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { - return i != 0; + return slotIndex != 0; } @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) + public boolean canInsertItem(int slotIndex, ItemStack insertingItem, int side ) { - return i == 0; + return slotIndex == 0; } @Override diff --git a/src/main/java/appeng/tile/misc/TileInscriber.java b/src/main/java/appeng/tile/misc/TileInscriber.java index 4b1b2abea..d699998f3 100644 --- a/src/main/java/appeng/tile/misc/TileInscriber.java +++ b/src/main/java/appeng/tile/misc/TileInscriber.java @@ -224,12 +224,12 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable, } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { if ( this.smash ) return false; - return i == 0 || i == 1 || i == 3; + return slotIndex == 0 || slotIndex == 1 || slotIndex == 3; } @Override diff --git a/src/main/java/appeng/tile/misc/TileVibrationChamber.java b/src/main/java/appeng/tile/misc/TileVibrationChamber.java index b349be44a..ef92119f6 100644 --- a/src/main/java/appeng/tile/misc/TileVibrationChamber.java +++ b/src/main/java/appeng/tile/misc/TileVibrationChamber.java @@ -142,7 +142,7 @@ public class TileVibrationChamber extends AENetworkInvTile implements IGridTicka } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { return false; } diff --git a/src/main/java/appeng/tile/spatial/TileSpatialIOPort.java b/src/main/java/appeng/tile/spatial/TileSpatialIOPort.java index ef8d7cb92..266132d63 100644 --- a/src/main/java/appeng/tile/spatial/TileSpatialIOPort.java +++ b/src/main/java/appeng/tile/spatial/TileSpatialIOPort.java @@ -174,15 +174,15 @@ public class TileSpatialIOPort extends AENetworkInvTile implements Callable } @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) + public boolean canInsertItem(int slotIndex, ItemStack insertingItem, int side ) { - return this.isItemValidForSlot( i, itemstack ); + return this.isItemValidForSlot( slotIndex, insertingItem ); } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { - return i == 1; + return slotIndex == 1; } @Override diff --git a/src/main/java/appeng/tile/storage/TileChest.java b/src/main/java/appeng/tile/storage/TileChest.java index 47e008b63..6c886f60d 100644 --- a/src/main/java/appeng/tile/storage/TileChest.java +++ b/src/main/java/appeng/tile/storage/TileChest.java @@ -548,19 +548,19 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan } @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) + public boolean canExtractItem(int slotIndex, ItemStack extractedItem, int side ) { - return i == 1; + return slotIndex == 1; } @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) + public boolean canInsertItem(int slotIndex, ItemStack insertingItem, int side ) { - if ( i == 1 ) + if ( slotIndex == 1 ) { - if ( AEApi.instance().registries().cell().getCellInventory( itemstack, this, StorageChannel.ITEMS ) != null ) + if ( AEApi.instance().registries().cell().getCellInventory( insertingItem, this, StorageChannel.ITEMS ) != null ) return true; - if ( AEApi.instance().registries().cell().getCellInventory( itemstack, this, StorageChannel.FLUIDS ) != null ) + if ( AEApi.instance().registries().cell().getCellInventory( insertingItem, this, StorageChannel.FLUIDS ) != null ) return true; } else @@ -569,7 +569,7 @@ public class TileChest extends AENetworkPowerTile implements IMEChest, IFluidHan { IMEInventory cell = this.getHandler( StorageChannel.ITEMS ); IAEItemStack returns = cell.injectItems( AEApi.instance().storage().createItemStack( this.inv.getStackInSlot( 0 ) ), Actionable.SIMULATE, this.mySrc ); - return returns == null || returns.getStackSize() != itemstack.stackSize; + return returns == null || returns.getStackSize() != insertingItem.stackSize; } catch (ChestNoHandler ignored) { diff --git a/src/main/java/appeng/tile/storage/TileIOPort.java b/src/main/java/appeng/tile/storage/TileIOPort.java index 711ecedab..827da4b7d 100644 --- a/src/main/java/appeng/tile/storage/TileIOPort.java +++ b/src/main/java/appeng/tile/storage/TileIOPort.java @@ -18,6 +18,7 @@ package appeng.tile.storage; + import java.util.ArrayList; import net.minecraft.inventory.IInventory; @@ -67,51 +68,67 @@ import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.inv.WrapperInventoryRange; + public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IConfigManagerHost, IGridTickable { + private static final int INPUT_SLOT_INDEX_TOP_LEFT = 0; + private static final int INPUT_SLOT_INDEX_TOP_RIGHT = 1; + private static final int INPUT_SLOT_INDEX_CENTER_LEFT = 2; + private static final int INPUT_SLOT_INDEX_CENTER_RIGHT = 3; + private static final int INPUT_SLOT_INDEX_BOTTOM_LEFT = 4; + private static final int INPUT_SLOT_INDEX_BOTTOM_RIGHT = 5; - final ConfigManager cm = new ConfigManager( this ); + private static final int OUTPUT_SLOT_INDEX_TOP_LEFT = 6; + private static final int OUTPUT_SLOT_INDEX_TOP_RIGHT = 7; + private static final int OUTPUT_SLOT_INDEX_CENTER_LEFT = 8; + private static final int OUTPUT_SLOT_INDEX_CENTER_RIGHT = 9; + private static final int OUTPUT_SLOT_INDEX_BOTTOM_LEFT = 10; + private static final int OUTPUT_SLOT_INDEX_BOTTOM_RIGHT = 11; - final int[] input = { 0, 1, 2, 3, 4, 5 }; - final int[] output = { 6, 7, 8, 9, 10, 11 }; + private final ConfigManager manager = new ConfigManager( this ); - final int[] outputSlots = { 6, 7, 8, 9, 10, 11 }; + private final int[] input = { INPUT_SLOT_INDEX_TOP_LEFT, INPUT_SLOT_INDEX_TOP_RIGHT, INPUT_SLOT_INDEX_CENTER_LEFT, INPUT_SLOT_INDEX_CENTER_RIGHT, INPUT_SLOT_INDEX_BOTTOM_LEFT, INPUT_SLOT_INDEX_BOTTOM_RIGHT }; + private final int[] output = { OUTPUT_SLOT_INDEX_TOP_LEFT, OUTPUT_SLOT_INDEX_TOP_RIGHT, OUTPUT_SLOT_INDEX_CENTER_LEFT, OUTPUT_SLOT_INDEX_CENTER_RIGHT, OUTPUT_SLOT_INDEX_BOTTOM_LEFT, OUTPUT_SLOT_INDEX_BOTTOM_RIGHT }; - final AppEngInternalInventory cells = new AppEngInternalInventory( this, 12 ); - final UpgradeInventory upgrades = new UpgradeInventory( AEApi.instance().blocks().blockIOPort.block(), this, 3 ); + private final AppEngInternalInventory cells = new AppEngInternalInventory( this, 12 ); + private final UpgradeInventory upgrades = new UpgradeInventory( AEApi.instance().blocks().blockIOPort.block(), this, 3 ); - final BaseActionSource mySrc = new MachineSource( this ); + private final BaseActionSource mySrc = new MachineSource( this ); - YesNo lastRedstoneState = YesNo.UNDECIDED; + private YesNo lastRedstoneState = YesNo.UNDECIDED; + private ItemStack currentCell; + private IMEInventory cachedFluid; + private IMEInventory cachedItem; - @TileEvent(TileEventType.WORLD_NBT_WRITE) - public void writeToNBT_TileIOPort(NBTTagCompound data) + public TileIOPort() { - this.cm.writeToNBT( data ); + this.gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); + this.manager.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE ); + this.manager.registerSetting( Settings.FULLNESS_MODE, FullnessMode.EMPTY ); + this.manager.registerSetting( Settings.OPERATION_MODE, OperationMode.EMPTY ); + } + + @TileEvent( TileEventType.WORLD_NBT_WRITE ) + public void writeToNBT_TileIOPort( NBTTagCompound data ) + { + this.manager.writeToNBT( data ); this.cells.writeToNBT( data, "cells" ); this.upgrades.writeToNBT( data, "upgrades" ); data.setInteger( "lastRedstoneState", this.lastRedstoneState.ordinal() ); } - @TileEvent(TileEventType.WORLD_NBT_READ) - public void readFromNBT_TileIOPort(NBTTagCompound data) + @TileEvent( TileEventType.WORLD_NBT_READ ) + public void readFromNBT_TileIOPort( NBTTagCompound data ) { - this.cm.readFromNBT( data ); + this.manager.readFromNBT( data ); this.cells.readFromNBT( data, "cells" ); this.upgrades.readFromNBT( data, "upgrades" ); if ( data.hasKey( "lastRedstoneState" ) ) this.lastRedstoneState = YesNo.values()[data.getInteger( "lastRedstoneState" )]; } - public TileIOPort() { - this.gridProxy.setFlags( GridFlags.REQUIRE_CHANNEL ); - this.cm.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE ); - this.cm.registerSetting( Settings.FULLNESS_MODE, FullnessMode.EMPTY ); - this.cm.registerSetting( Settings.OPERATION_MODE, OperationMode.EMPTY ); - } - @Override - public AECableType getCableConnectionType(ForgeDirection dir) + public AECableType getCableConnectionType( ForgeDirection dir ) { return AECableType.SMART; } @@ -122,21 +139,6 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC return new DimensionalCoord( this ); } - @Override - public IInventory getInternalInventory() - { - return this.cells; - } - - @Override - public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added) - { - if ( this.cells == inv ) - { - this.updateTask(); - } - } - private void updateTask() { try @@ -146,7 +148,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC else this.gridProxy.getTick().sleepDevice( this.gridProxy.getNode() ); } - catch (GridAccessException e) + catch ( GridAccessException e ) { // :P } @@ -175,29 +177,20 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC if ( this.getInstalledUpgrades( Upgrades.REDSTONE ) == 0 ) return true; - RedstoneMode rs = (RedstoneMode) this.cm.getSetting( Settings.REDSTONE_CONTROLLED ); + RedstoneMode rs = (RedstoneMode) this.manager.getSetting( Settings.REDSTONE_CONTROLLED ); if ( rs == RedstoneMode.HIGH_SIGNAL ) return this.getRedstoneState(); return !this.getRedstoneState(); } - @Override - public int[] getAccessibleSlotsBySide(ForgeDirection d) - { - if ( d == ForgeDirection.UP || d == ForgeDirection.DOWN ) - return this.input; - - return this.output; - } - @Override public IConfigManager getConfigManager() { - return this.cm; + return this.manager; } @Override - public IInventory getInventoryByName(String name) + public IInventory getInventoryByName( String name ) { if ( name.equals( "upgrades" ) ) return this.upgrades; @@ -209,13 +202,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC } @Override - public int getInstalledUpgrades(Upgrades u) - { - return this.upgrades.getInstalledUpgrades( u ); - } - - @Override - public void updateSetting(IConfigManager manager, Enum settingName, Enum newValue) + public void updateSetting( IConfigManager manager, Enum settingName, Enum newValue ) { this.updateTask(); } @@ -224,7 +211,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC { if ( this.isEnabled() ) { - for (int x = 0; x < 6; x++) + for ( int x = 0; x < 6; x++ ) if ( this.cells.getStackInSlot( x ) != null ) return true; } @@ -233,30 +220,82 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC } @Override - public TickingRequest getTickingRequest(IGridNode node) + public boolean canInsertItem( int slotIndex, ItemStack insertingItem, int side ) + { + for ( int inputSlotIndex : this.input ) + { + if ( inputSlotIndex == slotIndex ) + { + return true; + } + } + + return false; + } + + @Override + public boolean canExtractItem( int slotIndex, ItemStack extractedItem, int side ) + { + for ( int outputSlotIndex : this.output ) + { + if ( outputSlotIndex == slotIndex ) + { + return true; + } + } + + return false; + } + + @Override + public IInventory getInternalInventory() + { + return this.cells; + } + + @Override + public void onChangeInventory( IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added ) + { + if ( this.cells == inv ) + { + this.updateTask(); + } + } + + @Override + public int[] getAccessibleSlotsBySide( ForgeDirection d ) + { + if ( d == ForgeDirection.UP || d == ForgeDirection.DOWN ) + return this.input; + + return this.output; + } + + @Override + public TickingRequest getTickingRequest( IGridNode node ) { return new TickingRequest( TickRates.IOPort.min, TickRates.IOPort.max, this.hasWork(), false ); } @Override - public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall) + public TickRateModulation tickingRequest( IGridNode node, int TicksSinceLastCall ) { if ( !this.gridProxy.isActive() ) return TickRateModulation.IDLE; long ItemsToMove = 256; - switch (this.getInstalledUpgrades( Upgrades.SPEED )) + switch ( this.getInstalledUpgrades( Upgrades.SPEED ) ) { - case 1: - ItemsToMove *= 2; - break; - case 2: - ItemsToMove *= 4; - break; - case 3: - ItemsToMove *= 8; - break; + case 1: + ItemsToMove *= 2; + break; + case 2: + ItemsToMove *= 4; + break; + case 3: + ItemsToMove *= 8; + break; } try @@ -264,7 +303,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC IMEInventory itemNet = this.gridProxy.getStorage().getItemInventory(); IMEInventory fluidNet = this.gridProxy.getStorage().getFluidInventory(); IEnergySource energy = this.gridProxy.getEnergy(); - for (int x = 0; x < 6; x++) + for ( int x = 0; x < 6; x++ ) { ItemStack is = this.cells.getStackInSlot( x ); if ( is != null ) @@ -274,7 +313,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC IMEInventory itemInv = this.getInv( is, StorageChannel.ITEMS ); IMEInventory fluidInv = this.getInv( is, StorageChannel.FLUIDS ); - if ( this.cm.getSetting( Settings.OPERATION_MODE ) == OperationMode.EMPTY ) + if ( this.manager.getSetting( Settings.OPERATION_MODE ) == OperationMode.EMPTY ) { if ( itemInv != null ) ItemsToMove = this.transferContents( energy, itemInv, itemNet, ItemsToMove, StorageChannel.ITEMS ); @@ -298,9 +337,8 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC return TickRateModulation.URGENT; } } - } - catch (GridAccessException e) + catch ( GridAccessException e ) { return TickRateModulation.IDLE; } @@ -309,49 +347,13 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC return TickRateModulation.SLEEP; } - private boolean shouldMove(IMEInventory itemInv, IMEInventory fluidInv) + @Override + public int getInstalledUpgrades( Upgrades u ) { - FullnessMode fm = (FullnessMode) this.cm.getSetting( Settings.FULLNESS_MODE ); - - if ( itemInv != null && fluidInv != null ) - return this.matches( fm, itemInv ) && this.matches( fm, fluidInv ); - else if ( itemInv != null ) - return this.matches( fm, itemInv ); - else if ( fluidInv != null ) - return this.matches( fm, fluidInv ); - - return true; + return this.upgrades.getInstalledUpgrades( u ); } - private boolean matches(FullnessMode fm, IMEInventory src) - { - if ( fm == FullnessMode.HALF ) - return true; - - IItemList myList; - - if ( src instanceof IMEMonitor ) - myList = ((IMEMonitor) src).getStorageList(); - else - myList = src.getAvailableItems( src.getChannel().createList() ); - - if ( fm == FullnessMode.EMPTY ) - return myList.isEmpty(); - - IAEStack test = myList.getFirstItem(); - if ( test != null ) - { - test.setStackSize( 1 ); - return src.injectItems( test, Actionable.SIMULATE, this.mySrc ) != null; - } - return false; - } - - ItemStack currentCell; - IMEInventory cachedFluid; - IMEInventory cachedItem; - - private IMEInventory getInv(ItemStack is, StorageChannel chan) + private IMEInventory getInv( ItemStack is, StorageChannel chan ) { if ( this.currentCell != is ) { @@ -366,11 +368,11 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC return this.cachedFluid; } - private long transferContents(IEnergySource energy, IMEInventory src, IMEInventory destination, long itemsToMove, StorageChannel chan) + private long transferContents( IEnergySource energy, IMEInventory src, IMEInventory destination, long itemsToMove, StorageChannel chan ) { IItemList myList; if ( src instanceof IMEMonitor ) - myList = ((IMEMonitor) src).getStorageList(); + myList = ( (IMEMonitor) src ).getStorageList(); else myList = src.getAvailableItems( src.getChannel().createList() ); @@ -380,7 +382,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC { didStuff = false; - for (IAEStack s : myList) + for ( IAEStack s : myList ) { long totalStackSize = s.getStackSize(); if ( totalStackSize > 0 ) @@ -422,14 +424,28 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC } } } - while (itemsToMove > 0 && didStuff); + while ( itemsToMove > 0 && didStuff ); return itemsToMove; } - private boolean moveSlot(int x) + private boolean shouldMove( IMEInventory itemInv, IMEInventory fluidInv ) { - WrapperInventoryRange wir = new WrapperInventoryRange( this, this.outputSlots, true ); + FullnessMode fm = (FullnessMode) this.manager.getSetting( Settings.FULLNESS_MODE ); + + if ( itemInv != null && fluidInv != null ) + return this.matches( fm, itemInv ) && this.matches( fm, fluidInv ); + else if ( itemInv != null ) + return this.matches( fm, itemInv ); + else if ( fluidInv != null ) + return this.matches( fm, fluidInv ); + + return true; + } + + private boolean moveSlot( int x ) + { + WrapperInventoryRange wir = new WrapperInventoryRange( this, this.output, true ); ItemStack result = InventoryAdaptor.getAdaptor( wir, ForgeDirection.UNKNOWN ).addItems( this.getStackInSlot( x ) ); if ( result == null ) @@ -441,13 +457,37 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC return false; } + private boolean matches( FullnessMode fm, IMEInventory src ) + { + if ( fm == FullnessMode.HALF ) + return true; + + IItemList myList; + + if ( src instanceof IMEMonitor ) + myList = ( (IMEMonitor) src ).getStorageList(); + else + myList = src.getAvailableItems( src.getChannel().createList() ); + + if ( fm == FullnessMode.EMPTY ) + return myList.isEmpty(); + + IAEStack test = myList.getFirstItem(); + if ( test != null ) + { + test.setStackSize( 1 ); + return src.injectItems( test, Actionable.SIMULATE, this.mySrc ) != null; + } + return false; + } + /** * Adds the items in the upgrade slots to the drop list. * - * @param w world - * @param x x pos of tile entity - * @param y y pos of tile entity - * @param z z pos of tile entity + * @param w world + * @param x x pos of tile entity + * @param y y pos of tile entity + * @param z z pos of tile entity * @param drops drops of tile entity */ @Override @@ -455,9 +495,9 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC { super.getDrops( w, x, y, z, drops ); - for (int upgradeIndex = 0; upgradeIndex < this.upgrades.getSizeInventory(); upgradeIndex++) + for ( int upgradeIndex = 0; upgradeIndex < this.upgrades.getSizeInventory(); upgradeIndex++ ) { - ItemStack stackInSlot = this.upgrades.getStackInSlot(upgradeIndex); + ItemStack stackInSlot = this.upgrades.getStackInSlot( upgradeIndex ); if ( stackInSlot != null ) {