diff --git a/common/mekanism/client/gui/GuiElectricPump.java b/common/mekanism/client/gui/GuiElectricPump.java index f5ccf6514..6b37b0f43 100644 --- a/common/mekanism/client/gui/GuiElectricPump.java +++ b/common/mekanism/client/gui/GuiElectricPump.java @@ -38,7 +38,6 @@ public class GuiElectricPump extends GuiMekanism fontRenderer.drawString("Inventory", 8, (ySize - 94) + 2, 0x404040); fontRenderer.drawString(MekanismUtils.getEnergyDisplay(tileEntity.getEnergy()), 51, 26, 0x00CD00); fontRenderer.drawString(tileEntity.fluidTank.getFluid() != null ? tileEntity.fluidTank.getFluid().getFluid().getName() + ": " + tileEntity.fluidTank.getFluid().amount : "No fluid.", 51, 35, 0x00CD00); - fontRenderer.drawString(tileEntity.getVoltage()*Mekanism.FROM_UE + "v", 51, 44, 0x00CD00); if(xAxis >= 7 && xAxis <= 23 && yAxis >= 14 && yAxis <= 72) { diff --git a/common/mekanism/common/tileentity/TileEntityBin.java b/common/mekanism/common/tileentity/TileEntityBin.java index 2260dff0f..c07b3c79c 100644 --- a/common/mekanism/common/tileentity/TileEntityBin.java +++ b/common/mekanism/common/tileentity/TileEntityBin.java @@ -19,10 +19,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; import com.google.common.io.ByteArrayDataInput; -public class TileEntityBin extends TileEntityBasicBlock implements ISidedInventory, IActiveState +public class TileEntityBin extends TileEntityBasicBlock implements ISidedInventory, IActiveState, IDeepStorageUnit { public boolean isActive; @@ -459,4 +460,34 @@ public class TileEntityBin extends TileEntityBasicBlock implements ISidedInvento { return true; } + + @Override + public ItemStack getStoredItemType() + { + return MekanismUtils.size(itemType, itemCount); + } + + @Override + public void setStoredItemCount(int amount) + { + if(amount == 0) + { + setStoredItemType(null, 0); + } + + itemCount = amount; + } + + @Override + public void setStoredItemType(ItemStack type, int amount) + { + itemType = type; + itemCount = amount; + } + + @Override + public int getMaxStoredCount() + { + return MAX_STORAGE; + } } \ No newline at end of file diff --git a/common/mekanism/common/tileentity/TileEntityElectricBlock.java b/common/mekanism/common/tileentity/TileEntityElectricBlock.java index 15966ee0c..ba6b50580 100644 --- a/common/mekanism/common/tileentity/TileEntityElectricBlock.java +++ b/common/mekanism/common/tileentity/TileEntityElectricBlock.java @@ -5,7 +5,6 @@ import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergyTile; import ic2.api.tile.IEnergyStorage; -import ic2.api.tile.IWrenchable; import java.util.ArrayList; import java.util.EnumSet; @@ -33,7 +32,7 @@ import cofh.api.energy.IEnergyHandler; import com.google.common.io.ByteArrayDataInput; -public abstract class TileEntityElectricBlock extends TileEntityContainerBlock implements IWrenchable, ITileNetwork, IPowerReceptor, IEnergyTile, IElectrical, IElectricalStorage, IConnector, IStrictEnergyStorage, IEnergyHandler, IEnergySink, IEnergyStorage, IStrictEnergyAcceptor, ICableOutputter +public abstract class TileEntityElectricBlock extends TileEntityContainerBlock implements ITileNetwork, IPowerReceptor, IEnergyTile, IElectrical, IElectricalStorage, IConnector, IStrictEnergyStorage, IEnergyHandler, IEnergySink, IEnergyStorage, IStrictEnergyAcceptor, ICableOutputter { /** How much energy is stored in this block. */ public double electricityStored; @@ -419,27 +418,8 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i { return i; } - - if(!getConsumingSides().contains(direction)) - { - return i; - } - - double givenEnergy = i*Mekanism.FROM_IC2; - double rejects = 0; - double neededEnergy = getMaxEnergy()-getEnergy(); - if(givenEnergy <= neededEnergy) - { - setEnergy(getEnergy() + givenEnergy); - } - else if(givenEnergy > neededEnergy) - { - setEnergy(getEnergy() + neededEnergy); - rejects = givenEnergy-neededEnergy; - } - - return rejects*Mekanism.TO_IC2; + return transferEnergyToAcceptor(direction, i*Mekanism.FROM_IC2)*Mekanism.TO_IC2; } @Override @@ -450,18 +430,9 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i return amount; } - double rejects = 0; - double neededElectricity = getMaxEnergy()-getEnergy(); + double toUse = Math.min(getMaxEnergy()-getEnergy(), amount); + setEnergy(getEnergy() + toUse); - if(amount <= neededElectricity) - { - setEnergy(getEnergy() + amount); - } - else { - setEnergy(getEnergy() + neededElectricity); - rejects = amount-neededElectricity; - } - - return rejects; + return amount-toUse; } } diff --git a/common/mekanism/common/transporter/TransporterManager.java b/common/mekanism/common/transporter/TransporterManager.java index 4f61cb15f..88ab5c822 100644 --- a/common/mekanism/common/transporter/TransporterManager.java +++ b/common/mekanism/common/transporter/TransporterManager.java @@ -17,6 +17,7 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import powercrystals.minefactoryreloaded.api.IDeepStorageUnit; public class TransporterManager { @@ -99,7 +100,7 @@ public class TransporterManager } } - if(inv instanceof TileEntityBin) + if(inv instanceof IDeepStorageUnit) { return; } @@ -300,10 +301,10 @@ public class TransporterManager if(slots != null && slots.length != 0) { - if(sidedInventory instanceof TileEntityBin && ForgeDirection.getOrientation(side).getOpposite().ordinal() == 0) + /*if(sidedInventory instanceof TileEntityBin && ForgeDirection.getOrientation(side).getOpposite().ordinal() == 0) { slots = sidedInventory.getAccessibleSlotsFromSide(1); - } + }*/ for(int get = 0; get <= slots.length - 1; get++) { diff --git a/common/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java b/common/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java new file mode 100644 index 000000000..2e34693bb --- /dev/null +++ b/common/powercrystals/minefactoryreloaded/api/IDeepStorageUnit.java @@ -0,0 +1,26 @@ +package powercrystals.minefactoryreloaded.api; + +import net.minecraft.item.ItemStack; + +public interface IDeepStorageUnit +{ + /** + * @return A populated ItemStack with stackSize for the full amount of materials in the DSU. May have a stackSize > getMaxStackSize(). + */ + ItemStack getStoredItemType(); + + /** + * Sets the total amount of the item currently being stored, or zero if it wants to remove all items. + */ + void setStoredItemCount(int amount); + + /** + * Sets the type of the stored item and initializes the number of stored items to amount. Will overwrite any existing stored items. + */ + void setStoredItemType(ItemStack type, int amount); + + /** + * @return The maximum number of items the DSU can hold. + */ + int getMaxStoredCount(); +} \ No newline at end of file