package mekanism.common.content.matrix; import java.util.HashSet; import java.util.Set; import mekanism.api.Coord4D; import mekanism.common.multiblock.SynchronizedData; import mekanism.common.tile.TileEntityInductionCell; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class SynchronizedMatrixData extends SynchronizedData<SynchronizedMatrixData> { public ItemStack[] inventory = new ItemStack[2]; public Set<Coord4D> cells = new HashSet<Coord4D>(); public Set<Coord4D> providers = new HashSet<Coord4D>(); public double remainingOutput; public double lastOutput; public double clientEnergy; public double storageCap; public double outputCap; @Override public ItemStack[] getInventory() { return inventory; } public double getEnergy(World world) { double ret = 0; for(Coord4D coord : cells) { TileEntity tile = coord.getTileEntity(world); if(tile instanceof TileEntityInductionCell) { ret += ((TileEntityInductionCell)tile).getEnergy(); } } return ret; } public void setEnergy(World world, double energy) { for(Coord4D coord : cells) { TileEntity tile = coord.getTileEntity(world); if(tile instanceof TileEntityInductionCell) { TileEntityInductionCell cell = (TileEntityInductionCell)tile; cell.setEnergy(0); double toAdd = Math.min(cell.getMaxEnergy(), energy); cell.setEnergy(toAdd); energy -= toAdd; } } } }